diff --git a/l1-contracts/slither_output.md b/l1-contracts/slither_output.md index db4b5b391fd..96a3f00c834 100644 --- a/l1-contracts/slither_output.md +++ b/l1-contracts/slither_output.md @@ -12,7 +12,6 @@ Summary - [low-level-calls](#low-level-calls) (1 results) (Informational) - [similar-names](#similar-names) (1 results) (Informational) - [unused-state](#unused-state) (2 results) (Informational) - - [pess-magic-number](#pess-magic-number) (1 results) (Informational) - [constable-states](#constable-states) (1 results) (Optimization) ## pess-unprotected-setter Impact: High @@ -27,9 +26,9 @@ src/core/Rollup.sol#L54-L94 Impact: Medium Confidence: Medium - [ ] ID-1 -[HeaderLib.decode(bytes).header](src/core/libraries/HeaderLib.sol#L133) is a local variable never initialized +[HeaderLib.decode(bytes).header](src/core/libraries/HeaderLib.sol#L139) is a local variable never initialized -src/core/libraries/HeaderLib.sol#L133 +src/core/libraries/HeaderLib.sol#L139 ## unused-return @@ -59,13 +58,38 @@ src/core/libraries/decoders/Decoder.sol#L415-L417 - [ ] ID-5 +Dubious typecast in [HeaderLib.decode(bytes)](src/core/libraries/HeaderLib.sol#L134-L175): + bytes => bytes32 casting occurs in [header.lastArchive = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L142-L144) + bytes => bytes4 casting occurs in [header.lastArchive = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L142-L144) + bytes => bytes32 casting occurs in [header.bodyHash = bytes32(_header)](src/core/libraries/HeaderLib.sol#L147) + bytes => bytes32 casting occurs in [header.stateReference.l1ToL2MessageTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L150-L152) + bytes => bytes4 casting occurs in [header.stateReference.l1ToL2MessageTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L150-L152) + bytes => bytes32 casting occurs in [header.stateReference.partialStateReference.noteHashTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L153-L155) + bytes => bytes4 casting occurs in [header.stateReference.partialStateReference.noteHashTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L153-L155) + bytes => bytes32 casting occurs in [header.stateReference.partialStateReference.nullifierTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L156-L158) + bytes => bytes4 casting occurs in [header.stateReference.partialStateReference.nullifierTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L156-L158) + bytes => bytes32 casting occurs in [header.stateReference.partialStateReference.contractTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L159-L161) + bytes => bytes4 casting occurs in [header.stateReference.partialStateReference.contractTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L159-L161) + bytes => bytes32 casting occurs in [header.stateReference.partialStateReference.publicDataTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L162-L164) + bytes => bytes4 casting occurs in [header.stateReference.partialStateReference.publicDataTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L162-L164) + bytes => bytes32 casting occurs in [header.globalVariables.chainId = uint256(bytes32(_header))](src/core/libraries/HeaderLib.sol#L167) + bytes => bytes32 casting occurs in [header.globalVariables.version = uint256(bytes32(_header))](src/core/libraries/HeaderLib.sol#L168) + bytes => bytes32 casting occurs in [header.globalVariables.blockNumber = uint256(bytes32(_header))](src/core/libraries/HeaderLib.sol#L169) + bytes => bytes32 casting occurs in [header.globalVariables.timestamp = uint256(bytes32(_header))](src/core/libraries/HeaderLib.sol#L170) + bytes => bytes20 casting occurs in [header.globalVariables.coinbase = address(bytes20(_header))](src/core/libraries/HeaderLib.sol#L171) + bytes => bytes32 casting occurs in [header.globalVariables.feeRecipient = bytes32(_header)](src/core/libraries/HeaderLib.sol#L172) + +src/core/libraries/HeaderLib.sol#L134-L175 + + + - [ ] ID-6 Dubious typecast in [Outbox.sendL1Messages(bytes32[])](src/core/messagebridge/Outbox.sol#L38-L46): uint256 => uint32 casting occurs in [version = uint32(REGISTRY.getVersionFor(msg.sender))](src/core/messagebridge/Outbox.sol#L40) src/core/messagebridge/Outbox.sol#L38-L46 - - [ ] ID-6 + - [ ] ID-7 Dubious typecast in [Inbox.sendL2Message(DataStructures.L2Actor,uint32,bytes32,bytes32)](src/core/messagebridge/Inbox.sol#L45-L91): uint256 => uint64 casting occurs in [fee = uint64(msg.value)](src/core/messagebridge/Inbox.sol#L64) uint256 => uint32 casting occurs in [entries.insert(key,fee,uint32(_recipient.version),_deadline,_errIncompatibleEntryArguments)](src/core/messagebridge/Inbox.sol#L76) @@ -73,29 +97,6 @@ Dubious typecast in [Inbox.sendL2Message(DataStructures.L2Actor,uint32,bytes32,b src/core/messagebridge/Inbox.sol#L45-L91 - - [ ] ID-7 -Dubious typecast in [HeaderLib.decode(bytes)](src/core/libraries/HeaderLib.sol#L128-L167): - bytes => bytes32 casting occurs in [header.lastArchive = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L136-L138) - bytes => bytes4 casting occurs in [header.lastArchive = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L136-L138) - bytes => bytes32 casting occurs in [header.bodyHash = bytes32(_header)](src/core/libraries/HeaderLib.sol#L141) - bytes => bytes32 casting occurs in [header.stateReference.l1ToL2MessageTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L144-L146) - bytes => bytes4 casting occurs in [header.stateReference.l1ToL2MessageTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L144-L146) - bytes => bytes32 casting occurs in [header.stateReference.partialStateReference.noteHashTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L147-L149) - bytes => bytes4 casting occurs in [header.stateReference.partialStateReference.noteHashTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L147-L149) - bytes => bytes32 casting occurs in [header.stateReference.partialStateReference.nullifierTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L150-L152) - bytes => bytes4 casting occurs in [header.stateReference.partialStateReference.nullifierTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L150-L152) - bytes => bytes32 casting occurs in [header.stateReference.partialStateReference.contractTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L153-L155) - bytes => bytes4 casting occurs in [header.stateReference.partialStateReference.contractTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L153-L155) - bytes => bytes32 casting occurs in [header.stateReference.partialStateReference.publicDataTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L156-L158) - bytes => bytes4 casting occurs in [header.stateReference.partialStateReference.publicDataTree = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L156-L158) - bytes => bytes32 casting occurs in [header.globalVariables.chainId = uint256(bytes32(_header))](src/core/libraries/HeaderLib.sol#L161) - bytes => bytes32 casting occurs in [header.globalVariables.version = uint256(bytes32(_header))](src/core/libraries/HeaderLib.sol#L162) - bytes => bytes32 casting occurs in [header.globalVariables.blockNumber = uint256(bytes32(_header))](src/core/libraries/HeaderLib.sol#L163) - bytes => bytes32 casting occurs in [header.globalVariables.timestamp = uint256(bytes32(_header))](src/core/libraries/HeaderLib.sol#L164) - -src/core/libraries/HeaderLib.sol#L128-L167 - - - [ ] ID-8 Dubious typecast in [MessagesDecoder.read4(bytes,uint256)](src/core/libraries/decoders/MessagesDecoder.sol#L110-L112): bytes => bytes4 casting occurs in [uint256(uint32(bytes4(_data)))](src/core/libraries/decoders/MessagesDecoder.sol#L111) @@ -151,11 +152,11 @@ src/core/messagebridge/Inbox.sol#L45-L91 - [ ] ID-14 -[HeaderLib.validate(HeaderLib.Header,uint256,uint256,bytes32)](src/core/libraries/HeaderLib.sol#L91-L121) uses timestamp for comparisons +[HeaderLib.validate(HeaderLib.Header,uint256,uint256,bytes32)](src/core/libraries/HeaderLib.sol#L97-L127) uses timestamp for comparisons Dangerous comparisons: - - [_header.globalVariables.timestamp > block.timestamp](src/core/libraries/HeaderLib.sol#L105) + - [_header.globalVariables.timestamp > block.timestamp](src/core/libraries/HeaderLib.sol#L111) -src/core/libraries/HeaderLib.sol#L91-L121 +src/core/libraries/HeaderLib.sol#L97-L127 - [ ] ID-15 @@ -361,21 +362,10 @@ src/core/libraries/decoders/Decoder.sol#L103-L104 src/core/libraries/decoders/Decoder.sol#L107-L108 -## pess-magic-number -Impact: Informational -Confidence: High - - [ ] ID-43 -Magic number 376 is used multiple times in: - [_header.length != 376](src/core/libraries/HeaderLib.sol#L129) - [Errors.HeaderLib__InvalidHeaderSize(376,_header.length)](src/core/libraries/HeaderLib.sol#L130) - -src/core/libraries/HeaderLib.sol#L129 - - ## constable-states Impact: Optimization Confidence: High - - [ ] ID-44 + - [ ] ID-43 [Rollup.lastWarpedBlockTs](src/core/Rollup.sol#L37) should be constant src/core/Rollup.sol#L37 diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 08208856c0e..9a90e45a33e 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -82,17 +82,17 @@ library Constants { uint256 internal constant MAX_NOTES_PER_PAGE = 10; uint256 internal constant VIEW_NOTE_ORACLE_RETURN_LENGTH = 212; uint256 internal constant CALL_CONTEXT_LENGTH = 8; - uint256 internal constant GLOBAL_VARIABLES_LENGTH = 4; + uint256 internal constant GLOBAL_VARIABLES_LENGTH = 6; uint256 internal constant PARTIAL_STATE_REFERENCE_LENGTH = 8; uint256 internal constant STATE_REFERENCE_LENGTH = 10; - uint256 internal constant HEADER_LENGTH = 18; + uint256 internal constant HEADER_LENGTH = 20; uint256 internal constant FUNCTION_DATA_LENGTH = 4; uint256 internal constant CONTRACT_DEPLOYMENT_DATA_LENGTH = 6; - uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 205; - uint256 internal constant PRIVATE_CALL_STACK_ITEM_LENGTH = 210; + uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 207; + uint256 internal constant PRIVATE_CALL_STACK_ITEM_LENGTH = 212; uint256 internal constant CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH = 3; uint256 internal constant CONTRACT_STORAGE_READ_LENGTH = 2; - uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 201; + uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 203; uint256 internal constant GET_NOTES_ORACLE_RETURN_LENGTH = 674; uint256 internal constant COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP = 2048; uint256 internal constant NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; diff --git a/l1-contracts/src/core/libraries/HeaderLib.sol b/l1-contracts/src/core/libraries/HeaderLib.sol index 5ea03ee283c..6c76bacbc28 100644 --- a/l1-contracts/src/core/libraries/HeaderLib.sol +++ b/l1-contracts/src/core/libraries/HeaderLib.sol @@ -44,6 +44,8 @@ import {Hash} from "./Hash.sol"; * | 0x0118 | 0x20 | version * | 0x0138 | 0x20 | blockNumber * | 0x0158 | 0x20 | timestamp + * | 0x0178 | 0x14 | coinbase + * | 0x018c | 0x20 | feeRecipient * | | | } * | | | } * | --- | --- | --- @@ -72,6 +74,8 @@ library HeaderLib { uint256 version; uint256 blockNumber; uint256 timestamp; + address coinbase; + bytes32 feeRecipient; } struct Header { @@ -81,6 +85,8 @@ library HeaderLib { GlobalVariables globalVariables; } + uint256 private constant HEADER_LENGTH = 0x1ac; // Header byte length + /** * @notice Validates the header * @param _header - The decoded header @@ -126,8 +132,8 @@ library HeaderLib { * @return The decoded header */ function decode(bytes calldata _header) internal pure returns (Header memory) { - if (_header.length != 376) { - revert Errors.HeaderLib__InvalidHeaderSize(376, _header.length); + if (_header.length != HEADER_LENGTH) { + revert Errors.HeaderLib__InvalidHeaderSize(HEADER_LENGTH, _header.length); } Header memory header; @@ -162,6 +168,8 @@ library HeaderLib { header.globalVariables.version = uint256(bytes32(_header[0x0118:0x0138])); header.globalVariables.blockNumber = uint256(bytes32(_header[0x0138:0x0158])); header.globalVariables.timestamp = uint256(bytes32(_header[0x0158:0x0178])); + header.globalVariables.coinbase = address(bytes20(_header[0x0178:0x018c])); + header.globalVariables.feeRecipient = bytes32(_header[0x018c:HEADER_LENGTH]); return header; } diff --git a/l1-contracts/test/decoders/Base.sol b/l1-contracts/test/decoders/Base.sol index c891194014d..0ce56d424e9 100644 --- a/l1-contracts/test/decoders/Base.sol +++ b/l1-contracts/test/decoders/Base.sol @@ -49,6 +49,8 @@ contract DecoderBase is Test { struct GlobalVariables { uint256 blockNumber; uint256 chainId; + address coinbase; + bytes32 feeRecipient; uint256 timestamp; uint256 version; } diff --git a/l1-contracts/test/decoders/Decoder.t.sol b/l1-contracts/test/decoders/Decoder.t.sol index cde3eee14b3..58ab1a0f7d7 100644 --- a/l1-contracts/test/decoders/Decoder.t.sol +++ b/l1-contracts/test/decoders/Decoder.t.sol @@ -71,6 +71,10 @@ contract DecoderTest is DecoderBase { assertEq(header.globalVariables.chainId, globalVariables.chainId, "Invalid chain Id"); assertEq(header.globalVariables.timestamp, globalVariables.timestamp, "Invalid timestamp"); assertEq(header.globalVariables.version, globalVariables.version, "Invalid version"); + assertEq(header.globalVariables.coinbase, globalVariables.coinbase, "Invalid coinbase"); + assertEq( + header.globalVariables.feeRecipient, globalVariables.feeRecipient, "Invalid feeRecipient" + ); } // StateReference diff --git a/l1-contracts/test/fixtures/empty_block_0.json b/l1-contracts/test/fixtures/empty_block_0.json index bed87d58ed3..3cbf3656ac5 100644 --- a/l1-contracts/test/fixtures/empty_block_0.json +++ b/l1-contracts/test/fixtures/empty_block_0.json @@ -35,7 +35,7 @@ ] }, "block": { - "archive": "0x1a11e8b1d440a44deef8aa8e4eec8f476e780ee6eac2d7d64b09c66b8063ee11", + "archive": "0x14a951a26d6098de2390ac479cb28db93d0482161477de772c2fd031c79c9f59", "body": "0x000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000001000000000000000000000000000000000", "calldataHash": "0x5b89af3c0d0bf66ac691697d317108e8f51bb8e3217d56f152b80867ad25d4a7", "decodedHeader": { @@ -44,11 +44,13 @@ "blockNumber": 1, "chainId": 31337, "timestamp": 0, - "version": 1 + "version": 1, + "coinbase": "0xc4359d907ae6de5e4b9d07d925b457ce3305d626", + "feeRecipient": "0x10d7010b30b1064969934e8350d3c076417497edb99dea7e8d20ae05b54fae51" }, "lastArchive": { "nextAvailableLeafIndex": 1, - "root": "0x1a005071a487e4891787073a91504fe6ea55280bc6f65a021fd6f7ca1f10aa02" + "root": "0x1213a7f84b7be98d122a1b7e15013610eacb74b328c20f369588569b1f6272c4" }, "stateReference": { "l1ToL2MessageTree": { @@ -75,8 +77,8 @@ } } }, - "header": "0x1a005071a487e4891787073a91504fe6ea55280bc6f65a021fd6f7ca1f10aa02000000015b89af3c0d0bf66ac691697d317108e8f51bb8e3217d56f152b80867ad25d4a71864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000001016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000001000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000001801864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f80000000041ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e0000000600000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", + "header": "0x1213a7f84b7be98d122a1b7e15013610eacb74b328c20f369588569b1f6272c4000000015b89af3c0d0bf66ac691697d317108e8f51bb8e3217d56f152b80867ad25d4a71864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000001016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000001000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000001801864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f80000000041ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e0000000600000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000c4359d907ae6de5e4b9d07d925b457ce3305d62610d7010b30b1064969934e8350d3c076417497edb99dea7e8d20ae05b54fae51", "l1ToL2MessagesHash": "0x076a27c79e5ace2a3d47f9dd2e83e4ff6ea8872b3c2218f66c92b89b55f36560", - "publicInputsHash": "0x1476d6b0483d0d5fc4c9d3b04f50105d97a06bb01054ec7acccac3ff6c85f960" + "publicInputsHash": "0x2b47f887f6364fbfa291b88a26a6daba24095ce7f5b65e03a50b014b05bba4fb" } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/empty_block_1.json b/l1-contracts/test/fixtures/empty_block_1.json index 2d4639fc25f..981f2b53a7a 100644 --- a/l1-contracts/test/fixtures/empty_block_1.json +++ b/l1-contracts/test/fixtures/empty_block_1.json @@ -35,7 +35,7 @@ ] }, "block": { - "archive": "0x2068f1adad2617364389ebe8a1eb54b969af5f5145be43080dce735a0edb0e3e", + "archive": "0x26e8b2fd7165996139b4741d25ad12bfce06a00fa62979ef4d147268d3a9c1e5", "body": "0x000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000001000000000000000000000000000000000", "calldataHash": "0x5b89af3c0d0bf66ac691697d317108e8f51bb8e3217d56f152b80867ad25d4a7", "decodedHeader": { @@ -43,12 +43,14 @@ "globalVariables": { "blockNumber": 2, "chainId": 31337, - "timestamp": 1706272901, - "version": 1 + "timestamp": 1707224997, + "version": 1, + "coinbase": "0xc4359d907ae6de5e4b9d07d925b457ce3305d626", + "feeRecipient": "0x10d7010b30b1064969934e8350d3c076417497edb99dea7e8d20ae05b54fae51" }, "lastArchive": { "nextAvailableLeafIndex": 2, - "root": "0x1a11e8b1d440a44deef8aa8e4eec8f476e780ee6eac2d7d64b09c66b8063ee11" + "root": "0x14a951a26d6098de2390ac479cb28db93d0482161477de772c2fd031c79c9f59" }, "stateReference": { "l1ToL2MessageTree": { @@ -75,8 +77,8 @@ } } }, - "header": "0x1a11e8b1d440a44deef8aa8e4eec8f476e780ee6eac2d7d64b09c66b8063ee11000000025b89af3c0d0bf66ac691697d317108e8f51bb8e3217d56f152b80867ad25d4a71864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000002016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000002000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000002801864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f80000000081ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e0000000a00000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000065b3a885", + "header": "0x14a951a26d6098de2390ac479cb28db93d0482161477de772c2fd031c79c9f59000000025b89af3c0d0bf66ac691697d317108e8f51bb8e3217d56f152b80867ad25d4a71864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000002016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000002000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000002801864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f80000000081ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e0000000a00000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000065c22fa5c4359d907ae6de5e4b9d07d925b457ce3305d62610d7010b30b1064969934e8350d3c076417497edb99dea7e8d20ae05b54fae51", "l1ToL2MessagesHash": "0x076a27c79e5ace2a3d47f9dd2e83e4ff6ea8872b3c2218f66c92b89b55f36560", - "publicInputsHash": "0x2c3372274a0c11108d634c3f133ae26232b662ca28c127f1710d92645d206b72" + "publicInputsHash": "0x14313fd49d05dcd2782452aed9a79bfcacaf4230df39100c9b1ff85417249e83" } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_0.json b/l1-contracts/test/fixtures/mixed_block_0.json index 11e14b9d7a4..c08897ddadf 100644 --- a/l1-contracts/test/fixtures/mixed_block_0.json +++ b/l1-contracts/test/fixtures/mixed_block_0.json @@ -52,20 +52,22 @@ ] }, "block": { - "archive": "0x1f1de772c009f5b1660876343eb57b7a676a84c695b0c526de2f238c41810907", - "body": "0x000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000014100000000000000000000000000000000000000000000000000000000000001420000000000000000000000000000000000000000000000000000000000000143000000000000000000000000000000000000000000000000000000000000014400000000000000000000000000000000000000000000000000000000000001450000000000000000000000000000000000000000000000000000000000000146000000000000000000000000000000000000000000000000000000000000014700000000000000000000000000000000000000000000000000000000000001480000000000000000000000000000000000000000000000000000000000000149000000000000000000000000000000000000000000000000000000000000014a000000000000000000000000000000000000000000000000000000000000014b000000000000000000000000000000000000000000000000000000000000014c000000000000000000000000000000000000000000000000000000000000014d000000000000000000000000000000000000000000000000000000000000014e000000000000000000000000000000000000000000000000000000000000014f0000000000000000000000000000000000000000000000000000000000000150000000000000000000000000000000000000000000000000000000000000015100000000000000000000000000000000000000000000000000000000000001520000000000000000000000000000000000000000000000000000000000000153000000000000000000000000000000000000000000000000000000000000015400000000000000000000000000000000000000000000000000000000000001550000000000000000000000000000000000000000000000000000000000000156000000000000000000000000000000000000000000000000000000000000015700000000000000000000000000000000000000000000000000000000000001580000000000000000000000000000000000000000000000000000000000000159000000000000000000000000000000000000000000000000000000000000015a000000000000000000000000000000000000000000000000000000000000015b000000000000000000000000000000000000000000000000000000000000015c000000000000000000000000000000000000000000000000000000000000015d000000000000000000000000000000000000000000000000000000000000015e000000000000000000000000000000000000000000000000000000000000015f0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000016100000000000000000000000000000000000000000000000000000000000001620000000000000000000000000000000000000000000000000000000000000163000000000000000000000000000000000000000000000000000000000000016400000000000000000000000000000000000000000000000000000000000001650000000000000000000000000000000000000000000000000000000000000166000000000000000000000000000000000000000000000000000000000000016700000000000000000000000000000000000000000000000000000000000001680000000000000000000000000000000000000000000000000000000000000169000000000000000000000000000000000000000000000000000000000000016a000000000000000000000000000000000000000000000000000000000000016b000000000000000000000000000000000000000000000000000000000000016c000000000000000000000000000000000000000000000000000000000000016d000000000000000000000000000000000000000000000000000000000000016e000000000000000000000000000000000000000000000000000000000000016f0000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000017100000000000000000000000000000000000000000000000000000000000001720000000000000000000000000000000000000000000000000000000000000173000000000000000000000000000000000000000000000000000000000000017400000000000000000000000000000000000000000000000000000000000001750000000000000000000000000000000000000000000000000000000000000176000000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000001780000000000000000000000000000000000000000000000000000000000000179000000000000000000000000000000000000000000000000000000000000017a000000000000000000000000000000000000000000000000000000000000017b000000000000000000000000000000000000000000000000000000000000017c000000000000000000000000000000000000000000000000000000000000017d000000000000000000000000000000000000000000000000000000000000017e000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000018100000000000000000000000000000000000000000000000000000000000001820000000000000000000000000000000000000000000000000000000000000183000000000000000000000000000000000000000000000000000000000000018400000000000000000000000000000000000000000000000000000000000001850000000000000000000000000000000000000000000000000000000000000186000000000000000000000000000000000000000000000000000000000000018700000000000000000000000000000000000000000000000000000000000001880000000000000000000000000000000000000000000000000000000000000189000000000000000000000000000000000000000000000000000000000000018a000000000000000000000000000000000000000000000000000000000000018b000000000000000000000000000000000000000000000000000000000000018c000000000000000000000000000000000000000000000000000000000000018d000000000000000000000000000000000000000000000000000000000000018e000000000000000000000000000000000000000000000000000000000000018f0000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000019100000000000000000000000000000000000000000000000000000000000001920000000000000000000000000000000000000000000000000000000000000193000000000000000000000000000000000000000000000000000000000000019400000000000000000000000000000000000000000000000000000000000001950000000000000000000000000000000000000000000000000000000000000196000000000000000000000000000000000000000000000000000000000000019700000000000000000000000000000000000000000000000000000000000001980000000000000000000000000000000000000000000000000000000000000199000000000000000000000000000000000000000000000000000000000000019a000000000000000000000000000000000000000000000000000000000000019b000000000000000000000000000000000000000000000000000000000000019c000000000000000000000000000000000000000000000000000000000000019d000000000000000000000000000000000000000000000000000000000000019e000000000000000000000000000000000000000000000000000000000000019f00000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001a100000000000000000000000000000000000000000000000000000000000001a200000000000000000000000000000000000000000000000000000000000001a300000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000000001a500000000000000000000000000000000000000000000000000000000000001a600000000000000000000000000000000000000000000000000000000000001a700000000000000000000000000000000000000000000000000000000000001a800000000000000000000000000000000000000000000000000000000000001a900000000000000000000000000000000000000000000000000000000000001aa00000000000000000000000000000000000000000000000000000000000001ab00000000000000000000000000000000000000000000000000000000000001ac00000000000000000000000000000000000000000000000000000000000001ad00000000000000000000000000000000000000000000000000000000000001ae00000000000000000000000000000000000000000000000000000000000001af00000000000000000000000000000000000000000000000000000000000001b000000000000000000000000000000000000000000000000000000000000001b100000000000000000000000000000000000000000000000000000000000001b200000000000000000000000000000000000000000000000000000000000001b300000000000000000000000000000000000000000000000000000000000001b400000000000000000000000000000000000000000000000000000000000001b500000000000000000000000000000000000000000000000000000000000001b600000000000000000000000000000000000000000000000000000000000001b700000000000000000000000000000000000000000000000000000000000001b800000000000000000000000000000000000000000000000000000000000001b900000000000000000000000000000000000000000000000000000000000001ba00000000000000000000000000000000000000000000000000000000000001bb00000000000000000000000000000000000000000000000000000000000001bc00000000000000000000000000000000000000000000000000000000000001bd00000000000000000000000000000000000000000000000000000000000001be00000000000000000000000000000000000000000000000000000000000001bf00000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c300000000000000000000000000000000000000000000000000000000000001c400000000000000000000000000000000000000000000000000000000000001c500000000000000000000000000000000000000000000000000000000000001c600000000000000000000000000000000000000000000000000000000000001c700000000000000000000000000000000000000000000000000000000000001c800000000000000000000000000000000000000000000000000000000000001c900000000000000000000000000000000000000000000000000000000000001ca00000000000000000000000000000000000000000000000000000000000001cb00000000000000000000000000000000000000000000000000000000000001cc00000000000000000000000000000000000000000000000000000000000001cd00000000000000000000000000000000000000000000000000000000000001ce00000000000000000000000000000000000000000000000000000000000001cf00000000000000000000000000000000000000000000000000000000000001d000000000000000000000000000000000000000000000000000000000000001d100000000000000000000000000000000000000000000000000000000000001d200000000000000000000000000000000000000000000000000000000000001d300000000000000000000000000000000000000000000000000000000000001d400000000000000000000000000000000000000000000000000000000000001d500000000000000000000000000000000000000000000000000000000000001d600000000000000000000000000000000000000000000000000000000000001d700000000000000000000000000000000000000000000000000000000000001d800000000000000000000000000000000000000000000000000000000000001d900000000000000000000000000000000000000000000000000000000000001da00000000000000000000000000000000000000000000000000000000000001db00000000000000000000000000000000000000000000000000000000000001dc00000000000000000000000000000000000000000000000000000000000001dd00000000000000000000000000000000000000000000000000000000000001de00000000000000000000000000000000000000000000000000000000000001df00000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000001e100000000000000000000000000000000000000000000000000000000000001e200000000000000000000000000000000000000000000000000000000000001e300000000000000000000000000000000000000000000000000000000000001e400000000000000000000000000000000000000000000000000000000000001e500000000000000000000000000000000000000000000000000000000000001e600000000000000000000000000000000000000000000000000000000000001e700000000000000000000000000000000000000000000000000000000000001e800000000000000000000000000000000000000000000000000000000000001e900000000000000000000000000000000000000000000000000000000000001ea00000000000000000000000000000000000000000000000000000000000001eb00000000000000000000000000000000000000000000000000000000000001ec00000000000000000000000000000000000000000000000000000000000001ed00000000000000000000000000000000000000000000000000000000000001ee00000000000000000000000000000000000000000000000000000000000001ef00000000000000000000000000000000000000000000000000000000000001f000000000000000000000000000000000000000000000000000000000000001f100000000000000000000000000000000000000000000000000000000000001f200000000000000000000000000000000000000000000000000000000000001f300000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f500000000000000000000000000000000000000000000000000000000000001f600000000000000000000000000000000000000000000000000000000000001f700000000000000000000000000000000000000000000000000000000000001f800000000000000000000000000000000000000000000000000000000000001f900000000000000000000000000000000000000000000000000000000000001fa00000000000000000000000000000000000000000000000000000000000001fb00000000000000000000000000000000000000000000000000000000000001fc00000000000000000000000000000000000000000000000000000000000001fd00000000000000000000000000000000000000000000000000000000000001fe00000000000000000000000000000000000000000000000000000000000001ff0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020100000000000000000000000000000000000000000000000000000000000002020000000000000000000000000000000000000000000000000000000000000203000000000000000000000000000000000000000000000000000000000000020400000000000000000000000000000000000000000000000000000000000002050000000000000000000000000000000000000000000000000000000000000206000000000000000000000000000000000000000000000000000000000000020700000000000000000000000000000000000000000000000000000000000002080000000000000000000000000000000000000000000000000000000000000209000000000000000000000000000000000000000000000000000000000000020a000000000000000000000000000000000000000000000000000000000000020b000000000000000000000000000000000000000000000000000000000000020c000000000000000000000000000000000000000000000000000000000000020d000000000000000000000000000000000000000000000000000000000000020e000000000000000000000000000000000000000000000000000000000000020f0000000000000000000000000000000000000000000000000000000000000210000000000000000000000000000000000000000000000000000000000000021100000000000000000000000000000000000000000000000000000000000002120000000000000000000000000000000000000000000000000000000000000213000000000000000000000000000000000000000000000000000000000000021400000000000000000000000000000000000000000000000000000000000002150000000000000000000000000000000000000000000000000000000000000216000000000000000000000000000000000000000000000000000000000000021700000000000000000000000000000000000000000000000000000000000002180000000000000000000000000000000000000000000000000000000000000219000000000000000000000000000000000000000000000000000000000000021a000000000000000000000000000000000000000000000000000000000000021b000000000000000000000000000000000000000000000000000000000000021c000000000000000000000000000000000000000000000000000000000000021d000000000000000000000000000000000000000000000000000000000000021e000000000000000000000000000000000000000000000000000000000000021f0000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000022100000000000000000000000000000000000000000000000000000000000002220000000000000000000000000000000000000000000000000000000000000223000000000000000000000000000000000000000000000000000000000000022400000000000000000000000000000000000000000000000000000000000002250000000000000000000000000000000000000000000000000000000000000226000000000000000000000000000000000000000000000000000000000000022700000000000000000000000000000000000000000000000000000000000002280000000000000000000000000000000000000000000000000000000000000229000000000000000000000000000000000000000000000000000000000000022a000000000000000000000000000000000000000000000000000000000000022b000000000000000000000000000000000000000000000000000000000000022c000000000000000000000000000000000000000000000000000000000000022d000000000000000000000000000000000000000000000000000000000000022e000000000000000000000000000000000000000000000000000000000000022f0000000000000000000000000000000000000000000000000000000000000230000000000000000000000000000000000000000000000000000000000000023100000000000000000000000000000000000000000000000000000000000002320000000000000000000000000000000000000000000000000000000000000233000000000000000000000000000000000000000000000000000000000000023400000000000000000000000000000000000000000000000000000000000002350000000000000000000000000000000000000000000000000000000000000236000000000000000000000000000000000000000000000000000000000000023700000000000000000000000000000000000000000000000000000000000002380000000000000000000000000000000000000000000000000000000000000239000000000000000000000000000000000000000000000000000000000000023a000000000000000000000000000000000000000000000000000000000000023b000000000000000000000000000000000000000000000000000000000000023c000000000000000000000000000000000000000000000000000000000000023d000000000000000000000000000000000000000000000000000000000000023e000000000000000000000000000000000000000000000000000000000000023f000001000000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000024100000000000000000000000000000000000000000000000000000000000002420000000000000000000000000000000000000000000000000000000000000243000000000000000000000000000000000000000000000000000000000000024400000000000000000000000000000000000000000000000000000000000002450000000000000000000000000000000000000000000000000000000000000246000000000000000000000000000000000000000000000000000000000000024700000000000000000000000000000000000000000000000000000000000002480000000000000000000000000000000000000000000000000000000000000249000000000000000000000000000000000000000000000000000000000000024a000000000000000000000000000000000000000000000000000000000000024b000000000000000000000000000000000000000000000000000000000000024c000000000000000000000000000000000000000000000000000000000000024d000000000000000000000000000000000000000000000000000000000000024e000000000000000000000000000000000000000000000000000000000000024f0000000000000000000000000000000000000000000000000000000000000250000000000000000000000000000000000000000000000000000000000000025100000000000000000000000000000000000000000000000000000000000002520000000000000000000000000000000000000000000000000000000000000253000000000000000000000000000000000000000000000000000000000000025400000000000000000000000000000000000000000000000000000000000002550000000000000000000000000000000000000000000000000000000000000256000000000000000000000000000000000000000000000000000000000000025700000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000000259000000000000000000000000000000000000000000000000000000000000025a000000000000000000000000000000000000000000000000000000000000025b000000000000000000000000000000000000000000000000000000000000025c000000000000000000000000000000000000000000000000000000000000025d000000000000000000000000000000000000000000000000000000000000025e000000000000000000000000000000000000000000000000000000000000025f0000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000026100000000000000000000000000000000000000000000000000000000000002620000000000000000000000000000000000000000000000000000000000000263000000000000000000000000000000000000000000000000000000000000026400000000000000000000000000000000000000000000000000000000000002650000000000000000000000000000000000000000000000000000000000000266000000000000000000000000000000000000000000000000000000000000026700000000000000000000000000000000000000000000000000000000000002680000000000000000000000000000000000000000000000000000000000000269000000000000000000000000000000000000000000000000000000000000026a000000000000000000000000000000000000000000000000000000000000026b000000000000000000000000000000000000000000000000000000000000026c000000000000000000000000000000000000000000000000000000000000026d000000000000000000000000000000000000000000000000000000000000026e000000000000000000000000000000000000000000000000000000000000026f0000000000000000000000000000000000000000000000000000000000000270000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000002720000000000000000000000000000000000000000000000000000000000000273000000000000000000000000000000000000000000000000000000000000027400000000000000000000000000000000000000000000000000000000000002750000000000000000000000000000000000000000000000000000000000000276000000000000000000000000000000000000000000000000000000000000027700000000000000000000000000000000000000000000000000000000000002780000000000000000000000000000000000000000000000000000000000000279000000000000000000000000000000000000000000000000000000000000027a000000000000000000000000000000000000000000000000000000000000027b000000000000000000000000000000000000000000000000000000000000027c000000000000000000000000000000000000000000000000000000000000027d000000000000000000000000000000000000000000000000000000000000027e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000028100000000000000000000000000000000000000000000000000000000000002820000000000000000000000000000000000000000000000000000000000000283000000000000000000000000000000000000000000000000000000000000028400000000000000000000000000000000000000000000000000000000000002850000000000000000000000000000000000000000000000000000000000000286000000000000000000000000000000000000000000000000000000000000028700000000000000000000000000000000000000000000000000000000000002880000000000000000000000000000000000000000000000000000000000000289000000000000000000000000000000000000000000000000000000000000028a000000000000000000000000000000000000000000000000000000000000028b000000000000000000000000000000000000000000000000000000000000028c000000000000000000000000000000000000000000000000000000000000028d000000000000000000000000000000000000000000000000000000000000028e000000000000000000000000000000000000000000000000000000000000028f0000000000000000000000000000000000000000000000000000000000000290000000000000000000000000000000000000000000000000000000000000029100000000000000000000000000000000000000000000000000000000000002920000000000000000000000000000000000000000000000000000000000000293000000000000000000000000000000000000000000000000000000000000029400000000000000000000000000000000000000000000000000000000000002950000000000000000000000000000000000000000000000000000000000000296000000000000000000000000000000000000000000000000000000000000029700000000000000000000000000000000000000000000000000000000000002980000000000000000000000000000000000000000000000000000000000000299000000000000000000000000000000000000000000000000000000000000029a000000000000000000000000000000000000000000000000000000000000029b000000000000000000000000000000000000000000000000000000000000029c000000000000000000000000000000000000000000000000000000000000029d000000000000000000000000000000000000000000000000000000000000029e000000000000000000000000000000000000000000000000000000000000029f00000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002a100000000000000000000000000000000000000000000000000000000000002a200000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000002a400000000000000000000000000000000000000000000000000000000000002a500000000000000000000000000000000000000000000000000000000000002a600000000000000000000000000000000000000000000000000000000000002a700000000000000000000000000000000000000000000000000000000000002a800000000000000000000000000000000000000000000000000000000000002a900000000000000000000000000000000000000000000000000000000000002aa00000000000000000000000000000000000000000000000000000000000002ab00000000000000000000000000000000000000000000000000000000000002ac00000000000000000000000000000000000000000000000000000000000002ad00000000000000000000000000000000000000000000000000000000000002ae00000000000000000000000000000000000000000000000000000000000002af00000000000000000000000000000000000000000000000000000000000002b000000000000000000000000000000000000000000000000000000000000002b100000000000000000000000000000000000000000000000000000000000002b200000000000000000000000000000000000000000000000000000000000002b300000000000000000000000000000000000000000000000000000000000002b400000000000000000000000000000000000000000000000000000000000002b500000000000000000000000000000000000000000000000000000000000002b600000000000000000000000000000000000000000000000000000000000002b700000000000000000000000000000000000000000000000000000000000002b800000000000000000000000000000000000000000000000000000000000002b900000000000000000000000000000000000000000000000000000000000002ba00000000000000000000000000000000000000000000000000000000000002bb00000000000000000000000000000000000000000000000000000000000002bc00000000000000000000000000000000000000000000000000000000000002bd00000000000000000000000000000000000000000000000000000000000002be000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002c100000000000000000000000000000000000000000000000000000000000002c200000000000000000000000000000000000000000000000000000000000002c300000000000000000000000000000000000000000000000000000000000002c400000000000000000000000000000000000000000000000000000000000002c500000000000000000000000000000000000000000000000000000000000002c600000000000000000000000000000000000000000000000000000000000002c700000000000000000000000000000000000000000000000000000000000002c800000000000000000000000000000000000000000000000000000000000002c900000000000000000000000000000000000000000000000000000000000002ca00000000000000000000000000000000000000000000000000000000000002cb00000000000000000000000000000000000000000000000000000000000002cc00000000000000000000000000000000000000000000000000000000000002cd00000000000000000000000000000000000000000000000000000000000002ce00000000000000000000000000000000000000000000000000000000000002cf00000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000002d100000000000000000000000000000000000000000000000000000000000002d200000000000000000000000000000000000000000000000000000000000002d300000000000000000000000000000000000000000000000000000000000002d400000000000000000000000000000000000000000000000000000000000002d500000000000000000000000000000000000000000000000000000000000002d600000000000000000000000000000000000000000000000000000000000002d700000000000000000000000000000000000000000000000000000000000002d800000000000000000000000000000000000000000000000000000000000002d900000000000000000000000000000000000000000000000000000000000002da00000000000000000000000000000000000000000000000000000000000002db00000000000000000000000000000000000000000000000000000000000002dc00000000000000000000000000000000000000000000000000000000000002dd00000000000000000000000000000000000000000000000000000000000002de00000000000000000000000000000000000000000000000000000000000002df00000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000002e100000000000000000000000000000000000000000000000000000000000002e200000000000000000000000000000000000000000000000000000000000002e300000000000000000000000000000000000000000000000000000000000002e400000000000000000000000000000000000000000000000000000000000002e500000000000000000000000000000000000000000000000000000000000002e600000000000000000000000000000000000000000000000000000000000002e700000000000000000000000000000000000000000000000000000000000002e800000000000000000000000000000000000000000000000000000000000002e900000000000000000000000000000000000000000000000000000000000002ea00000000000000000000000000000000000000000000000000000000000002eb00000000000000000000000000000000000000000000000000000000000002ec00000000000000000000000000000000000000000000000000000000000002ed00000000000000000000000000000000000000000000000000000000000002ee00000000000000000000000000000000000000000000000000000000000002ef00000000000000000000000000000000000000000000000000000000000002f000000000000000000000000000000000000000000000000000000000000002f100000000000000000000000000000000000000000000000000000000000002f200000000000000000000000000000000000000000000000000000000000002f300000000000000000000000000000000000000000000000000000000000002f400000000000000000000000000000000000000000000000000000000000002f500000000000000000000000000000000000000000000000000000000000002f600000000000000000000000000000000000000000000000000000000000002f700000000000000000000000000000000000000000000000000000000000002f800000000000000000000000000000000000000000000000000000000000002f900000000000000000000000000000000000000000000000000000000000002fa00000000000000000000000000000000000000000000000000000000000002fb00000000000000000000000000000000000000000000000000000000000002fc00000000000000000000000000000000000000000000000000000000000002fd00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030100000000000000000000000000000000000000000000000000000000000003020000000000000000000000000000000000000000000000000000000000000303000000000000000000000000000000000000000000000000000000000000030400000000000000000000000000000000000000000000000000000000000003050000000000000000000000000000000000000000000000000000000000000306000000000000000000000000000000000000000000000000000000000000030700000000000000000000000000000000000000000000000000000000000003080000000000000000000000000000000000000000000000000000000000000309000000000000000000000000000000000000000000000000000000000000030a000000000000000000000000000000000000000000000000000000000000030b000000000000000000000000000000000000000000000000000000000000030c000000000000000000000000000000000000000000000000000000000000030d000000000000000000000000000000000000000000000000000000000000030e000000000000000000000000000000000000000000000000000000000000030f0000000000000000000000000000000000000000000000000000000000000310000000000000000000000000000000000000000000000000000000000000031100000000000000000000000000000000000000000000000000000000000003120000000000000000000000000000000000000000000000000000000000000313000000000000000000000000000000000000000000000000000000000000031400000000000000000000000000000000000000000000000000000000000003150000000000000000000000000000000000000000000000000000000000000316000000000000000000000000000000000000000000000000000000000000031700000000000000000000000000000000000000000000000000000000000003180000000000000000000000000000000000000000000000000000000000000319000000000000000000000000000000000000000000000000000000000000031a000000000000000000000000000000000000000000000000000000000000031b000000000000000000000000000000000000000000000000000000000000031c000000000000000000000000000000000000000000000000000000000000031d000000000000000000000000000000000000000000000000000000000000031e000000000000000000000000000000000000000000000000000000000000031f0000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000032100000000000000000000000000000000000000000000000000000000000003220000000000000000000000000000000000000000000000000000000000000323000000000000000000000000000000000000000000000000000000000000032400000000000000000000000000000000000000000000000000000000000003250000000000000000000000000000000000000000000000000000000000000326000000000000000000000000000000000000000000000000000000000000032700000000000000000000000000000000000000000000000000000000000003280000000000000000000000000000000000000000000000000000000000000329000000000000000000000000000000000000000000000000000000000000032a000000000000000000000000000000000000000000000000000000000000032b000000000000000000000000000000000000000000000000000000000000032c000000000000000000000000000000000000000000000000000000000000032d000000000000000000000000000000000000000000000000000000000000032e000000000000000000000000000000000000000000000000000000000000032f0000000000000000000000000000000000000000000000000000000000000330000000000000000000000000000000000000000000000000000000000000033100000000000000000000000000000000000000000000000000000000000003320000000000000000000000000000000000000000000000000000000000000333000000000000000000000000000000000000000000000000000000000000033400000000000000000000000000000000000000000000000000000000000003350000000000000000000000000000000000000000000000000000000000000336000000000000000000000000000000000000000000000000000000000000033700000000000000000000000000000000000000000000000000000000000003380000000000000000000000000000000000000000000000000000000000000339000000000000000000000000000000000000000000000000000000000000033a000000000000000000000000000000000000000000000000000000000000033b000000000000000000000000000000000000000000000000000000000000033c000000000000000000000000000000000000000000000000000000000000033d000000000000000000000000000000000000000000000000000000000000033e0000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000054a0000000000000000000000000000000000000000000000000000000000000541000000000000000000000000000000000000000000000000000000000000054b0000000000000000000000000000000000000000000000000000000000000542000000000000000000000000000000000000000000000000000000000000054c0000000000000000000000000000000000000000000000000000000000000543000000000000000000000000000000000000000000000000000000000000054d0000000000000000000000000000000000000000000000000000000000000544000000000000000000000000000000000000000000000000000000000000054e0000000000000000000000000000000000000000000000000000000000000545000000000000000000000000000000000000000000000000000000000000054f00000000000000000000000000000000000000000000000000000000000005460000000000000000000000000000000000000000000000000000000000000550000000000000000000000000000000000000000000000000000000000000054700000000000000000000000000000000000000000000000000000000000005510000000000000000000000000000000000000000000000000000000000000548000000000000000000000000000000000000000000000000000000000000055200000000000000000000000000000000000000000000000000000000000005490000000000000000000000000000000000000000000000000000000000000553000000000000000000000000000000000000000000000000000000000000054a0000000000000000000000000000000000000000000000000000000000000554000000000000000000000000000000000000000000000000000000000000054b0000000000000000000000000000000000000000000000000000000000000555000000000000000000000000000000000000000000000000000000000000054c0000000000000000000000000000000000000000000000000000000000000556000000000000000000000000000000000000000000000000000000000000054d0000000000000000000000000000000000000000000000000000000000000557000000000000000000000000000000000000000000000000000000000000054e0000000000000000000000000000000000000000000000000000000000000558000000000000000000000000000000000000000000000000000000000000054f00000000000000000000000000000000000000000000000000000000000005590000000000000000000000000000000000000000000000000000000000000580000000000000000000000000000000000000000000000000000000000000058a0000000000000000000000000000000000000000000000000000000000000581000000000000000000000000000000000000000000000000000000000000058b0000000000000000000000000000000000000000000000000000000000000582000000000000000000000000000000000000000000000000000000000000058c0000000000000000000000000000000000000000000000000000000000000583000000000000000000000000000000000000000000000000000000000000058d0000000000000000000000000000000000000000000000000000000000000584000000000000000000000000000000000000000000000000000000000000058e0000000000000000000000000000000000000000000000000000000000000585000000000000000000000000000000000000000000000000000000000000058f00000000000000000000000000000000000000000000000000000000000005860000000000000000000000000000000000000000000000000000000000000590000000000000000000000000000000000000000000000000000000000000058700000000000000000000000000000000000000000000000000000000000005910000000000000000000000000000000000000000000000000000000000000588000000000000000000000000000000000000000000000000000000000000059200000000000000000000000000000000000000000000000000000000000005890000000000000000000000000000000000000000000000000000000000000593000000000000000000000000000000000000000000000000000000000000058a0000000000000000000000000000000000000000000000000000000000000594000000000000000000000000000000000000000000000000000000000000058b0000000000000000000000000000000000000000000000000000000000000595000000000000000000000000000000000000000000000000000000000000058c0000000000000000000000000000000000000000000000000000000000000596000000000000000000000000000000000000000000000000000000000000058d0000000000000000000000000000000000000000000000000000000000000597000000000000000000000000000000000000000000000000000000000000058e0000000000000000000000000000000000000000000000000000000000000598000000000000000000000000000000000000000000000000000000000000058f000000000000000000000000000000000000000000000000000000000000059900000000000000000000000000000000000000000000000000000000000005c000000000000000000000000000000000000000000000000000000000000005ca00000000000000000000000000000000000000000000000000000000000005c100000000000000000000000000000000000000000000000000000000000005cb00000000000000000000000000000000000000000000000000000000000005c200000000000000000000000000000000000000000000000000000000000005cc00000000000000000000000000000000000000000000000000000000000005c300000000000000000000000000000000000000000000000000000000000005cd00000000000000000000000000000000000000000000000000000000000005c400000000000000000000000000000000000000000000000000000000000005ce00000000000000000000000000000000000000000000000000000000000005c500000000000000000000000000000000000000000000000000000000000005cf00000000000000000000000000000000000000000000000000000000000005c600000000000000000000000000000000000000000000000000000000000005d000000000000000000000000000000000000000000000000000000000000005c700000000000000000000000000000000000000000000000000000000000005d100000000000000000000000000000000000000000000000000000000000005c800000000000000000000000000000000000000000000000000000000000005d200000000000000000000000000000000000000000000000000000000000005c900000000000000000000000000000000000000000000000000000000000005d300000000000000000000000000000000000000000000000000000000000005ca00000000000000000000000000000000000000000000000000000000000005d400000000000000000000000000000000000000000000000000000000000005cb00000000000000000000000000000000000000000000000000000000000005d500000000000000000000000000000000000000000000000000000000000005cc00000000000000000000000000000000000000000000000000000000000005d600000000000000000000000000000000000000000000000000000000000005cd00000000000000000000000000000000000000000000000000000000000005d700000000000000000000000000000000000000000000000000000000000005ce00000000000000000000000000000000000000000000000000000000000005d800000000000000000000000000000000000000000000000000000000000005cf00000000000000000000000000000000000000000000000000000000000005d90000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000060a0000000000000000000000000000000000000000000000000000000000000601000000000000000000000000000000000000000000000000000000000000060b0000000000000000000000000000000000000000000000000000000000000602000000000000000000000000000000000000000000000000000000000000060c0000000000000000000000000000000000000000000000000000000000000603000000000000000000000000000000000000000000000000000000000000060d0000000000000000000000000000000000000000000000000000000000000604000000000000000000000000000000000000000000000000000000000000060e0000000000000000000000000000000000000000000000000000000000000605000000000000000000000000000000000000000000000000000000000000060f00000000000000000000000000000000000000000000000000000000000006060000000000000000000000000000000000000000000000000000000000000610000000000000000000000000000000000000000000000000000000000000060700000000000000000000000000000000000000000000000000000000000006110000000000000000000000000000000000000000000000000000000000000608000000000000000000000000000000000000000000000000000000000000061200000000000000000000000000000000000000000000000000000000000006090000000000000000000000000000000000000000000000000000000000000613000000000000000000000000000000000000000000000000000000000000060a0000000000000000000000000000000000000000000000000000000000000614000000000000000000000000000000000000000000000000000000000000060b0000000000000000000000000000000000000000000000000000000000000615000000000000000000000000000000000000000000000000000000000000060c0000000000000000000000000000000000000000000000000000000000000616000000000000000000000000000000000000000000000000000000000000060d0000000000000000000000000000000000000000000000000000000000000617000000000000000000000000000000000000000000000000000000000000060e0000000000000000000000000000000000000000000000000000000000000618000000000000000000000000000000000000000000000000000000000000060f000000000000000000000000000000000000000000000000000000000000061900000008000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000003410000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000038100000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003c100000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000401000000041c72e330b60e0052863df88b19ebb482d412b0a7bbb2fabb9347be5e59453d10078d263242fac5a2ad544b5005bcea367ebc04e01ff7ca279650bc63d9488ac304ad4d395e21ea570da47bf574569c6526312c5c7ad63a6d248f694e5c81c2b60e12693b411d9eb8f564aa43f4aa14e3e30f8574425a6d6491416332b77d2709000000000000000000000000000000000000000000000000000000000000104041414141414141414141414141414141414141410000000000000000000000000000000000000000000000000000000000001080818181818181818181818181818181818181818100000000000000000000000000000000000000000000000000000000000010c0c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c10000000000000000000000000000000000000000000000000000000000001100010101010101010101010101010101010101010100000010151de48ca3efbae39f180fe00b8f472ec9f25be10b4f283a87c6d7839353703914c2ea9dedf77698d4afe23bc663263eed0bf9aa3a8b17d9b74812f185610f9e1570cc6641699e3ae87fa258d80a6d853f7b8ccb211dc244d017e2ca6530f8a12806c860af67e9cd50000378411b8c4c4db172ceb2daa862b259b689ccbdc1e005f140c7c95624c8006774279a01ec1ea88617999e4fe6997b6576c4e1c7395a22048b96b586596bd740d0402e15f5577f7ceb5496b65aafc6d89d7c3b34924b0c3f2d50d16279970d682cada30bfa6b29bc0bac0ee2389f6a0444853eccaa932b2a60561da46a58569d71044a84c639e7f88429826e5622581536eb906d9cdd25a2c0a76f7da6924e10751c755227d2535f4ad258b984e78f9f452a853c52300e212d8e2069e4254d81af07744bcbb81121a38f0e2dbed69a523d3fbf85b75c287ca6f33aadbac2e4f058e05924c140d7895a6ed167caf804b710d2ae3ba62b1b51297b3ea37637af6bd56cf33425d95cc5c96e9c2ee3077322fbec86a0c7f32c15d2a888c6cc122e99478c92470a1311635142d82ad7ae67410beeef4ae31f0902ba2fb964922a4610bb18901f7b923885c1d034da5769a48203ae6f0206a92855e2c01ddb3d6553386b5580d681b8230fa4062948668f834f23e0636eaff70aaa64519aafdf4b040bd2f9836e76b9dc13cfec8065dcdf2834d786e06260d10000381000000e00000001bc00000090ba31e106be659f28af9e2af50d26e9d288793bd2916d001e72b890141088e28edab510df4a749b7353013aea3159668294ffb417f35ce95cb6fce2f0221d812cc4857d625e1a6de8ef2b35b36213ab4616286de404f3fc6463e0e8b3c8f6f8251f122191b6e9fbb1c2cf167dabda8f39040a8bac6c883f89b0ab3b0c1e42bfe51bc975cc64a95028e12e3973e801f67b00000090cf1a7b1afc016e43b921a58db2db12a3e5898a193f7d50907562b5b85e41cadeecb846519ea542dd1629c46544286079c71deb32cccedd1f1174973b6a67aa3aaf1d2383f3220c9364db3bab5e636a6d08c44b3ed62aff9c6317097a655ca306b03eeeb7a30bc8d67d1fca62afb7519e13d782777f78caaf2a8d5bb2ca25f1bb30c4507bb38b914e1cb6de394c47eaff00000090972270ea28acbcd6a954b5e146cee856dd3ef968cbffea1b2e26fe8aa06971f0e8ed6e16de6c6d16da52a856d163d5d489885cbcc8e5389d1fc374fa7fa2722146b3e3ed216d5458023f295c4760c2ea1ad29613ffd7a06c1c8e789be58df9bffcbc51b33964b639a56bc5dd1a51387812f2a6d70cef7584e1fd429ffeea5282e9e526246a41da20e503971e2aab4ec5000001bc00000090eb7ade43f1e76dbee20da4688d5b051f943bae0e4aa13d6c3df97fc368f76d43550019246b1190e00cb20ad8eed3290d9589d0887c900f7dd563e46a8d1cd032130f47fed6c734a21da566075c469ca9006b482df4c9cc45c3666f721cd8f70701754b25a3f1fb4e350ee5fe39bc3ffa18c8563a2f6f82742f48612ba792506205880c01d57a739598bf190feb8596240000009056db89a8f50db43b830026ae48dd55257eca77acda80258fed70ab6544a1da8dc8a5cbf5cd2a6ce9ca2983cd08679b8acf024ec18107b7bae3477de8aaace0d672c802658736d0654a7fe35b810ed34809f0190f92b4a8a070679832bd2f978d06839aa3c12f7263facc03ded7b515d606ec5141d8fdecb686790d39f0f7f380b056b8d8eec3e12522d779459764092100000090255a139bd500720e3731bb9a6c79d111a39618b2e5f7c530ac9847bf2945c5fd11726efd1664ebd7c5ca43a9f001e6e9048151ec3ae655178efecb510735cda8838001ca728b89c9cff98831485a0ad51b5a9d5ad1566b6ce5872da25282fba1e8fb1ab733ceaa1e4cdd5714b5e0d1ba1a34e60123ff9adef7a9aafa7a70afad2b0150256f6bcb582edcdd802322f455000001bc00000090ad3145489922aa1ce466b9c6c7d72ab3806cbfe1142b29704248fb092ffcae20ce010695fada64864571f02888d1a20a5aa6c85bd719753e5a24b112be2165771eeb9f9734c57044eb2be7e8824c630d14af1b5a23cafb9ffb3449c13ad139c1625cce3cf18a30dba95f89318bc26dca1a788d92b8c8cdba555a3b56f61c2702834346ea4b9c995f2a62832453c95ba200000090efb7e3ad6436cf40a50d456603b484b0790c484345d91ef82df22727bf83359189f64f7647567c4a62d967b7c08d97834b0acbcc233dab3cfd4001f19cc05e406707a1752e03e79919a4a5d58e71b29720aafbc5877bc7c2132627780a3c8028b8e670168e23175d776a0791e9dd0ed1005288a9a0ce98fa9918d9e40308c5022e264ba1f04a36c3e747fa8e039698020000009003294bc41bb24fe5cc42ec61e2c7fe1bd0d0a90a37f04a9860159e21cd2ada613cdb72c0a60eadd711d0a14c1fbb8f60840c4ec94c91a74f2f65e989785b3a28abe0876640a898cfd1cd4cf1702ba78d2e9cff04a1744646744b510798e0c4c1d2a1273fb63a9a8fcdfcfc6511b2e3170d66e31114b708a4c85eec819ce2a81d8b3fb0e14b886cf418f5f904818a9513000001bc00000090fc0e40cf1531f14a598f44838136445b088a2a2f45cbbab5da3cc3dcd3a50d9501b376680602ef03fde8f0efbf5e64bdfcd04d2be10467899db77b87f7082e6bb9606f2b3f6578958f7738aeccc2f998135d91d51804d9bd5af9f9bf0cc082cfb4d914ec78b3717588a607d28866895a26d3dbf67613eb7b88507e96c36f8eb3f6d2f035ff29601a7070db25482ca6480000009097af660dc945d784adf1e74f09c76c0d8070aba3c837dd839e01e1fe905a526b297da15eb220ead6988026a4ccd36544d2a2cde5d68b63179505ac1cf61556c5fcb06155a299e98b76d478dfee7254b10474f23c1f1d780f3525ffcaab169a947e8b42a2b384b2a5733a408d8713510a246fbbedfa20466f9551191746bc8bbc612e2d8605f9d70a1ab9ab78393658ed0000009099c961b18e91d5f06f29cabf320bccb0050d377bdacc0b811a1a5401d046ef2d6fd59c1434c6c7f7f658467a1c5df79c6bae907a28dae0ccd73ca52e7148d36d960bf13af6a158381b2b1d3e3d32085c2953c851420fcfd51c7da4402646bdf8b70fce51677ea205131cc5985b6c36661e93db19cb61526afd04356dbd7ae0b742b27c4dfb3866949e5958ca3e842ba9000001bc0000009002c28f7f35048d85da57163a88bae6c1ce86084bcb10f1f2473b9fcfe3c4d31e696db7c1f176d59a8662fd98179eb6bba3d3fdbd9380987823949f7f6670862992d060df1bb03fc7be8e56ea31d1049e25eab063ba144bd855dafe6615b7e3394519bb08fdbd277645f235e627d8f5c922f064f572ff7e9e5d3793d8f17f7be2eb642ef66ab2c937f234ab302db9c01600000090ced262f3fc9841eacecf4ac79ece1a6f329883551b495dc904f1da4fc7149c19b0af3b589f525b192585ad7cf11d37296750f89b42c2f74c78a4cb7b301b08f4995e5ac277c65466654192ed8b7fad9f02e2c8c9b67aec2e4fe51fd582b065a0b1295023088671f1656ef0c899cfd14e24d3823a3b5bf33025daffbe6667c86a071ab485bdcfe78fd70f4ca591a7744800000090bcc6b58413d5bd230d8ecb4e92873d5d59f603c97f90dc0f13a47cedb485246cef9bb7fb9eeb97588ef15e6a560e7807a3bf30c19222223c73d5495e514f9d94ab925eb2efc5cc009abd85306a1891fc06e743b5b79bf848dcadfede5215546b2475e9ba3c3bd3c90a59b06b298c33b30bd6ca5d1de7b231868378fbe77a66d4d7bd8acdee3b91552036f1786a899f8e000001bc000000907d8152fafb9430eb4212fd07e22ef189b74e1a61840e63bac60ae533b51a4ac663cf6f1eea1b7b005de75030992f3df13520fee65eafcbf284055d95061770dd76993321a449b17b3ba8765d4eb25a5e13f3ccc51ccddee670bf64573ede4d604f38baad0e7b745eaeacd14706d15dfc23e21b0eb00589c0b08468185419290deb27e4dbe077c3348d9ab03babad010d00000090ae769576c6e1adaac865282f54be54d7a32f397c72f6b7cac17b3632dc2b7ea2a991549df2d8cc79a8619bf84dffaf8ba5b8032566047508ff713890d1502f9b6c223c2f417db257ac5cd0eb24770faa230c8a792a315873eb4dd5c089ac5ddb21e7f1be282d2a7474d25b7a76a5eb49094555d3778101e0d87b2fc3634faa9e870274db85687e1fb9985a3bccdec32700000090d6419ea66762388b744d8554f1d12fa61e186e87ef656d9fd43afe120faaf85ca3b919bb9e1159b26c6f9373ed8900ec9b07958a7fa94122767e8fbe83fe25bd25ee9b7bbc215169cd5fcd472d29631a2c85122496dc2a16064f0a4d971d00213573c1be7ab46d9cb1688b7a6b8ad6c715cad16545eccd57cfe4e009769a42f43d35f94afb0ed37f56497a4083b4c1c9000001bc00000090578657302fbb2f8cd1f948c6f7ec702485bbb02d000e49b0bb270e4ba42aaed079b180b57324b619358a65bb30e1e99e005eff7cab46e6ebad6a24bc271dc6bf596cfef2bed50660ee5912c7261f602018fe7c0a8aa0039f79e2d7ae32bb2b3e50a55aaf88f6facebeb285461edd481d0853f2e92bc2962d3abd76ee05c051fd4c616902b3da929fbe7147c9be20b33900000090ff20a189a61ff5160a797d3bbf9fa8fe42a4a718dff147034496e00803e918b5010db5c160bdcc2cd20b453f80f52d555e28addc5b3eb493a14a5eb24bb7d6749e725eddb2d15b7abba4ff1d6f51058b064750b8541970f26baee4f5daa75badc7d27cc7de416972251b974fc47fdd2617e2548554329d272dca1848dd9ca17a8655e9c79ed8d65b9e626bb5f4c195cb00000090da7b1475f1369e5dd95e3974f0a61d381e717cd227a6c907b6f79e25348e2de665ce82a5ef35bc7bc8b7186cf954ec7975e763a76e2b4455c0e8f9f6c95044018b6a6612a3ed58f397c92b4f4a94bcc222ffc4c50503009eaf6898361f5cee52f86d18168916c6d828f762c4e9f1e43201d54a8d7d9e228d202cf6e2d7b7732031cf021496f45cc607e5c772ab64c1ce000001bc0000009082828bd7ea8bd0238eb233d84a6d8eb81473be3048e55f7eaebaad27bef571d806ca99b1583a0ff91d2c2dc5c7165b0f8b5291d069f9041f8c134e58abf0b8a7ed410584e83b3570d224a946973edb9304615a0e468b252dfba310ee65f9daa91e885c7d6f41400876430e7e4283cce8164343d81d0d48a970c57c9b641904f1f43584464f43e42fc3e504dc1aa5b0ac00000090b29129ac91e149c208ee449e9369c39ddea7549359465c1dd7b537c1b768e9afc8ce9aadc7064f10f070eff11d526bc86e5c59efc0b1963dd088c344a0d961214951ba851afc71961109521ed643fabd1bc4146b11f60f52a707ded2c1437eed6621c9298cc689d29573092bd5a5d1ec051ac56823011cb0aca04c910b86eb432ccac18e0713ad65ac0e80fd6461220d00000090f264701ba46324c881a50c29a2cbe56d8ce1d52cb12279b9e666d2c821c641e95e79769ea31329b8d108b5889d12aba3fd22803ced02ea159e5ddd413a810e0147497bfe0595045f5afb828074f87841059e29b9947ee7e131674f694e159fd6fa48816b194a40672220689a3ea39ba51a499df559f617205c47ea0b29ccbe38e77afa2f22901a6ac19ecc44b25e024900000e00000001bc0000009044de4596fcd2174f04e08f5878714d65f924bc121137aca1179967c71b97c9f9880aa849d962e6c2194daa6d78a35dd8d7a0d6267bd4014fbf4618b0f7f3b35a8bce6488b5fd9f771288400410d81946029daab01041cabdff51997bda933b63431573fe8ce751f87b9b6640a6ac76e62b89ff965f5678521288c80e7d924586991cc8bd828803774af1110ad6af2d1400000090955411b3931838621ad246ecad090ea826dd4ddb7bba4f2d692e73d6fbe197f0754db7d8cc340a993078595b2e56c9727cbee8412af57451e251a28716a32c0aab99361800b9c9eedbe58a70207b8dc50cfb4c5670dcf4e3dea0b0d90611be362f0811e4738223810dda308e068502b1275033156d228b2ac72d5c13783764ecaf93fdabb89c3a60dd2511eef546ed47000000901a490364cabc8dcd69b5311f1a3146fd1ce7b2ed487e7770cf9edb318ada757cc7d5a5ab38ff4af623532d17a94d6a0ce99967aae09a722e634691ef15ce8f241bf3b34849564ced406f04e40248751819b7222d607629479e4e0bb7d076d7639c8f6ebb93530fb24bbc03e884507e002530933112acb5c27690c1babfe86191035189c8c17c66fdfcbbdbacd583934f000001bc0000009054be3def72a403f5c2c9e65dfddf409582d462514312202f646d792003166b0f85955514e5e307e9935bbcc9995404afe1eb12bf2ec671eadaf9a846782a983585347a2cf8d5682e9fec25a588fe81eb13ba9a153f0210840b5a343c1223e88a80c467332cb74375602f02a409346000107e5340ac4ccaad5b3281cfdbe0212f640df8b676de03b5f8540623253c6b7700000090a0a2767711576ce8e6cd6b6b1ae5cd8686785990afde849f7029ace4c60f67f07b05231f390f23d2baadd5f0e76b9a5ebde244872dd5757180456cec054c62641187283fe89adb7657866faf7c6141320ab18c2342b86331365ea3f744baeec431a00e8c111f1f8503a7362f60f6eaac268c0ff4448be08b68f919909b6846c9b64e18a4ae9d7e6a640d2d3b45ad9a5c00000090174b52e1c4cc5baa99d81bd062bcedcc8055fdef765174be6dd9306fa931d88888d8d069757b1c6901c95158e8536627f997f10126249fb4bfa15f1a252ebc4a8f75bf5ab07db6c530c9f4887381c5f30cd5ada4fa5f13eac5014e84e16fe8be85fcee722e18675ec59856d364338a150167f37baa8120dff1c3a2422373f34b36cc620d32458375f28073ecd0e89875000001bc000000902a4d89127259186300e7dcefe2b9a3c51c3ce7262745575c1893cb6ec67db59cfd6d97faf4d955b98d3a736ef3c2762b096627ff8d84c7b9a766e5b910377ace261a27c57f67e454fc74b3b65be2310d00d4833db1c3ab4bcb66cc02e8e389148c4c24cf6fd4759afc32e54948a302a5239b055f5e3b16ad3dde597a249742ca3151434363779a42e0900689025ab25000000090a47255e90a224451cddb8819b9c15284c0ab2c79cb98278b3c175dff2e628552793b1e850680507fb33a41f13167445f80dafd01f76d5eed4217c123f7414f2475eff882cd5e6c46216537ceb57a40482e307213037d9a9a09dc1446d1a477b95055de78be0a8b6f39aee6e84b9fb5a8022146920ba50aa9621192b700a6068dfb8e2174d2ac773989feecc6d28261b30000009031dac21a1433f531dd18b1632847fc0dde1c17bb02d5ab354c02f4acc795c5a8cff0b773a547814cd9831bcb9abe8e5acd292deb1df4d6e6dcd1a820e3c17a175c89b40c49f67a7eea27e549af42b416198cc216321d12a56329fc95f648f02fa3224088cb61154ecfe1b9628a5747ef26479590b8bdb8b68b2688ec9b7436a3e0602787ee7c1dc53d6cc2e141c9e27a000001bc0000009042036b440f7bbaa76f6cfdc9b78b13c6ed8954565059bbe1b6f3dfb5bd88c2f28a2f29e0e5c261c25a2e9d7e511d072bde43fd9809796effe69e8aea3be54508d8a9fb29bb6a2a2a9a4851820c90b2611fa5229daf2fda66f0832ba0b177916de6245b6144a4d9fd5a6d84d0b3d09b5f138a8fd41f0245790f51d769418351eba188c24422e29d28b6dcfa5e108a5ab50000009029627be6070f320d9c0094d3745572911c217ee1889a111119f5bfea6769c574a55a30db964362ea4f37cc38d99b125bd96910ad35931dfcc5e1d60460cbcdbcfcadc88b1c3c31541b7bb37f546b4dc91eb9f46857491b80dc5b1a6f3b7d335c2c5eff3fea40db67a556f82ad31b54452f733fcefdc204055851f24bfe942753d120dacedbb004351ae40fbcbc40e44700000090e77c6e4d7f802613a018998785edcbd7f2d0fe43fc87b5297c90f040a86854ddac359d6ae8bea1151e3625d27b5d726a6973ac1a715016b94f596652f1b5c34335c29db6a74dc5f870523c9da04268891c8fb300114e4a14bc53480655c4b2b0ae1b32d51db9e05ab97eb74447c662aa26552991acc5c288822e24649477c17ba04d8173c6a271005b74ba702f19f6e9000001bc0000009033b75699124df3a003208e2f077775a0c0cf6b5f43b10d007ac669f67830f4186c27e63d53e8d10ec7e04a587d330a93303ccdce48e4d883814687d33c3c6863376ed002b2a9a3bb715c93b9a7077575186f9f30356dc5e9bbfbc7448ac599026c258f7cfcecf3b1386812f03e6760b129f10aab131e1fd053fffa9e69f0affaa6005b7788f7176ff1add5b4eb021ba8000000900d5f42e0a54bb5cd368f9c464ec55077b38560a2dd87b7fcc8592304c63f8b713bae6a5f6af20ab8ed03a6b800a12059677496aba92268e1d36f3630ce184a2547b161ba35ad3ec88535cdba733d0ad306a7f349d6ea6ba73641ffe063da5e81170232c57e6814e422518f2ed1d5b40724deff7d2e8c352ee005a3bbc20bee5b8a835ffd076356fcd10cc7ca052fb72600000090485c8561600c40dff828e00dc64d85de0386db3cd95adf13dc343e26c62cbcbd50e4f230a7262fe5faca058dcf76603cd258d997d93d2804bdeca854114dee374b14a94cba4bcf81454a0e5cfdcf7e071b8700e9a230d063828289d9db02e2f79f84dbd59221b39851b0f9c14a326a9509a44efa10eaf2de68501bc0d20799417ae2b08b140581df7fd7809666f48878000001bc00000090793c45f5f8ce488890d12547e0be78376fcffb61c9ba15909bd0d32c4863702f7a4308e7be8214eda46614b17ec59046177137f2fd4191f5214e9035bb1307efa167cb0f9dfcde8ad8add21435e6dd4f23fca789a52337d770bb3239c51752950f463602450dd61e38a292f7467c9bbb0236993135d3c1d9fb5c7210bd33fc7f5068db47cd18a9cc57e585c5e05f526e00000090f849a580d2493d30febe102d84a596007bb41749bcd698232336b52a1e0909ad1ce9c8ba3aad02134ae5b160ebcbabe506d9b7db0a935349e979b8873be837775b6e688777cae831c426aa99a5b95fd42c5a899c819de878d741f833adce678a55148c00e3e9ad526fd8e8824367e48113412b6ebd36bfd1eda1129277085d388afc79c6e0c9c5130d377378ffc8c2b3000000901a77e1fdf2943eb04ad871b97872d58513b87084509e93626d91fb435e5cfa0bb54ff8bc4db8d12df9a027c4f5cd281b5ef6ca8e187d878eb2c3dc3f69df34b7a45828827534373c7857f949f23ab28726f8338613dabee6775bce5af93968516d4b88cde4e1e835f389af54a07f98bb2f583429751b5c5743de521b13e42b23dd3ca73823a09df3cbf95161056e8727000001bc00000090a526b2ab5d1424ace96e20ea34dbf9260b792747a1650ec62bfdc8c733c005d018f5143a029a821c22cb72a30c3d32a9a9293e905463204cec2133071ef13a270a49f163a01a7788a27b017c8d80f84003705bcf1f46491f774b4b66a93884c7e204d37b90712af352cc5369cc5bd64716bb58ad99f05542c64b16267213a12549a9f3dc14a7d0b2c9ed43f170293c31000000904d582dd6d58282e96ed78e85573a6bbee047a622bc85480221f99451687ac7e2bfb2bc7e7d6c1186fd0dd8db4f13021a6163e3300104f0594771afe76561fbccd40cd7ea868e4b3788bd8534c4f301b2006810388a2e469d05393d0c3f308af465af0511a02e0875951b1f90ee40338d1080f959493b6d44e1a4cf65a157e779f21c53efe38c7ef3d907887e354ab90b0000009053547b42020ac7e26e414c1b59a37ae16b2e7fee712797526049fecca537a0ec3e3682a0c6bf499dc5bd1ebd7f002a340e9e1788430993454d5e1d63e8f814e0dc25967f318695e3058c6b31322348ec3041f03ed390bd0f98c27f9515aad0d8ca13ef9b231be19633d8897002c590ae1770f43809e212761fb5b381ac99adb7f0f77b1f8f1cea86b4580e6e7fec82a9000001bc00000090ed283635593ca3f7d15a67e70784417958b09467d558ab99746adb7fb73519adcbb7e3a07bedf202a71f9ea17787b40bcd9e2b3d8c543ca2c5c21841412a0e371b735971eedf6b99bd29037e3fb9fb69132446fcc638762adb7d51818d49bffe2e53baff09e8544b330a1b5303b623fa1735d51c1ac2b6c492c9c84d1a6a55026ad443d5e385d0565e9ab987e8ee4142000000907a3aa2434f8a0cce281947d36d27b0e4e74fcd817192a81b6afd27de57f6e573b0ac854034d4a98443f2f11bdba4657ed7807ad8844c1273300e69b8c97dd2f6357a79cb090a0d3f8a1ea3aaf2eb2fba2feea06a3e822e5467185d783c488c59b7bbc3f2b61b9789e490a4e9f3d07e091ffdd6584cdc4af094e14d135133008ed82f86785bd7e8038889155ae9d98620000000901e128afb71d9690e6a4489d62164e5fcc2ef689bf0d6fc7990b7ea5c9cf012387c6c2c5591f66ef06662b282e37ae620e43eb43cf5827314f05aa8707fd593282b096bd0244d3e6714a396396aa23dd90ea70748e823e25d9abe06b2e098a39ffc83c00ae2facf8007ff3c87b0bd02721655b67ba635dbd904c6a289abb1a67e40e8070e89e550d233f908c47e06c3c100000e00000001bc00000090093f193e90ad5fcc72e550a3f0a76dc9ee968de5270bd8ce9c08172fb4c2f3b5a26da0fef66c84858b74f49798dd226b31c81c4312da9d68caad1b3c8b96dbd259eace348007a70e934974220895d3680522475c527adb8f5a4204e4587d46425b8b51451a66c41718931d544c99763b0ac2a4642ee3bdbd4581c9321d21412810cc7418e358adf228510ede35175ba8000000909f933c55a67a8891db1b2d254dbfdc0c1d9b7728a5cb7a0d9d2332c8f231821c5e89e29bf226603d34b2e080b52f4691c0ef7542efe42a4ccb99d41b69c1dcde57fc713ead365379c54479678690b5b30bc2370bc15d494b92f87312d7e9f490d19473a552601a755dc3ae5c081f0a672616a830f55ccd94db52d6b2d47ddf4aacde4e8d578bc7a6d4b4aa7c8aa37118000000906a096f39f3c3ffe3cb67047edcf09f5b852743fce0f1a5e86fab0d998254a71d45b29ad3cd74ec13b9eb9c9834eda1357737ba05e4910a1972f70155999e0df4dd8e990d05989768e4222e17f1e6ee1c218c9f0b2b93ca885905f55be91c92316bef67aee818862317377a4c834f01e52bd04ccdd32305997766884206a1e66aafe4ce850160c6bf1409e4d7cc2862f2000001bc00000090fb0977cc718446ec0e65edaab214165c8ab241eb044ed8e8e90655276091b2caa5b86cd7a216faf034ae4e3dd1e16bb749da5771dd976d8fef43d9fe00f213731dad21fe720481b4202ee296c80be87f0d451f969f70c2ab0745157ff132bcb72f557f429a71d99f757c33c1a807f39e200398cee44bb61e4bbe4ad8cf534f21d221eda0163937272c18a849011b2bdd000000906ad3b55017ea4cf98784aebdbdbba67c19b26a55d9f145b07b7a2264dd5bcce3fdf59ccd88144076fb3015b8928ad38df1f939577eb411f8e1ad8959b5cb1dfa102b127c75a185c8a7911a39a4950770167f7d4a5c0c4a3e154c7ab738608e8135426db350320a6651f9187e242031d928de5e898cc59d1d9e627ae27276bb6e488dcacc1eef5d3e2068fad43df6f9fd000000905088875ac73652da0184f89480a4e6353e891980f990cdbb3cbc00629baeeee6283b7334870127cb2a1e888816e32f44fc89b53cbeddf76eac4ba0c80080e33cd101ca1a16699149271629b994da0c741d6fb377af7f696feda2d648b7fb702462ed652b61895962fc725591d61aa4d918ee63a514436b5b7ae16ccbc59ceccb19fa98ff49d4dbb3645370682986d774000001bc00000090ddf0918144b46250424d393f02144553c7de44279ca2293101e336963aedf73ea2f3bb7ce6cb414a71f93698d6ff4644767674b827463cff11decac38484077c251d1ec137b40ae382b576c7ee06c2a727cc97d0bab880a919ec3a647ee4f573eefe111af28c4c61f660eb20afd7a92d03ef2108d1a0b8002013c9c85e4bafc39100fbeb3269cd2057e54372c4ea0c0400000090aa319ccef974a6bbb46abdff5121f590f0b037081ab8b5da9e648292d4915fecc40bc691abd959b2e690c40f5484a1079fe2daf181106622a366869bf5d91dd8df73a59ee059f52e6447d7e831c1c31720a425a18c509875a514216d3b85797c8eb73e451153fbfb3dd21b8865989f9e1265c57271318d4d43d0f1b4faf7c32e52f82fb8eeed4b57d7e1194449734c2300000090ac0b574712612f176bef83fd0f812b1a100ab33f0c4ac5b9f509eba019429cc2312468493bb0e8d10603f8a21ef4ce9fba8102dd23dcc4c05cda8435bbe30b2ec877acb49ed250daf1c502572f2faafa032b4de8ab4eec8ea3d4d5f4fc039094331c3406fe8ce09f2d8697134c44581c1963f64648ee9a3b5ce0bb52b9c9983179f18fab2ef9f7e4368e16d72a8ae399000001bc00000090d5cda54efbbeb6d54ed2496af376a262cb98bf36031064f72399c7ac2be9864ee33988b56d96393fb7d2eed6d9691d9d8b52ab6dc8bf1a78d521103869c50434aee072583799f9c483b9dd669092e08e0e0609065426a6af1eccf3c216d575aa8bc1a893ec1600392b4786f9286ba5b31ca5f04127a582cb84ba9e3b70e5e97226a411c4d3eb275bccc5e25b483dff91000000905c9e9fd56e8d560e67b778b23277cfea9bd231347a999326e3a264ccc419577b44ad76169a1c2869e665b340ddcbc7a9487ce6b0495d70da9d771c9fa10b28f24ad3f16dbcac3cb1d014f0180d8cc56e083ea65e5c4580b6fcce0ed318bccceca8ed4138f01a695d6ca8e422199c601c218a1037d1d3ad0ad0571f65a3eb5172fae3e14b9762a594df1e52a041e565ec00000090ee81921fadc592d08ec6dacb28d75464ff4871184e26753752afcd70424a7dcce16bfe5880f59d9c5c627b0c340ed6de8243d196fdd6c175a6b1f574c33facd590e5214f04db6b403026e6c8f5e459d92af77b3d45409a6ce29c570b5e0e255857bcf620ce7bd8fbaffbcefbd2f7cd8e10c45b15a6ecb3ae017bd588f5f0b2077136572a8d1b97acf8368e4d9ef3c4b6000001bc0000009094cea4a845852d5205a71eab1377a763da5fbe70ea95e68602ed9530d706e9734fff6f0f63d1c1badfc518e6c71eeff7341d3839d377e6f2565a28ea7d8a9dc778e96eaf95ea3df8174f47ca08d6d8711dca8e742fafed2e609e73f17f2c1c9ab3cdfbaeecc4051c2e8ee2fc80bcdc622297c7914d843c2111c3a2f36286aa1e92b62b22c98b1702732b18461fcd897b000000902564f7b6e01aeb829a03c67cfe9b90d02bf5d0a3490c841cca0eb13d43385c4c9a6c44e43b6a97d7a6cf823aa6212481eea0d50cdb78394e37ad9c208b6319a06c29ac7a4fb39f6512d2c7aa585d4e112a2fab41500e645f0e48daefea78b5250f0af39036eadd04ac3f8d1ea70d55552071d72c960f1ccab956353278ea0b73197f90fe7991a91617f047f265b6dd7b00000090ffe5b429f4cecba7f308784f79f9171cb8cbf0cf688af5f6f345d43f45f9bdd209f58424886104c6d8ef1c599135d142ef79c26de39088f5a6da5fc21ac20253dfd7f02c28a90b6f4f568f6fbacdcd360248c6500072be21b1a8a952e3f9f6429fb8a509ea76054cadede9d738cc880f037cc0726440fbec580757be0ef5f00860cb5aded77968531e3effe172d52a7e000001bc00000090225391f1f07678b6218786b0fb16dcd6f703fdae693fc8947f64f59f9ecbf8608f2b2fe7673bf7212adc28f930c6c679241913e05e918c1021d1baab8165c492c234d874565789f555f35bd44c057e021345c0508967c6eec0503c73cdf25e17c20d22407bb65dbdb2438c991aadade9034e536ce6c41c310897c7aa76570d36fe4580bc72140a977cc031903282426d000000905a5b8d400eba99dc5f3f2003a81b5c476ff36e092e77f4814fc902c561feec7a616ee7aa66bf9e1e9d63427a0b17654bd61d0515aab1329ab28bd5e1d778ed0cf4b8fb27a666fffb37bffa867c7220ea03da67528e3c0d1591ca330b61894ee9e794c8e5f50b8d6ed366b0ac5d78e7142d0293960d9741725c51cfb2ec7edeebefedb9a769256f0c9154725d3854d57a0000009059afadfe209eba3c172cebb6ca552534b448a6471b27582119547321032be5d3188fea33c8ed8c3d60cb4ed488d572515d463a2d0ddd3ef6d237a7658585408860f2d2390cd44c6e5c27fbd7c3a6c9e6238d70cd02964baef06b1907ec9effe1d7c3be3f6c44b725607e57d503298ba119ca39e81a27a701bcc23319aa7a31b583b2aa5c5fa946f762d40389029d0a8a000001bc0000009019f18b0993ea58cc0e60a6ab12d890658ffbc10abba2deb8ae8da0e5ed86deb44c46257de38fcd3a801f11f69bb609d282b440cc5177f384f131cb5b400e4058f53fbecdafc5235360c2b0a04bf1dfd2186e31047ff1c0dc33298124a02b36528ff0012e161cf63bbfe5e133c713dcdd182181450fdb65bf770a28575b54a147555d352eb9793a2f380441fcaf35cd4600000090eef87e9ca7fc37aa991f73e09b86f3fe5253bcfbbc30b979a631b36bbff441f90f292ad60eb2769cb54e467f63b16db29c06550f96c1430c720f9c2071ee2ac78e48b81ae4cf2afda75505db1ba072b00d7de00e7e8f19f99380e6c3042828a8f7befe8f557fec8deee36203a6cb78372ea43ef82b92e4ca5f36bb118ef05c6f107358a4c9d0bedc1e42b032b7c30f4f00000090a3181d013c7c27c80b6ed6302110e44c89fd98c2fb3ff2bde91a2dac237a0a8c1b9790201524d4add68c0e3fa6bc6f83be980bafca18563addfabc32f4e868736eb61d3ba99b0436838a74aa0f6a27b513c6fe8080533c1c994bc365bd66127e0518029fb0d1e6357fe95e72d82579390ad10e764d612a8176912a688584f119c353e48075e7c78915c043bc6f6b9c68000001bc0000009054565047a9143d945bec3ef338e22ef38e31bcecf35d39a8ad9a53932242e8ddfbe12625d981e24ce51cba092fc1a7098017110d642316f2052b6696ef8b048764b0ec7cc884d4d38afce13c5c3b99c919448e796f40205756f1436e1e5040aa0ced2f7df5f4427286a3b50e2cc8de6609eb562e96c664a796c6e9c6ab269f8fe88b21f8f501ba5b59e56367cf0cd75c000000909410338d8a23b6f386369356c3fa8e16937394e862b9a785af0b426a1bf893341cf6b3a56f5de26e38b57943261a636b4f27f08312cbee701b210e00abd3a1cab483c190251ce200b918cece007f6f9c0f0b5b31f9005a5242a724d86e74f421c852b6672b4d346c999465a443e932190fab16bdc74f7df3b8966d6cfc74c4ae5123dd6046f525d306b76cfd90c725b9000000906ce36d5c10f1ceb7973ea03a9d07348c09843ce95e9b46b9831929db43967c60534999bab1e4d6c548d1e967bb5035eb7750c28dff8944cb6056199beb6b81f4dc42cc9721ffd2a0ae94bfa83ca753b802f53b499f999cfe44cd302b87166848eab643805261ea69b1fa606d5f94bc1f2074659ece90d207636f508a701a85a12efe6a1e9fb074885b453366792a23f200000e00000001bc0000009004d2727c81570802fd60f39187fe8139955c3293e7eb446c15f8c34b4b88800b230e7f1621f1b4105a5830a65b082f4de456ff515b9c4794f474eb33778b47e82b96bd212fe4f3d9f3b7e4dc4bfb83881ac62562528d78dfcb7e23db85f34247a5dd9af7ee24f1df1d855a488b07cd0a231dab09e0487652daafe3f5b38ba18c8b8f6c56f998699f97440ba56ac4a3ca00000090918ab44e96807c203a061120c62e8d898f5975c91cd10a40c33a7b97c57e633ab4b01c7f9e8cdb2e9b2505804360d60e07d686e68a98d59965863cb231c5864cbdeb27867dc6d3d575f6311c890d651508153bfcb90f04d88d7ae3bc27455060bbd9117c98097375f3b910fa2b1a26f51f898b19b7dee695e73f771d2a7efd51f97a1b67fb8cc6d4cc2a4fdf1315dd6400000090b6e162c9185d396449572d19f140bae3832edde96355c06f28792f352c9e0f1d16602a80a9bb4b525b0b9ef68f4eaee1f28700e97120f936f7efcfd722f383f76b22b19e022f0ca46e885d352f1990602e73ac7a250e86c2bfda2766738e5385f50188d896bbfd6d125abdebe893359101d9779b506ca9ba4be0dc69899f0d21c92aca8b85eec4ca8b6e58e8882bbeff000001bc00000090eb3d82eb845cb36112c2f181665371298b76838e12dae58ab41723d1cd3353c26c32ee720ea35760272aabd28c3fbfc75abf24faf78508bf7cf1d731074e263b286fdc2faf1c1529bf47b1184b10a62116e49384fb35a370758682bdacb2dd518fdb3a9c95b472c400be19fb9a510cf11752226b7e1ddf74eba9c1589232ee94e9bbbc4079ac97594a18ab4fa42e8b8900000090e4796a030625a284925999aca258aa4388010e731dadd1396dd25decdabaedc1658c229b604223b888e096e04b35179cc499512920ce0d63359e3b00f2b876bbc1655f4e043e3e034f0c541ca9008dc12246a72afa3aba1fbdb8c78d39bdb12ea33310ccc648575924d780396e3c5670080bffa4e9882535ae82f3ddb54962e6a4ce4bc8dc969a4ed78d286c0712d7d700000090c639050d286dc2032baf8c0feef5a51b17ae5142ad49000b4baf316ba5a6c518bcefffb78de74d207bd52b08e92fe7cc3d53852aef8d6db07b8bf8d7b2ac3efe338882570d238d89b603c10d98efac5d29e4fbe16fcad139750859f360a169cb99767b8ea4a5e4b13e1213d330dbd58d03cb09f349c8746f02da530d5ff250b6ae4dff04e844236f8b2a716e128d8bb8000001bc00000090fbae53f1c4b11b030f6572ca0fc4ecb535cd813d5136a61ab5562695386df70413d4cf697f4d63ac1a59faaeedc8dad4d41a1a457e2abe9e5bbce156c2c812bcccc0963efbdcaf5697607f383f8c778a18a241790d2081fc2ea8f42ce362704be163677c8e6377962a0a571ac8725c6e2185d8e812b2dac85eeeb0f2a2eb5f9efbb8324b504d3c00d2da408a74eac2d200000090f3d302381fc23183fcd2aa4267c5086fcac6dc506b596a91df26e2d521cec254fdfc8981e36f9c1fc4bb0df11860e7761d4e0454d061e704b3f4cefe920f09c847612885592567efa4a762887c6aad14074c4d33f30a2b2f299869ea1dd678f72db17edce419c26f167b56d396d4cc521547b04937acf726763f2ecd3c465ad8330a76a470685d1762f46235619c96f800000090efc8705e36daa95de34bf56295bde86b2ce2296fdbff32476db7e83ca1a8dd0151d7dd1bcbbcb0073d9eace69f8bbcf93df2b6dc105330ddb49f4f8d61d1a55b577b3311c325c19e380a185480d748442e6efc007caaf50c94506d1c234f71eab1c19b2a34161332e426121dcd75f9f20dd18e29f55d57daed1aff739f5ab4b44dececfec9395dc44e620020cc46cf65000001bc00000090aa9507ff4c7399f8eae915959531729413f12bec3fd965b24129b2fb0129d1fba6fe9472084590541bd879f41a404a9edf78251856f242e8a9dfc625966695b6f078127499b10dafbac54db22bf057df0146631f3ee9b6968490012cb08275b03474d5905e26705e6edc3af9ac5cab0d0fe1b514c7d92fdde0724866c047d15c07c1807e58e7484c1f82daba3c39193c0000009079d9aed959c3df77f573a4053287536874b727627dbcd5b654257498f18e325f5ce1ec47dcde04471bc1d951654b07bf09f4754a09165c2a69280622567ceee202b61407411df752ca3890373bef274c0f080bef80811bdb9c04f37947fd762c4a92d492de473bea32ec08893a50992b04eda0bf977e89cb530067ba488842ca83711d0296349d674c1ac56afcec60cf0000009090bec024b80a113256a351d1706a64766b375cfeb06cdd20d7ef75b0b3647622f1cbbfcd0a60fc16d29dda344ce39108b8a98d6a6ad2582363f622e871c611a43ae5f098122fc747e6b7627a31cb6e9d1ee2ee99aac798d2486990af2c866b6b3f8c5b3af208f72ade7b51e1cf4888c81f88e8bb1e1af435ef29b251fe6724a708dcd602b495662e2aba9df00975b1ab000001bc00000090d65e642b9d1d9a03a35426c9e93e1c9321a03b39d51954b9c72d2b6a230e8951c7aff800ad81f7bea03fdff671fd88f666cf5b0e226d8de735cba18bc07538abc29d93f42243250f1e5fe0152a83f06c0cbee8237f842b4b6ce451b40ce597bc3c4a06e3939c5a685da56af2f6a3635a0a3c1fb4ab81de5eb4b0508ecbb43df7f5050657d79092250043db9efcfa6a3500000090a0dcb21a7cd02d72b1d18d9efeb0d1da493b42304a14e012228605e5f2f2a5e044b11ad014e87e114ba74e00ba47c96ecbc5d48f7fa74868bfe0c2e00535dbecbe7e796af28dc37c4bdfb6b1ea149bf71b39f68996b10044ced1872871d90d73a35b723f46064ec7bc591d13760e5edc2786029e6c09f2dd1399697b4513db9394fef770d01cb86c21351e18fd724ced00000090dd806ae7ff708846d36f9ddbb6c8f8f8903a2f6d68a06633e707c7be0e5d584f8f51657c46f027ff5024101798a3692a554ab3b8ad185fa4a321e64de7f6fa26eda8e4768a5b8358fd6cf932a138c3ea0c03a0d6b04a12d7a0984f2ae9711483c43ae205251730357842873083c2e19c1f2d576fa667d9d5384ea6e7b2a2141d46f3770bf6eb8aa659f6d254bcb55a7e000001bc00000090892b14aba0efdd81abbd79b8791e7b14fd1b4fa765bc40491e4fddbfa21054b7ee882f95159eaa89c28821a472d33504f738edfc8c04398a16e15e8a41558349f3683a610b049e72399686c61bfd5a802460fbe9225973495867fa3c43588a6c734391f87824aef78bbf4a201e7490a32ddcca538038bd1403fa260abb9e32d21cfe381ef680f4410cca678119e1c28e000000903bf5b5f5bce33dbe74db673db3f58944f456f5276fba5a7a59e93918380b1e151c1ba18cd746607a4d0cee68e36bd17ce577cdb7d18eb7887c7698c8d9ac52af445bad20b520a4bb1733d953d00156632de35bc8ab480c2dab17a10d2d0faed1e7597a45513bad38907ab546c75ebd3a2d69ddfba64193b6633153a915dde34823f2560c0468c8822db4ec69f8b22817000000900bbab109aea3fa753bd5ffb15326043f7b3a5d20d3ac6df24379ba28804959fb4f37dcdfa8c2b17baffb16ef63b1a29229c00dc6b289ce6ce7868f656a0af73cefb428854c07972026f38e45415f40542a8d166cc63ecf982739a3b0acd7483332373e979d16a04c3eacc610fa4963e50aa445b3c940be97a6ced2b5aa8c57f29eab7e4c8548515ce6c252ed733e0e2e000001bc0000009045da1ecba3eb2713931e0edc750f695b1f1b175c6b5c52b5d3f8963446f21e117e9ecc7904ddee87ef3eaf4274dc9ef5dcb0707042a7bc2052f849af4029c5ceb3e6184066d378d21f6506cd6f44b7720cce17b80c0fb48bc6486ce98f879a87c8d65131e0caa7ceba5b9e7bea2b15a82616f160655f922b53b5f32e7d78fa77f21b6c41be2237a7d5bd5763623ed86f00000090eb156a017208ba060689d4614777b3e026b5407a0e981a11d80b2000cba96a622036f63b58f94d8ddb4f3f51432cfa33b2974823715f1abe0b372dabfad69579aa2407ee91aaa7563593254b00948128216fd3efae361690f87eacd013cffa2e55c50a49895e52ca16991ae7ad631da81892664084cb1c521fc0742dc0732e8a638618e22f0f8b2316a8759377f438c10000009028c973afc8072005b575c14cca6bb159002d2024fc4ffcf6b4a90fc443e84ebd23cb498ec0cd46685f730219181b8ffdfdfac8573904bbe98d17096d347c9c8deaa6f18cb539bc7222d5a59c22e775ce0ae863c19c6388afba27d1a35a36ed79e759572be92591b47a92751a88094b05136517e0b93be6f56e431d32b906963ffb1bc9f4f4e7b140e668690efdaef521000001bc00000090c251c2887e122e6cba8c451fa308cc66262d76f435ba48a8f121daded6f254fc8438a1a542472ca5ddb23ab196d7b27c9c268a72d3fca4421272be7eeb7087c09919cb789fdb12606d2cbdd6327caab62a917b9f8e46bf2c83ef29dcd35885ccc9a1b0d88f6e6f78cc419399175651602d67e05de51d75535fec4c7532bd1c74415ff1b41c539a863578983fad6e0a8400000090082cb812c86e14b312a3e43d8560a673bdbde8673d2a728f99cca2b9e7217344343028a7cec9d079432a06e139bde2933fc59f0d8ce7befe6d5a7dbdedf5da00d8b564af7a9c0f159dfe7b8247d0ad57296828fb7fc593d279b9ce9f48e018d69ccda7cd6d207582896bbd0be7b9a9bd280f371cd9b7eac113d7017a1f48e8cffd8991a9c31fb59bd3d609ba0464774e00000090d13cb195beee914e24b867f316ed0a00e1f93ae1dcb1eea05c989770703db9870b8eb3fcce0a12674a2112511bf7a36efb1db8d7ddce9d2ebaba71ea0c79c26b204853d3e1070283efce7cf37ebd775a2b3f0a080652b55c71d984556754bdc5e74239be9a870bad98c9478a5e1f31760f052197f58a5aaae91b6cb1aa03d8aa3d556dfb16780855c3d67ea74e282bfb000033a000000ce400000128000000906ced29e71559289b41a30bf1c8223f7f5e190c5da0f18e3f2fb36755bc81632a23476279b21af617e3d5816669148c207bcfdabcfb5b37d9b93055722276f28be39fe324bd2300bf8242cad86eeabb7205bd36533c669991697f7ac788acd5c818c25e3dddc85b52244d0f6934006afc1181fccaf9c0671fff329245645cf57661f534799facd0b91395793e958799430000009061165e7ade49c3d555e2d506013851883f97491a11138301a64c23d06d36c60855ccdd2ce6b090b52213ac32f93a3c1915aa511aed6aec6b43d4889b7e8e12e349e3c0ccf01091ed55c8808debd2a49b2e0aa4352517caef9be648a1866a644d5c3232d04955edaae334e4f74a32256d01d668ac51f293586688c588fa1248ebb561579b8f1243f64520d602928193610000012800000090c20307cce2ad40429fd085e166598c6e159e2d2daefc9987319ebc658f37ebdef8478eb6420ac9462237030db7d460732d3ad007badf7923d27ede59fd9b76c82b5af2c60804490219e0143d168ee1032c354276018ec209d3840905d6fe7ab1d80c315c2353388c17a5bb292d30c14e0e8ee38cbebeb040b1b49815a01c50110577349a069232cb50749456b8542ca700000090c21be279d7112c8233f699b86da220130309e45b8f46a5773a71c119a9d39a45eade90aff8ab2a61e72bdb611fc799af18a05b3561d7fea5494538ee01e558afab7aef60b0eb51fcd9394c3385cfb0d423c767e83c2e7a1216f859776cdac28b14efc4ae43d6b6809ef2803b18d9cd7c03842e2e13d817c95cefaa7f8ed91e974b80b3d6917a946f6158a19df15a947500000128000000900845864a50a47d07297348aa259971ce32c2ef15021d561bb24e2aa4647489223667995cfd6dfddea6f658d2b42af8b818f6475e82f5ec38e8ef254363d8eaef5602e1a2d980c9f63b765836b8a436f11368746c397c46f8fbc7f610383947dc5cce8c663bd8443557c0fec48692f8b20a6120da540fa31629ba3ebb25da26a1b03276b5d659e019f8e8180a54009855000000908827ea601e3c88179aa5542ad6ca3e054d75359304fe90253f421e8f8ac5de67ca855d06b2c3cd0aa5b78acd7072184cafb9178adce066c2632234f2cb23cb6a06ebda3643f9869e413a6a216e84a29626b1114ba32561c671d54188e45a8323ac4b1660749caeaf154469fdb0a98e2303f50239d3fb942a166effc3f760d630d56fcce63bc9d3a7970893e6d343800a0000012800000090de481777e2521e956c1a82ca6d0468c95986b1b49915f9dbd3544f74f0d459466e8ce587c90cafd599075436e5e74359cec9887c81eeebdf1bea8672b5d10802d515fd85efa7d37a5c5b674ce00ab3522687ee41199561092b7bcd3a1e2210a882b53b9f59423495d3c793244e74e11817a3f58b2142475971a0802b8e1ff58eaa585326eec00da9cd7a92c0eb41a86c000000903cbb053a398485e98af097d1176385ecbc574895fb7e03c83c3c7044c266ca84d8cf849b1a4156b401159fefea93ff8b773639ed58719f3128bdf37640081d1a824ef9e3ec5d9ab1d45bbf92778325df15121af58b9312e2d8e5d0373245187cd8d6c77e0b4e67fd1c54463b77dd2d750ffaf29df1a8e2e798b6fe44e593097924cd52d7154e5b2626f499d04914fc900000012800000090e16c6579c155574b7fd4636bb4cacdd57fecf1694d69c94e1a72ebaf773209bfeed7cca59b3079e09c927f5161c91e335b6f72fc2e7104a459c5c7487de91b25a3355d2112104d19a1f2d0e9fec930b717bcf5da750f585642b4d43d79b87f5d7d275da2ef7c298b7bf5195b920a35b42c8afed45a38322a802a862b4f9af3142eeb31b23c862c681a691fc4cc907d20000000909b8015cfe88f81f4f5c715774601086214f10d5818f9bd191bd3d2137543fc500944fa5707eaaa85c688c7bb34ae2cd0518c2264d332ee6c577fd4d4e882c5e5bd2f0307fd9ae842c8d1d939b29723a92667f1ec789772e054311d82545b5140107b8c0b986b08eebaed37672902eb6e19719f5332e7a2a8180e2fc99caf06d8513a8401743d728de3be3dc52ce8eedb00000128000000902a08b6f9edadfd9b077990874240766afa3fd95d83866dd22304f569e2d33b657152708e9f227cdaf037a357ab0a4ff600f48a30d64d70eb03599647962dbd00f48a9ca96f99b8f6ac410eef7f2bb19907eb42623e48cde44d97064a5e76ed47e6dab6666ff1ea7956f1373d24f533a922859a39dfd5716a7ab2c860d4a893a1344af599276cf2804a6e3fed4b0e89bf0000009012330421895d95a9c8f0cf59381cbd42f3139a7dcc28c6c4dec85ad38d95e734e1149a9b6389902dbe08dea922ff800d6710ae3abeff66941ab1ed689ea8bd6a0eb788f7831b0097f5571ddc3d0830841e178814ecd91babf64d7c096fe4e985f7b9661753498f3f394df532d7631b431cbf7f35df92487a75c12a15251f6b0e73ad9295364213eae0749cbe2fa3b4d200000128000000909d9e2da1bd1ad0b265e7a11351d74a82f053e95d414e3e3509035aa1adf722b700fa7a68e1329d9906c610febfee397c5ee613b19037795585a65a8cc9a13fada7eeb7e68a533b673c4ab1ebf47bbe791a59536bf864b0dbf29e2186e8aa11a9ae564cdeb8e53f2a18b63bae7ae97c200006110189dfa8b9e94dfff867f314a1fbc03bb9e59bfcc9d496b056ec1dd01f00000090bbb2748be6a328c4adc4069ebeb37c5398c1374effef708cbc40754ccba78d6da618b9d26fe7bd0fb01a4bbe3a7a335019cbca751f8325c8c66f5f2c4609f91544ae2f405881cfc6038402e181470d1c01079698e5f2e36f6bc15b2aa5b4cbf659524ea6bbe04e04588d5398ccd3683a048f7b1489b0de7411cfc7cff87d563ffebf153f08584d55e17e304765eca385000001280000009078c5a1db7aee3e9361e5ca420122cf5eb55ab9697d0b41508b7bb179e6ba4f62a90074034bc48f91bdebeb988ce5c675dd0fc6e0090bd38cbf7371dc3457fe10828ca8ca90c393070ab65c81ce1134a61393ef5dc50be99f0eec64555dd2a12753939ec2650923c39f4856d1a68cbcb11037cf8db800fa237d10e4d54446f81231bfc374e6f84b431a88858e591f6c0300000090a920fad261e56a1e0ec1e816594cb719f899fb224fd1288a995571079a700b9f424b63a4cbfab814c3bc101dcedba4efcc8a4f754b0bae9c2ba78b6ee6baa71a24bd2ef46fa1157c48128c096dc709942f0492106bc6c3291da53820067cac2a9d12e17bc638ffdafe921f98e6df37150f627b37f6a549fec31c2daf649bec9f29a608ef138c28334b901f5146b63dad0000012800000090df55310ecf9a1052b12c8ea6b3f325d7fadcaea956437c6a08f5abc9d119c1335975343301985023f32c95efed3ba647563593f1570040135e91958ec6f1862b8a4db97e9703fd417893f918854646f1054122d0af6dc2ffa13c6acd8555cb07ea2a24b033b8290a6437928ce57b909d2a334328988cccc41d72d176224de78ae29ec28e1f5933ce55e88978dfde555600000090d3cf89eef5bde30788ede8d63de64fa16540e0f32f7a2bbf695c4b625fd9ffe14df603d49a8dbcb2d7ff85079f80235d11597b266a416bb52dae66bf24e644ff82c535a74e465a84f3f4546e0242b23c02bd93a36ba8cc649501f6bf99a12bbe6c5728fccf668fa2bd58ed848085caeb2be3e1dd5887b76898d01a6db4e8e4dadc3b1e61cdc57a41b0053981250116b30000012800000090fc86cea3d4aac5eb7dca669d076b2fd061d00e48d28eedb6873afa7b40366e4ff82e26adacd233c8f001921cd3258045efe30bb813162183402a371b40ddb88c2935b78adc21554bf3f007e4ee7d5e9b18689e7b5332a1e05ab70856d743fdaf0fa9da120870cbf04d918a65f16a885a1c19e721585c80691c65d097b6c8c92a4aebd924434c7b6024de8624ece384810000009053ab5bfc42c215b93e1ff640c24d7d5fd4036074d9c8aba43605458a90708559cab63e463aa20871602124e6e36405ee046fe8e82341ab70e1737325bee25f63215e11fc9d73f2a808c0a9644216617715d11054eaf640cf796b6746cbdd3fea488418f52673b553d35dc294f69144c30779432f41b7f8798bee222abd4aea7d3e148793dc477f1c45f57ae8fb6d42b900000128000000905e6e31986ce58e8d566b22248dbd8e742e36db217b7ec9535411ea2ff3d76aaf3b3c3eec489e754063e34fbf5ead13001a5e6f97635565fcbd8a5783d63011e21a823da8bdf690eabd1f75f76879fbcb0f49e857ec71a4ce840e5b0f17918a3a6a8aecc7ae60c921f29bf9857ddcfe8a0ecaa592c24c54eeb37338d671f16c4d5004ba49988524f6e23ab69c807d36800000009012fd8d0c10354b223aaca3b96c3ce882dd6bcc43ea0e79427324753ec7480cea2da54c03241b79606f1d63c330d26ba0b345727e2ff0ee6f1cfbd88bdeffd09bc05507f80111d163726655a51b8ceb692684a81eeba49a4b4e57157231b8338497c267c6f1c184405e1a7d3b8d1561dd22648a8f46a9cb80d858f834a880028276cb70268d5d9427ceeeb5294f66b8f400000ce4000001280000009030f3472bb2aa4afa7f906870a30601b0b42da3696e13c18ec49a94ee262dc1b536b62055c0e05716ad477dc3389e318fe164622664f37818633970b6cb54761d661e61e5b7f1e64195d4ff430bd0d97f2a9c2680803a8a65763022365b7defb845cbab0db45c28f0cde6fd1647040d8f1d08bf8fdf52723a1aab2ad7dc880c9d5bf5b37ed2e80ad5c8d7f13d822811ab000000906fd356b5b6e84cb93c5e067bb5d1ddf99fbb95c87de4a281ca3fa591a0d04960bdea46a9577d1196df1408adfadf1c5ecb273ac874df29c7adc3eac64d5f9e1494273ff4b0aa9dc996532693a66ee85611430e5b22cfad17091b004a87acd321eca932c9e744d9af1543716240eb6853191cd9485100f14fd22d96dcb3f03b20314399ced282ee408fb7eb8d43db77b5000001280000009098132d107bc7c0a5d87728dd6fb4727647e2f4f2cb20fbdda9b9585498c5c03503050a145de389ac72e59fdaadbd3f3dd2c0d853576cb5840d5b0d3ef300dfc94afcff4026a65b3c0825a72017505e711a8c45008e3b5bced0c77908f91c72e0b35b985c12adacab86cf81f2b20187db0050248a789b024b3bfdbcb94b44bddea4e67f1ebf2130fc97dbd257fed593a9000000906108fbe8ea485aea0c3b9dee478d8a2fc395dce9aaed16e08e53b456b3ab7827d6d5a1973394572f90771bce09d05da2992366a7970ec6930a6616d6aadae93c6e2340452c3e46224d14932fc7ffa1a825e7e6b8cc504243e76fc6b52f05aa4830fe7f1e30befb0c6a7efa1f8327842815268491e75d595d08894a3cba7a8b310672fbf79d627cd13744ba6fe52c33ca0000012800000090a640b92d89fcb69e2c200102a972ef00aef23169986bde7e450fb2d0c9850d641acde236c581cc72761a335fec7b27a0fc2bda3504d8046f2a683745404cc5c880aeba3f16d61377fbb723aec4df3a640fc3d6e318f2ddbefad52e99671434cc4f17845a5e93a51487a0ff6b48c68e3414e70a9c45b26b02e540a93fd00d3be97eeb6af5c4e68d2ab48458d23de52a33000000906bf44acbfd2b3aebc38aab3848c867de4c3b359d01193266e6303df1f0ff84430eeb64a1be407b1601c11743bd6a184dbb78e5f53cdc8f227467db585c8ac477193fbdfffb1b4288cd197687bd1d872910cabf3c02086c10f49c414074b75cd589ec279e7edb1d0a5535668893c7341400c73b5350471521e780daa529234c8c053aae6b2eb8ab29fdc0ba78aa6be33300000128000000903622d289412b4951637f9e55a801d7a6a00bce377d288e36121837032f05b258f6921547a4c5b410f30c2125daa1546b6b8d336d82ec74b388bc719d3d34c72347dd83315b121dd320e3434b70b0de482f71e50f882bb1022f5caaad860fb6e2b3e843837dfe28b59955a7725f9ec9330ab23a886f6883f230aa74854695a30224d60e0b4f4ba5fe30c19ef0751ffc9e00000090b88847e072454264065439ed169f92410d4e4654a0b1f39832dbfc3be28eea464798848393e82534b5485828429af27e5166a794544dad0018a9e5d2c5826cdb5d0334fe9f9ef469bfcebc831769d5872c7916e0a8a87c44815b66dc08519b1886fbb45428d83772e77e5db38d44dec52fcf3be71a84b0bf17c080930c6c0119cbdd6ed061a2225d3f23cbddecd36ecf00000128000000904201e3550d2e1f76ba1068c82ec0a67d690c8e51fc9f68c7f36c81263d5ddb29be32e5e3e3b9664d9bf4c4363436e7a41749cc645c29150275f8501a87a0174371cfee4ae8df103d59b0d0b75d7ac10418654975639bd6b9ba06cbe79acb60ef3868b697ddbfd2ed661451d061c3a25c02cb1bfea7d3bd2ebc0f5f0166c649562e96022c6d14714d4367c4d3763a6f93000000901a4abf13152779f3020b104add938d7117f3efee81c8c129e864e087ead16916fbaf4c2f36beb51e706f185afe150cd005ca9b0ec51ec03757c1e43def29e24dcdcad410a5775310b3253db842b7b00e2f772e81f0d2dd8c3ab5efd0591d8d772994a9ca121fc0e601810d87c38070ba246d2fee20ac6b429c525f1528c4115f357457bb61c3109edc71450019e95b2a0000012800000090af135c5f86076eaf2ff68254357089aad9e5feec3a67139dbdc62da177032337ee03e6eeee03c5e017fa6da3d0bc05709006f68b11c277f52f2cddaf691d4fed83e9c46ba62d8189373724bc8e966e850458df493e3c8762e69154386f1cdf20fd5b1515c18ff7dd5e523aa1c167eed52acae16139da38501a6551c47f0743227600e0643ea83b830acf55497c8f519800000090af3b415745232d4b810cd1371c2662441a7745ee6e6899f0fe89dfc88e5e377f85e95bdac825a1d5a8970ae68393b432ea5c886eb848838701adc656330cc7cedd54270324c524f4f7dc46f8dcf48b0f2039a5325bd816ff3b57871e68f153cef59cd172b3dcbe700d0eb44d3cb5820f264ec501f59a78d4128c39fe2880ecb86bb64c4b093e4495ff680f110743059d000001280000009039fb70ce62c23dcfa825a7bf89053dcdab094f14b3d0974ff76cce08f48ff8f7b63497afef0b281a4f156cf0af29ad59f5d36e95eb80d825ea4697ec7f7f710c2b51790b45462f5f129310013071850d014b07614fc802068f90631cc7e0ea6b383e40e4f19b44bd0d0d7d522a8d121a0e275c1ab5f6f9b274ecdf8d280f9750173f2f434b994c2ece09999cb0501ce5000000906d2141941550893d8333f7a1a0a9af9baf9f6e737b71f07db67cf1283b4c939393986b7f0109dfebedcdc19c59e000febda964ad4ce208ba59ea2ef2182ee787e156a18ced9510e50cd4a177220896c716c20c62e0ee3803d408603fb34d70de2880847f829e5ea6c9e4255f3f53ac091d2ea4960b6a99c63b3d58056c861622cdadd11c0178d13fe271636c5686cde10000012800000090e6e105147c3ab0f1ed9f425fd0d8beab8525d5efe0a43872b36b8fa9154e89adb9437888d7c316d410cd9fef9b5deb1681a254986bd1c2be16e5b465af02349c0f01faa6c7331643c9a1ac714654f0a02a4b6ccd3839295344c5b4ddc939084b0d8ce45b9c922dcea2e7e62156a265f104cbc24622883bbcd114b3103b0e4e7b78c3107b2575eb05317f27eeb59bb35c000000909190ec9fe430c035ea72f17bd3bc0b3a970ab2059e32bc49c0a5ddb1d278738d7cdfe01e920411a977934e18824300c9d2137947fbb594137c70803fe1c9629022c3d6ed77c89f35d541116240a803000cb6f57a124eee37947fd8bf6f66cd67846f0f1f1576f522f5f96b2a920386ee208ecb88b3bb9412e3fac2970ceacdc5cc06cac0cf2089981ae0bacb3a1b7d1700000128000000903a28ec3706d2eef4640070428bd729e97b4abd3dab30b987909e5cca650600079c6b6845f201ac65c5a3949c408c2cde406b2d306ba688b65e3c2717e4edcb8b2940fe6f48fce8788c945fdc283b60c2208770380b05ecd318ab816526d340e1d44f0e4b16a7f561ffa26c28bf7779d4052acb479b576a5bbae956727227887eed77007a37954713abb709ff6531860d000000903b8a5676e83b32e7f978b723f1accf0b6c5f191876e43ae4983db637bb1af8a4c699bd1749580fbebd38cef2d10b258f00166f71b14bf35c1c98336cd133fefa21e3b89fdcba4f34858f60ff61f02fa51b23a65ec2bc0434af82356f00751b054ba478b4872320543f56f082435df8bc28a0fbec0d9f1699cf85fe79240bc01b4fa41934ae52f3dafd57db6b095e49be000001280000009007b21328b8c8bd7d2b7ea9db1c48deb7abd40e7e5987696d90d0bb35f3f4d8c4cf515da524a06390ea4c29a7581dbce23d174380038045d19681479f9bbe4642280605ee3ed024fc475e180e376f5558028d37eb5ce1a75ce746d5e5f5d64ef0f888006ffa49180ed079a8cccc22fc830a2b1571a64b4644671b35c7c9fed049d889622c2ac19cc8c9e666dde8f7487e0000009013ebac517052f806e3e8a43f9a76b3fd8014c2c51bac75c18813d340209a1f8f49cde8903283fa0f6e57f99538d34fe76e2c2ca622464b2adb4105235645ff068510094118d808a86fe0c57f9c0067ca1ea8d11f1d4981a817216886744bb09af6f1f9437d0d737b3bc8ab7a277669f711c767ecda7972525d468db22be9c49e6e82ae4d6b053d753046689f1f6095ea0000012800000090624b9506aa525b6d6889e72f9b026880f244534be16924cb6a1248e5450c770687a29c580c5b9ad284ed9273486a579b703fe1c1bf5634d2762460cdbeedeeffda11364f71b3160fbcb8a734b1ae882a25812144653da5a24934286afd0be45c6f1e0153fe509adc5d741340513a826c111df48f270168fa72ffa3775a9a896a782a7cfdbcec88d91f0f14942c9f0e8a000000908839817e7303ba863689869f4a68b545060e5cc4a2680c20f252d0c5dbdbb3213cca4f412c6f2b935e561b839d319ef7a33fa82bf6106110f3c90f0b79ce5f242526f3b84424dd0cb4921494fd53e50a0bee29198df55dd02a54dac81ebdb9b1cdf9889154ffa5762a27696f1368faea2b84a7dffc567c61f7c6a87e082aa3f80f6acc2f16f2b3d9ea54e26cee5b3dee00000ce4000001280000009025e4179a89f006c7561f2f9db9a7375bd6e014fa0478234b1f56679d353489b6c5f499dfca964211832ed03f51b1262b4580ac1e68a534752b47cf2f7798aa42da358a45a3a6888bdff7f174613675ab0ff2e00e2bb76111c569e761440794eb10ee13f6cf1130fa680adab60995c55c1b11b85387ded9cf8fbd255e97d80040b0de541173f02de16e87195b1293a4490000009069416623e8132febf95d02899baa57788bd46cbd1b46c1db9e3fe4498c32ddd372b59f8c80fd9787b3b7adc70a2e50f4dd3b79f8015eb159bd251eede3013635d72c8a105813457558e33262a7f08df21737ac4eb5b7dffaa8d8e4e2f0a4893a146974112f8c3d6190f2162b6f89928504e99551cad7da3198cdeab46290d4fb2d427dd9975e96b2cc6394c85d399ea00000012800000090fde0a703c4367484e2d7452c7ac078b8e59b36c449f09b170c5eb35e5c7407cb04d17840ff92217b30f280b7b740d265db469c41baa3e9bee4bb8767b552076866c77ae3af797703d42311f7f13557b71ac51641bcffaa56fc7bf4b851f155e0935831bb9e362ad98f1b172b3b0bd67b1f5d8e93e1c95ba553ec9d223ee8f3b20d32d8184115af308218d30128803add00000090eedb114f15d635863740f6f166cf200c9abf5a0ba790aeb48fd25177e2a05cae44be9925926537e7b0cbd199c8f5806bc01ad1a921c8aa22ea6620e7b48f51d462c708c3c1c98d5c6cd5765849ee580d1556612d0017c5824430b58b42b40997353a5200a369497e1182e990524c7c000b1f4445af9513fca8bc679754451e6681828d034f7de583d1f106dbb1576aa800000128000000900f5b0b1a2ded4152608ce8966a39171628dcb23a03f2184956b537f0920fd4d01bb19d06a35f2576b99f9ff31c8fdcb0b16455d4ba4f486ca92cecb091c33389517c98054fc81a7c9d648fcc62025b281215827d96434c2606a4416c11de6ff75a969a67e0548e8e3c36196225be2d8523de79ffd1224e59f5126287ccbf9981da6cf746853166c7b8082d74ed3754fc0000009077f89fb4b68a9f1ab542f23f2c45f77709d8b88b0e83a13abb74c9ee9c9b23e29943a931091498b1cbfbd4b219c407b8400e61ea0c47ca55dd8c55cfe6a0e68bfbb9c5ae4c22cfd85dfe79f0f8d7add12d3b87c82b19851e889f571218ccc80ad9ed5cedd60cd7098459ce34fd231dc01ce4dd7153efcba4432ea9dc48e1acdba76d6a232f720e5b3a0d9ef82c6f84940000012800000090658c2fb8283c73e49963439e6047e80cb73ab3159030a1e8944caef2d028af220e15f949472071a9f815af8ce3d8518e5ab7d1487c7ac1218af2feb9e452f65569bb0a76d493a651bbf2b07764af2396208a908d4c81553fc7b813074daabd0c2bb0dc5c404326939e243048e0e0f6582e75ad5acd36c0bc2d47eb922c4ea97aea0030b346cd362a15823aae70330726000000909106f34f3216567269f250a7aefcc379a5a5f73491308209fa4545c9b12d505f0b6cca6304b55cfd679fe153771d69fdc174e86d5505f7538f455bfab5027a14c1d0f79e4441c49783c3687580d76ceb10603aa326d144b193a05a4dd6abef19cddc19e5c484b508736bc5f6c1f6452e15006b0608d7b76d504041a888e8019e2b2e5d59e825f3bf803ec89863c4e95000000128000000908f2d66f61c398d081d91e0cc37b113dd1cf63f37746219f040f08f81183a96c411bd805993055d94f9a2642affd04150fad1022d51e4748ffc5904fc57d4a85d0d0b1684db8617b55255e327ed08749e1d938d69aef70f4a42d3f4096e8d1fd0c22fb303666bfa66851aa236cbcec42e03b1cbf750519018e1db2ad8e4c7ec8e79d8916c5d21d06efc4e497e89ce2db40000009061138607fc1233949b170ec2c0fda3a92bf355c5da9ee4b7dc854bc3dd4b99ad56250fe95b32d68714880174355a85b7f504d0e00a93b4aa951ead1809bec41c85216f8c1bfa9ee91b5198949c68066f0387d32bfb9df687e882e2434b6d682141ece88a5bb0d529e016f48bc37109301625b044c5fa7200b56dd1b64cf238adf700ff3ee89c32a2edc2a5d2bf483ad200000128000000909930bee5b317d075ba5cbba4c8ab537bd0878e00f1c9c940d39beaa135fcc9208388cde74f44f55bb44d8a6067f7867dc92971e18e71c3ff54868db71f73df74207cb533e3e02dbc669fdd5bf27d8a89042cdffa03ff863617453c97bc9b50acf0f9729a283057555aa40a1f364098a9033f9b3e622b53c73c8a2d6245b32811ba323e37832a36f314e255ed362a46d600000090f9b68a55c28a7b95514f66a48e4b03574ee8e7b633b11645223c6c59cbe5db9592d8bf0eedc05fb9263dd076d7a88da4fbaa717a80920513b9c334e10b650a51b0c1a126e3b258a60457be4b7f165b2a0eb7902766aeae1699361bca6a1b99445a75d424c26ec0a4d21032e554f2e763030154d3a6569b962080a19c54e0ddb70f9d20f42d97079bc47b1f0715d876710000012800000090b05b85d84802f2d9c7e94a96c230de0b96e6aa81841cbc29a6c9a1431956847e8fab1c3fe5ea8c24122ff0bb34f6f51fd13deecdfd683e06919463107b54a092c09d807c7a1e9659000af33fb522e0d72a502e4771e499d8363ce7862d905d871d39b05cc7cb5cd289ae9ef4e2f0b85e0ad7df39f1afa28b668ec85d5ce28bf2c2f471b41c24e817949648705eac1d9700000090865c148a995dbfd76f82090b6e7187e665aa4f003f76dcac21fbfda3f6d3e980de7bcf4e870443e5cb8c44d330fc5a45cc2d3b8f545bb8c3156a7d35a5386ab0f37c3737d5b5e06e2b03dc2b94faefbd19bf102dfbb7ac31e502ce4aa05e0160bdcad6f5825fab8c27edd151420a9e28076ef7c36e1bb3c12b183b9583bd82922437045c95d90b491c2872f9333ee35200000128000000901923f96f8868c7e823671f03dc0ad821aaa7d584a8df286c102ba498b76cddaccfb1be4dba3bf8ef4cc68083de9a2e0ba54d28fd2c1b669f98416d84f35fa3d6629d2931d033f8c95a6223c5a0d32da127b9c0b641a641663e9f18d05a68ce7ed5ee82c661cd76c42e2501188897d26b29651201b725415d5674327977266df140e3ca8cebe0cc52f13da6cb5e76ba4500000090d4c3cd035d1089a3d2d3d70b9995cf63418da271a2830c5dc8e2a6b5ce5beada4f3aa71aa102dfc35cbbbe7554c1cf9c5ac6127b55076f423d56f4622ffae47d40adf14d672cff3fb3a15904437111ed2f04363c8bc4df171323ead3dd793ac098acc8f1c3f1685628cce426731cde6f20cf746c1e75f261c9eeb8c6912e587ed851c5d706707429a0d61d4ae839091f0000012800000090131088d98cd6cf8548a230c77e0cacdd54169209cb2ba9ae8beb9880dbd0484f6e3ab7f05e8271a2c161562f25d0361c6609bd5d846546c1f7300f535a8b244d855d7a2b751d32a1629d343b659336ed2349d52ef499bd19e73f9675d0a934890e702cc522cde8f9decc1306e48dd0560feb00a244a14d299f4270f4c8bed06e32a898a234f0dffdb4316fa7e814726e000000901bd6fa36327143be4d65f1ea02bf932a7d067055279544b2a922251af080bf87b207108d9e717161e41721a8020d13db9e07d93293694e4e4ba5ae88062a0181a329db4e5b087710c88ca915e516f1ea176b4dda8bcc83229442089af7f7acb0202bc1b3d032ac0d9105c8c80e5817912546bbe34f018f11ad09f5b1505a581242fe198fafefca4b8e7eeea30c2d03160000012800000090b736f7b6e2f224b3e7570f3f494619ae872d055f6183642a4933e435823d1962fc427256a0610cd81904592ccd45a9ef4613e7da8d8acd1a321f32fb60bc041f7c4613b51c7ca31128a9c2dc9536bd6027766dc17e67fdbf5afaac90c495b9a3efa7c13e10ab3f2e0589039484dbbf60116225004034c411594e2b111b107e4cfa1992d75fefd31669aa06d5bedda6a2000000905f29189ba16aa5615d50c871ec5fd77b0f2a4611984b53cfc504136e06c719ca4f9f5bf54e77cf861f2b2a0aed8501987e00d38166b0855417c31062c7d093ce4f7d444c53e11af0f554da4a59c82966086900c174d97530fefc2250711d88f733f5b16bd73811077d6715caec15e928252b1a85ed3d33609e1404329196a570f911d28639bb67206497a9ca1ba5a7460000012800000090b9d8da40a7e9373882123dcb553c8ed4926326d914feb1f0e724cef1616990552da304f2bbd5ecacf60e1b4fdf6535c28089378cfd500f22de3d62bdf7b52126de23cbf2ea09d7de12af2b168dc9406c28cc0435297e5a7aaa2113ce7b9b87e4ff3d855349e974f019132f3d0147c029162c39f38f83f18d3871e47a20590bf5e2ce92637924ac32ffc8862f29db695a00000090cc99bb3dbb2008b94591505ced444fa0e0f5994d5bd1544fedc76d1191097cd612bd7bd45c2cde7010bd0ad788c4c78bbd75f91bcbb6cd221df3b22f475c5b26e5f3cdc905e04a95904246a3ef73a8972ac85096f0ef02cbcacc38fa329469080b4080e2a9f34ebecd578ae79c53ae7e2d0ded061af7fb0cb654b6cf6be7bdc4e0d641978f1394451d12ea190d8c5e7000000ce4000001280000009093e2f8635a045c41c8d9257adda690fb5beb3a5d56dfe78b0dfc3e02be2a104df2ae35d92bfacdc93e35a8f166d24a1f97499ce93faa066176bc1f06a73d02311507712cb1ce5f04c63e27bfe3c3e0651e9c2f13d5cebdca4626f083a8f36aaa65aae4c74d704355b727d601d2305bbe0a121bb2ebc79160f5c11a8f9ac2b69915824c413cc1bccebab0f5fb550085ee000000909bd5f2117634bc2eb6ac1558ee63de19c9906d306a91e434cffb75722aa6b2b2604a84e4ffa075d03226dc5045b16f71f501235820340e4da21c8b46c7b2a4e61f1e0b69cb985a34257c38569ccd0f1226b948e0f2ce68b0ab7849e9728b0517fb9890846f446661a335854e91c14e83302f87c6ce77d02db8e81bd3ed3fcd9dfc9a2c00ead57cf0b147b65512681fcd0000012800000090c0ff69960190678d193dddb5d32f220bec1e0a9ec238240925558cf7dade6be9038dd0039f31513a96a05c05cad1d883f492d42109006e18aba86c16cb6e0fb876a28df71d8e89fa02060bac14ef04cf0e1e34520905dfa33602d49a96ca766a2b46eeb514153c0f13e057ca2a0ee0ec24374b23c5fd922cb266dbda4ea04b879baff83583e3eeb12831fca1eecaf0cf0000009014f4354e9f6108f7ed4c06e8b6f4ba9040b9261d6d22b677d848590958d43a5507852f3acfb45831a25f4dcbe431ac979204bd0dea3f6623c04ddac1870014371581b84ef68f307342c25569987ebf9c10c8584ab1d72e995795b38b52ec6a3ad522cc1c9517e05154e8157b1d6f87f02a428d121d52569eee3bd8bdd9b330500e882390d0fad2d419755a17fc27213300000128000000901c0728fdd04973e9906fd1b541bff24461f9403a97802a8129ccfbf0bbc7cff8f81cb9fec321e2186365860d08202bf3f7168a618eb6342fd117c213d9d6428fc1537d3e8a01cd4fe21c0442bca55cbf16f3360c61254e7b2d089f38eefa4b283d540cab1e674c833f6f1d98b39369e92989531b35d6e006557c2916d7cc7bc5df35be0d64c8f497278ef232d58093a900000090be5eb11fcb7229bedafb364856d9502f66506f9328fd44644880c9e8e183ae0c861b7720b70af77271bc72291abab5963445b8be8ec35a402f5b23efc77e49aee0b6c65a99bce778b5627b5fee60a0c42d8c9cbe8e39bf439608cff529602ccd005c151987f7bdee3a2bafef9e0dc3122b46d03f266625d5ca0895cc527b6fee308661e23c20639c9bdba02b3ae71c8f0000012800000090ea504b252805bac5de56d205a6297cf38a90d101aacb4538f26a41adf9e120494e2daa93318788a151777b0e8fb5e0444bb0de040f684b48e113a3bd7d43e280263fb782adbb690053923bb0eaa7c0f11d89cebca94e1077de29e1f13450017f2d39e5da7b738a58158467680b87e8a916c6385cd1249ec51e5e2922f249b107ed353789e24e45208805602f96a432ee0000009009852850c074a233370d7d9704885ebbf57d13ddc416cd3809d7ed1591b05f0716560e8328f1efd042a4d1ade629ee9b693ae5866fa1f3970e2d91f41a03250126330bd6e27fb64bf6312c7600770f542be1632e295fb6d9fe45bf91b1030cd0c3150fe3f65ab4d1d2d017c3839898781a6e1eb8f2f4032f4dfd5f0a600ef72662986176bb14b4b7a9c99f66f429106a0000012800000090b9927e80cdb316ac5a9e7d5aefcf6ac01d489ede79e20af58377baac0bd74a49f19db328daeaa5ec07d4ecf7ba55148032c4989ab1f8c30d32cfb74d7a10dc6b9b3b62dc7a27a8db24688e5683038a541f38971f13f8da2bbb892e010c0ef93df1ed8b7a960fe65e7efaf2f274f3869c1afcdcc299eb2080c41e9c5676d524195e22e79730f662f20b04c5c640b233550000009080bd76f074f19aecc02adb0d7b30514b3878b31726f96fe25b68f1fce3b3b191d72f4139d497900637e2c28643f24f581949d196949acded4c29a8a6e300769e5c58d1cc5ec8ccd76006ef4c20d700c01747378dcb6bae7af6907dfc8ea88a7c23f4eb3d32f33c6da243702b6f1cf7f8155920309ef26019c05564716d2c55381a86bcc98712c7a0295832c9770eda20000001280000009011951b508ec3fc32865cde3f8b14e4314665a92561b35282c4b5f1261ad1e28e881900b80d70dc13e96680a528c997f09ed77899928a287f17a8eff3bee09a839f851153bdde9d1577a89c9d48c74f6a0557849194971f6237e73fa31f725b2a1a878914521b094863164d5f5891b1300c41c7999762752ca2adcc89de07f4e1d9b3ba5a1cfef2204561563c5c73901600000090ed0097c38e390151b701a7ac242f6e73c79fac1e0cf1dc2f66fb29c6002e0f6db13a6d6027cf18c4e6308caa17da58ca8d48acc59805585ea6b006facb44654f6f754f9725b685bb5c4ded4de2c690a72aa7923dacd13f83722f0893ebee4b3ee8ce7b8a643acb94ed2925f282ff0c4818d6a0713c5227e13b9e28e9b58cc913d2e66750c5ac23e16ce76598472d6e9d00000128000000907c0e86120a5a037229ee9c3a6ea20bf194396f08ded24d811339ba90f1ae02744218270e0b2f3115ba455b5409284da7031e56eea2eb96d1204eb02c2e6ebb8a0b4f3e98847607cb6b2279958b0197e52ab0e29034302cf56b533d3157b5a419665e50428cced5f15097cd3ec2ea34951d7113c4a2fcf976adc69ae623c2557c19589c89907106001f1b25d2b7d9537c00000090745e83cd5102da600a92eceb7c2712d2ea6704b8a2cc7105dd788ee043cc0f0b23077b5607903c7053aa17c4986e4e9e8c3c9767070b6a814e6e4a89c904b12308c11a09cdafe6faf48b2630e8ad24552d5ea409a7ad8b4b9b117ddb852d61e70d25b30f70d66e0c7907e5c16c87376209020da80311afdc646841e86b55f89c920bfafc0623fd73585eff854c10ddc20000012800000090a626f21ac7482cd903148ee4fe9fbcb0bb37c2b0c25f78682b40d2c65212b9f2907b0d0ba6b357ad998ac2dacdb23a6d626ea1f240967b92a3aa492b6bc3f09a57242e4d2a8d50636f6761ea8738488b0c19b34b570e8823b97dce37517dc9b24639c7410183ef3261a85fada34c0ca510ff73ada4daacc553482d68d672cbb3f674c8f2f0751a37245edf6d5695557d0000009092b9b1bef2731730812331aadc03fdc1aa7603e10f72def23023535b475b25182ef02e5bee562306197922453c7e28c323463902cc16a0295d2cebd6e1cbc85715e8dfa9c8d9ab7ac810e29350360bce02d3ce1075f6198042f4b657d834594564a00700d5e457e7838a00b590ef55550b5893c4bfe5f65fce253caf7141e83111d74368eb8eee18004964feb64dd8bd000001280000009011c36f8adfbb22c9c3d657f7564ee4eb30d37fbd30907b2a0561bdad676980ca96254999cba01fa8050a433a1d0ec2e49722eeb016279c2a51469725498969edc938823df02655a402418f3a6b8a28c70d5d89a7532bc47ab408e4a634bde7976bb2def28668d34b131909defd9379ef0c3c1d4294e1ff613c7423ef3b6e575ee39591b9be108055714df1789da636080000009004dcb05ab956ff0b68077fc113fd949ac3fcbed71a7605d42c3a09174a6fd573d4f66e407e468a1f51fe670b01928a1b93179fee05fd11b661f14bdd6518f61f5e0bb6aa55060e1b8b3a9985cf9049c41a999e111b4a3c3422fa6a55fa8f0dfbe839a4d5f51213c3915f1f6aeb85c7d00903b9c405878112fe5263e476101e1b53a2d2804929612759e2b5354e09ca4c0000012800000090305141bceee489d00e1951280d90286be9dfde8a0c23e802490da8807d919892fff6dc32c9a66663ac0762043b0eb2376390aa1b282bae4d337ad9e6f41d6720ee0f3d0315c1e19b81fd2fafae61de5504eb79685817659363e38f998e7ec51f77fec0f60474e14b5ba3bbe63bd3874a0dafc5fcae9f9258e277597458fdadcee0e822c56a55248acb3700a463154d69000000905a754dd00b1c72387b2b59bba5fe3ab77cf0a4538ddf9f8f658db80c6ec2a1327637e5c05e9ededd5d4da46f842feb545f8eeef74fd5a5a214eb5bc46966c44040e5fd9d2a87c2b15042f987923722a80e7d3a43fe74774c3681b1c792a34fb0a4f5de14e1c6f5af9fed1dea7694dd6c296d23c677c781280cc6c2970227eaa0ca6d690d1f738e8ae5ca76bad02a291e0000012800000090988af0a1f57a9dee97278df9b1fccd62a21cadfb56160960eed6abefc95d5f0fa96cc2e3bce75894bff947d855309e264c75eb95c4532de49e810e59abc43ff98d08fdb9e3b0f3ae561e033983c7ab391f521efd6af2675bea296cb4f257850de0e3ff28205b935b76b05d3584222e0a067a336c8be6a365c107fa95959563cbc11a1c2f63914d41bd5c4b0c698b0d2f00000090674e68e7621622e4a22d90d7aa2a1651bff1b53bd4b9f74e4da2c3a4bdd05513206950613958362efe44c16cf3d2133419737c395c0ef4f04385ee580a561ae1647db60f3da047b382789331edb670be103fba6587fe6f26b1cea9bc26820dcc65ab1a9023fef37e8e52f0cdf5fc69c5083b8f5855fe15e138af8136188b9b0b2d80aa2a60b895d4bc1b0ebe0e4121e3", - "calldataHash": "0x0ef928e73adbc5f53790a7591f274b0f4179a533e21da23f2ed7defe5af7bf41", + "archive": "0x25363e47eb431704f0a4b33fae75effc7c34f2591315970bc9b3adaefd5780fc", + "body": "0x000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000014100000000000000000000000000000000000000000000000000000000000001420000000000000000000000000000000000000000000000000000000000000143000000000000000000000000000000000000000000000000000000000000014400000000000000000000000000000000000000000000000000000000000001450000000000000000000000000000000000000000000000000000000000000146000000000000000000000000000000000000000000000000000000000000014700000000000000000000000000000000000000000000000000000000000001480000000000000000000000000000000000000000000000000000000000000149000000000000000000000000000000000000000000000000000000000000014a000000000000000000000000000000000000000000000000000000000000014b000000000000000000000000000000000000000000000000000000000000014c000000000000000000000000000000000000000000000000000000000000014d000000000000000000000000000000000000000000000000000000000000014e000000000000000000000000000000000000000000000000000000000000014f0000000000000000000000000000000000000000000000000000000000000150000000000000000000000000000000000000000000000000000000000000015100000000000000000000000000000000000000000000000000000000000001520000000000000000000000000000000000000000000000000000000000000153000000000000000000000000000000000000000000000000000000000000015400000000000000000000000000000000000000000000000000000000000001550000000000000000000000000000000000000000000000000000000000000156000000000000000000000000000000000000000000000000000000000000015700000000000000000000000000000000000000000000000000000000000001580000000000000000000000000000000000000000000000000000000000000159000000000000000000000000000000000000000000000000000000000000015a000000000000000000000000000000000000000000000000000000000000015b000000000000000000000000000000000000000000000000000000000000015c000000000000000000000000000000000000000000000000000000000000015d000000000000000000000000000000000000000000000000000000000000015e000000000000000000000000000000000000000000000000000000000000015f0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000016100000000000000000000000000000000000000000000000000000000000001620000000000000000000000000000000000000000000000000000000000000163000000000000000000000000000000000000000000000000000000000000016400000000000000000000000000000000000000000000000000000000000001650000000000000000000000000000000000000000000000000000000000000166000000000000000000000000000000000000000000000000000000000000016700000000000000000000000000000000000000000000000000000000000001680000000000000000000000000000000000000000000000000000000000000169000000000000000000000000000000000000000000000000000000000000016a000000000000000000000000000000000000000000000000000000000000016b000000000000000000000000000000000000000000000000000000000000016c000000000000000000000000000000000000000000000000000000000000016d000000000000000000000000000000000000000000000000000000000000016e000000000000000000000000000000000000000000000000000000000000016f0000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000017100000000000000000000000000000000000000000000000000000000000001720000000000000000000000000000000000000000000000000000000000000173000000000000000000000000000000000000000000000000000000000000017400000000000000000000000000000000000000000000000000000000000001750000000000000000000000000000000000000000000000000000000000000176000000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000001780000000000000000000000000000000000000000000000000000000000000179000000000000000000000000000000000000000000000000000000000000017a000000000000000000000000000000000000000000000000000000000000017b000000000000000000000000000000000000000000000000000000000000017c000000000000000000000000000000000000000000000000000000000000017d000000000000000000000000000000000000000000000000000000000000017e000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000018100000000000000000000000000000000000000000000000000000000000001820000000000000000000000000000000000000000000000000000000000000183000000000000000000000000000000000000000000000000000000000000018400000000000000000000000000000000000000000000000000000000000001850000000000000000000000000000000000000000000000000000000000000186000000000000000000000000000000000000000000000000000000000000018700000000000000000000000000000000000000000000000000000000000001880000000000000000000000000000000000000000000000000000000000000189000000000000000000000000000000000000000000000000000000000000018a000000000000000000000000000000000000000000000000000000000000018b000000000000000000000000000000000000000000000000000000000000018c000000000000000000000000000000000000000000000000000000000000018d000000000000000000000000000000000000000000000000000000000000018e000000000000000000000000000000000000000000000000000000000000018f0000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000019100000000000000000000000000000000000000000000000000000000000001920000000000000000000000000000000000000000000000000000000000000193000000000000000000000000000000000000000000000000000000000000019400000000000000000000000000000000000000000000000000000000000001950000000000000000000000000000000000000000000000000000000000000196000000000000000000000000000000000000000000000000000000000000019700000000000000000000000000000000000000000000000000000000000001980000000000000000000000000000000000000000000000000000000000000199000000000000000000000000000000000000000000000000000000000000019a000000000000000000000000000000000000000000000000000000000000019b000000000000000000000000000000000000000000000000000000000000019c000000000000000000000000000000000000000000000000000000000000019d000000000000000000000000000000000000000000000000000000000000019e000000000000000000000000000000000000000000000000000000000000019f00000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001a100000000000000000000000000000000000000000000000000000000000001a200000000000000000000000000000000000000000000000000000000000001a300000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000000001a500000000000000000000000000000000000000000000000000000000000001a600000000000000000000000000000000000000000000000000000000000001a700000000000000000000000000000000000000000000000000000000000001a800000000000000000000000000000000000000000000000000000000000001a900000000000000000000000000000000000000000000000000000000000001aa00000000000000000000000000000000000000000000000000000000000001ab00000000000000000000000000000000000000000000000000000000000001ac00000000000000000000000000000000000000000000000000000000000001ad00000000000000000000000000000000000000000000000000000000000001ae00000000000000000000000000000000000000000000000000000000000001af00000000000000000000000000000000000000000000000000000000000001b000000000000000000000000000000000000000000000000000000000000001b100000000000000000000000000000000000000000000000000000000000001b200000000000000000000000000000000000000000000000000000000000001b300000000000000000000000000000000000000000000000000000000000001b400000000000000000000000000000000000000000000000000000000000001b500000000000000000000000000000000000000000000000000000000000001b600000000000000000000000000000000000000000000000000000000000001b700000000000000000000000000000000000000000000000000000000000001b800000000000000000000000000000000000000000000000000000000000001b900000000000000000000000000000000000000000000000000000000000001ba00000000000000000000000000000000000000000000000000000000000001bb00000000000000000000000000000000000000000000000000000000000001bc00000000000000000000000000000000000000000000000000000000000001bd00000000000000000000000000000000000000000000000000000000000001be00000000000000000000000000000000000000000000000000000000000001bf00000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c300000000000000000000000000000000000000000000000000000000000001c400000000000000000000000000000000000000000000000000000000000001c500000000000000000000000000000000000000000000000000000000000001c600000000000000000000000000000000000000000000000000000000000001c700000000000000000000000000000000000000000000000000000000000001c800000000000000000000000000000000000000000000000000000000000001c900000000000000000000000000000000000000000000000000000000000001ca00000000000000000000000000000000000000000000000000000000000001cb00000000000000000000000000000000000000000000000000000000000001cc00000000000000000000000000000000000000000000000000000000000001cd00000000000000000000000000000000000000000000000000000000000001ce00000000000000000000000000000000000000000000000000000000000001cf00000000000000000000000000000000000000000000000000000000000001d000000000000000000000000000000000000000000000000000000000000001d100000000000000000000000000000000000000000000000000000000000001d200000000000000000000000000000000000000000000000000000000000001d300000000000000000000000000000000000000000000000000000000000001d400000000000000000000000000000000000000000000000000000000000001d500000000000000000000000000000000000000000000000000000000000001d600000000000000000000000000000000000000000000000000000000000001d700000000000000000000000000000000000000000000000000000000000001d800000000000000000000000000000000000000000000000000000000000001d900000000000000000000000000000000000000000000000000000000000001da00000000000000000000000000000000000000000000000000000000000001db00000000000000000000000000000000000000000000000000000000000001dc00000000000000000000000000000000000000000000000000000000000001dd00000000000000000000000000000000000000000000000000000000000001de00000000000000000000000000000000000000000000000000000000000001df00000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000001e100000000000000000000000000000000000000000000000000000000000001e200000000000000000000000000000000000000000000000000000000000001e300000000000000000000000000000000000000000000000000000000000001e400000000000000000000000000000000000000000000000000000000000001e500000000000000000000000000000000000000000000000000000000000001e600000000000000000000000000000000000000000000000000000000000001e700000000000000000000000000000000000000000000000000000000000001e800000000000000000000000000000000000000000000000000000000000001e900000000000000000000000000000000000000000000000000000000000001ea00000000000000000000000000000000000000000000000000000000000001eb00000000000000000000000000000000000000000000000000000000000001ec00000000000000000000000000000000000000000000000000000000000001ed00000000000000000000000000000000000000000000000000000000000001ee00000000000000000000000000000000000000000000000000000000000001ef00000000000000000000000000000000000000000000000000000000000001f000000000000000000000000000000000000000000000000000000000000001f100000000000000000000000000000000000000000000000000000000000001f200000000000000000000000000000000000000000000000000000000000001f300000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f500000000000000000000000000000000000000000000000000000000000001f600000000000000000000000000000000000000000000000000000000000001f700000000000000000000000000000000000000000000000000000000000001f800000000000000000000000000000000000000000000000000000000000001f900000000000000000000000000000000000000000000000000000000000001fa00000000000000000000000000000000000000000000000000000000000001fb00000000000000000000000000000000000000000000000000000000000001fc00000000000000000000000000000000000000000000000000000000000001fd00000000000000000000000000000000000000000000000000000000000001fe00000000000000000000000000000000000000000000000000000000000001ff0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020100000000000000000000000000000000000000000000000000000000000002020000000000000000000000000000000000000000000000000000000000000203000000000000000000000000000000000000000000000000000000000000020400000000000000000000000000000000000000000000000000000000000002050000000000000000000000000000000000000000000000000000000000000206000000000000000000000000000000000000000000000000000000000000020700000000000000000000000000000000000000000000000000000000000002080000000000000000000000000000000000000000000000000000000000000209000000000000000000000000000000000000000000000000000000000000020a000000000000000000000000000000000000000000000000000000000000020b000000000000000000000000000000000000000000000000000000000000020c000000000000000000000000000000000000000000000000000000000000020d000000000000000000000000000000000000000000000000000000000000020e000000000000000000000000000000000000000000000000000000000000020f0000000000000000000000000000000000000000000000000000000000000210000000000000000000000000000000000000000000000000000000000000021100000000000000000000000000000000000000000000000000000000000002120000000000000000000000000000000000000000000000000000000000000213000000000000000000000000000000000000000000000000000000000000021400000000000000000000000000000000000000000000000000000000000002150000000000000000000000000000000000000000000000000000000000000216000000000000000000000000000000000000000000000000000000000000021700000000000000000000000000000000000000000000000000000000000002180000000000000000000000000000000000000000000000000000000000000219000000000000000000000000000000000000000000000000000000000000021a000000000000000000000000000000000000000000000000000000000000021b000000000000000000000000000000000000000000000000000000000000021c000000000000000000000000000000000000000000000000000000000000021d000000000000000000000000000000000000000000000000000000000000021e000000000000000000000000000000000000000000000000000000000000021f0000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000022100000000000000000000000000000000000000000000000000000000000002220000000000000000000000000000000000000000000000000000000000000223000000000000000000000000000000000000000000000000000000000000022400000000000000000000000000000000000000000000000000000000000002250000000000000000000000000000000000000000000000000000000000000226000000000000000000000000000000000000000000000000000000000000022700000000000000000000000000000000000000000000000000000000000002280000000000000000000000000000000000000000000000000000000000000229000000000000000000000000000000000000000000000000000000000000022a000000000000000000000000000000000000000000000000000000000000022b000000000000000000000000000000000000000000000000000000000000022c000000000000000000000000000000000000000000000000000000000000022d000000000000000000000000000000000000000000000000000000000000022e000000000000000000000000000000000000000000000000000000000000022f0000000000000000000000000000000000000000000000000000000000000230000000000000000000000000000000000000000000000000000000000000023100000000000000000000000000000000000000000000000000000000000002320000000000000000000000000000000000000000000000000000000000000233000000000000000000000000000000000000000000000000000000000000023400000000000000000000000000000000000000000000000000000000000002350000000000000000000000000000000000000000000000000000000000000236000000000000000000000000000000000000000000000000000000000000023700000000000000000000000000000000000000000000000000000000000002380000000000000000000000000000000000000000000000000000000000000239000000000000000000000000000000000000000000000000000000000000023a000000000000000000000000000000000000000000000000000000000000023b000000000000000000000000000000000000000000000000000000000000023c000000000000000000000000000000000000000000000000000000000000023d000000000000000000000000000000000000000000000000000000000000023e000000000000000000000000000000000000000000000000000000000000023f000001000000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000024100000000000000000000000000000000000000000000000000000000000002420000000000000000000000000000000000000000000000000000000000000243000000000000000000000000000000000000000000000000000000000000024400000000000000000000000000000000000000000000000000000000000002450000000000000000000000000000000000000000000000000000000000000246000000000000000000000000000000000000000000000000000000000000024700000000000000000000000000000000000000000000000000000000000002480000000000000000000000000000000000000000000000000000000000000249000000000000000000000000000000000000000000000000000000000000024a000000000000000000000000000000000000000000000000000000000000024b000000000000000000000000000000000000000000000000000000000000024c000000000000000000000000000000000000000000000000000000000000024d000000000000000000000000000000000000000000000000000000000000024e000000000000000000000000000000000000000000000000000000000000024f0000000000000000000000000000000000000000000000000000000000000250000000000000000000000000000000000000000000000000000000000000025100000000000000000000000000000000000000000000000000000000000002520000000000000000000000000000000000000000000000000000000000000253000000000000000000000000000000000000000000000000000000000000025400000000000000000000000000000000000000000000000000000000000002550000000000000000000000000000000000000000000000000000000000000256000000000000000000000000000000000000000000000000000000000000025700000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000000259000000000000000000000000000000000000000000000000000000000000025a000000000000000000000000000000000000000000000000000000000000025b000000000000000000000000000000000000000000000000000000000000025c000000000000000000000000000000000000000000000000000000000000025d000000000000000000000000000000000000000000000000000000000000025e000000000000000000000000000000000000000000000000000000000000025f0000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000026100000000000000000000000000000000000000000000000000000000000002620000000000000000000000000000000000000000000000000000000000000263000000000000000000000000000000000000000000000000000000000000026400000000000000000000000000000000000000000000000000000000000002650000000000000000000000000000000000000000000000000000000000000266000000000000000000000000000000000000000000000000000000000000026700000000000000000000000000000000000000000000000000000000000002680000000000000000000000000000000000000000000000000000000000000269000000000000000000000000000000000000000000000000000000000000026a000000000000000000000000000000000000000000000000000000000000026b000000000000000000000000000000000000000000000000000000000000026c000000000000000000000000000000000000000000000000000000000000026d000000000000000000000000000000000000000000000000000000000000026e000000000000000000000000000000000000000000000000000000000000026f0000000000000000000000000000000000000000000000000000000000000270000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000002720000000000000000000000000000000000000000000000000000000000000273000000000000000000000000000000000000000000000000000000000000027400000000000000000000000000000000000000000000000000000000000002750000000000000000000000000000000000000000000000000000000000000276000000000000000000000000000000000000000000000000000000000000027700000000000000000000000000000000000000000000000000000000000002780000000000000000000000000000000000000000000000000000000000000279000000000000000000000000000000000000000000000000000000000000027a000000000000000000000000000000000000000000000000000000000000027b000000000000000000000000000000000000000000000000000000000000027c000000000000000000000000000000000000000000000000000000000000027d000000000000000000000000000000000000000000000000000000000000027e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000028100000000000000000000000000000000000000000000000000000000000002820000000000000000000000000000000000000000000000000000000000000283000000000000000000000000000000000000000000000000000000000000028400000000000000000000000000000000000000000000000000000000000002850000000000000000000000000000000000000000000000000000000000000286000000000000000000000000000000000000000000000000000000000000028700000000000000000000000000000000000000000000000000000000000002880000000000000000000000000000000000000000000000000000000000000289000000000000000000000000000000000000000000000000000000000000028a000000000000000000000000000000000000000000000000000000000000028b000000000000000000000000000000000000000000000000000000000000028c000000000000000000000000000000000000000000000000000000000000028d000000000000000000000000000000000000000000000000000000000000028e000000000000000000000000000000000000000000000000000000000000028f0000000000000000000000000000000000000000000000000000000000000290000000000000000000000000000000000000000000000000000000000000029100000000000000000000000000000000000000000000000000000000000002920000000000000000000000000000000000000000000000000000000000000293000000000000000000000000000000000000000000000000000000000000029400000000000000000000000000000000000000000000000000000000000002950000000000000000000000000000000000000000000000000000000000000296000000000000000000000000000000000000000000000000000000000000029700000000000000000000000000000000000000000000000000000000000002980000000000000000000000000000000000000000000000000000000000000299000000000000000000000000000000000000000000000000000000000000029a000000000000000000000000000000000000000000000000000000000000029b000000000000000000000000000000000000000000000000000000000000029c000000000000000000000000000000000000000000000000000000000000029d000000000000000000000000000000000000000000000000000000000000029e000000000000000000000000000000000000000000000000000000000000029f00000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002a100000000000000000000000000000000000000000000000000000000000002a200000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000002a400000000000000000000000000000000000000000000000000000000000002a500000000000000000000000000000000000000000000000000000000000002a600000000000000000000000000000000000000000000000000000000000002a700000000000000000000000000000000000000000000000000000000000002a800000000000000000000000000000000000000000000000000000000000002a900000000000000000000000000000000000000000000000000000000000002aa00000000000000000000000000000000000000000000000000000000000002ab00000000000000000000000000000000000000000000000000000000000002ac00000000000000000000000000000000000000000000000000000000000002ad00000000000000000000000000000000000000000000000000000000000002ae00000000000000000000000000000000000000000000000000000000000002af00000000000000000000000000000000000000000000000000000000000002b000000000000000000000000000000000000000000000000000000000000002b100000000000000000000000000000000000000000000000000000000000002b200000000000000000000000000000000000000000000000000000000000002b300000000000000000000000000000000000000000000000000000000000002b400000000000000000000000000000000000000000000000000000000000002b500000000000000000000000000000000000000000000000000000000000002b600000000000000000000000000000000000000000000000000000000000002b700000000000000000000000000000000000000000000000000000000000002b800000000000000000000000000000000000000000000000000000000000002b900000000000000000000000000000000000000000000000000000000000002ba00000000000000000000000000000000000000000000000000000000000002bb00000000000000000000000000000000000000000000000000000000000002bc00000000000000000000000000000000000000000000000000000000000002bd00000000000000000000000000000000000000000000000000000000000002be000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002c100000000000000000000000000000000000000000000000000000000000002c200000000000000000000000000000000000000000000000000000000000002c300000000000000000000000000000000000000000000000000000000000002c400000000000000000000000000000000000000000000000000000000000002c500000000000000000000000000000000000000000000000000000000000002c600000000000000000000000000000000000000000000000000000000000002c700000000000000000000000000000000000000000000000000000000000002c800000000000000000000000000000000000000000000000000000000000002c900000000000000000000000000000000000000000000000000000000000002ca00000000000000000000000000000000000000000000000000000000000002cb00000000000000000000000000000000000000000000000000000000000002cc00000000000000000000000000000000000000000000000000000000000002cd00000000000000000000000000000000000000000000000000000000000002ce00000000000000000000000000000000000000000000000000000000000002cf00000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000002d100000000000000000000000000000000000000000000000000000000000002d200000000000000000000000000000000000000000000000000000000000002d300000000000000000000000000000000000000000000000000000000000002d400000000000000000000000000000000000000000000000000000000000002d500000000000000000000000000000000000000000000000000000000000002d600000000000000000000000000000000000000000000000000000000000002d700000000000000000000000000000000000000000000000000000000000002d800000000000000000000000000000000000000000000000000000000000002d900000000000000000000000000000000000000000000000000000000000002da00000000000000000000000000000000000000000000000000000000000002db00000000000000000000000000000000000000000000000000000000000002dc00000000000000000000000000000000000000000000000000000000000002dd00000000000000000000000000000000000000000000000000000000000002de00000000000000000000000000000000000000000000000000000000000002df00000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000002e100000000000000000000000000000000000000000000000000000000000002e200000000000000000000000000000000000000000000000000000000000002e300000000000000000000000000000000000000000000000000000000000002e400000000000000000000000000000000000000000000000000000000000002e500000000000000000000000000000000000000000000000000000000000002e600000000000000000000000000000000000000000000000000000000000002e700000000000000000000000000000000000000000000000000000000000002e800000000000000000000000000000000000000000000000000000000000002e900000000000000000000000000000000000000000000000000000000000002ea00000000000000000000000000000000000000000000000000000000000002eb00000000000000000000000000000000000000000000000000000000000002ec00000000000000000000000000000000000000000000000000000000000002ed00000000000000000000000000000000000000000000000000000000000002ee00000000000000000000000000000000000000000000000000000000000002ef00000000000000000000000000000000000000000000000000000000000002f000000000000000000000000000000000000000000000000000000000000002f100000000000000000000000000000000000000000000000000000000000002f200000000000000000000000000000000000000000000000000000000000002f300000000000000000000000000000000000000000000000000000000000002f400000000000000000000000000000000000000000000000000000000000002f500000000000000000000000000000000000000000000000000000000000002f600000000000000000000000000000000000000000000000000000000000002f700000000000000000000000000000000000000000000000000000000000002f800000000000000000000000000000000000000000000000000000000000002f900000000000000000000000000000000000000000000000000000000000002fa00000000000000000000000000000000000000000000000000000000000002fb00000000000000000000000000000000000000000000000000000000000002fc00000000000000000000000000000000000000000000000000000000000002fd00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030100000000000000000000000000000000000000000000000000000000000003020000000000000000000000000000000000000000000000000000000000000303000000000000000000000000000000000000000000000000000000000000030400000000000000000000000000000000000000000000000000000000000003050000000000000000000000000000000000000000000000000000000000000306000000000000000000000000000000000000000000000000000000000000030700000000000000000000000000000000000000000000000000000000000003080000000000000000000000000000000000000000000000000000000000000309000000000000000000000000000000000000000000000000000000000000030a000000000000000000000000000000000000000000000000000000000000030b000000000000000000000000000000000000000000000000000000000000030c000000000000000000000000000000000000000000000000000000000000030d000000000000000000000000000000000000000000000000000000000000030e000000000000000000000000000000000000000000000000000000000000030f0000000000000000000000000000000000000000000000000000000000000310000000000000000000000000000000000000000000000000000000000000031100000000000000000000000000000000000000000000000000000000000003120000000000000000000000000000000000000000000000000000000000000313000000000000000000000000000000000000000000000000000000000000031400000000000000000000000000000000000000000000000000000000000003150000000000000000000000000000000000000000000000000000000000000316000000000000000000000000000000000000000000000000000000000000031700000000000000000000000000000000000000000000000000000000000003180000000000000000000000000000000000000000000000000000000000000319000000000000000000000000000000000000000000000000000000000000031a000000000000000000000000000000000000000000000000000000000000031b000000000000000000000000000000000000000000000000000000000000031c000000000000000000000000000000000000000000000000000000000000031d000000000000000000000000000000000000000000000000000000000000031e000000000000000000000000000000000000000000000000000000000000031f0000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000032100000000000000000000000000000000000000000000000000000000000003220000000000000000000000000000000000000000000000000000000000000323000000000000000000000000000000000000000000000000000000000000032400000000000000000000000000000000000000000000000000000000000003250000000000000000000000000000000000000000000000000000000000000326000000000000000000000000000000000000000000000000000000000000032700000000000000000000000000000000000000000000000000000000000003280000000000000000000000000000000000000000000000000000000000000329000000000000000000000000000000000000000000000000000000000000032a000000000000000000000000000000000000000000000000000000000000032b000000000000000000000000000000000000000000000000000000000000032c000000000000000000000000000000000000000000000000000000000000032d000000000000000000000000000000000000000000000000000000000000032e000000000000000000000000000000000000000000000000000000000000032f0000000000000000000000000000000000000000000000000000000000000330000000000000000000000000000000000000000000000000000000000000033100000000000000000000000000000000000000000000000000000000000003320000000000000000000000000000000000000000000000000000000000000333000000000000000000000000000000000000000000000000000000000000033400000000000000000000000000000000000000000000000000000000000003350000000000000000000000000000000000000000000000000000000000000336000000000000000000000000000000000000000000000000000000000000033700000000000000000000000000000000000000000000000000000000000003380000000000000000000000000000000000000000000000000000000000000339000000000000000000000000000000000000000000000000000000000000033a000000000000000000000000000000000000000000000000000000000000033b000000000000000000000000000000000000000000000000000000000000033c000000000000000000000000000000000000000000000000000000000000033d000000000000000000000000000000000000000000000000000000000000033e0000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000054a0000000000000000000000000000000000000000000000000000000000000541000000000000000000000000000000000000000000000000000000000000054b0000000000000000000000000000000000000000000000000000000000000542000000000000000000000000000000000000000000000000000000000000054c0000000000000000000000000000000000000000000000000000000000000543000000000000000000000000000000000000000000000000000000000000054d0000000000000000000000000000000000000000000000000000000000000544000000000000000000000000000000000000000000000000000000000000054e0000000000000000000000000000000000000000000000000000000000000545000000000000000000000000000000000000000000000000000000000000054f00000000000000000000000000000000000000000000000000000000000005460000000000000000000000000000000000000000000000000000000000000550000000000000000000000000000000000000000000000000000000000000054700000000000000000000000000000000000000000000000000000000000005510000000000000000000000000000000000000000000000000000000000000548000000000000000000000000000000000000000000000000000000000000055200000000000000000000000000000000000000000000000000000000000005490000000000000000000000000000000000000000000000000000000000000553000000000000000000000000000000000000000000000000000000000000054a0000000000000000000000000000000000000000000000000000000000000554000000000000000000000000000000000000000000000000000000000000054b0000000000000000000000000000000000000000000000000000000000000555000000000000000000000000000000000000000000000000000000000000054c0000000000000000000000000000000000000000000000000000000000000556000000000000000000000000000000000000000000000000000000000000054d0000000000000000000000000000000000000000000000000000000000000557000000000000000000000000000000000000000000000000000000000000054e0000000000000000000000000000000000000000000000000000000000000558000000000000000000000000000000000000000000000000000000000000054f00000000000000000000000000000000000000000000000000000000000005590000000000000000000000000000000000000000000000000000000000000580000000000000000000000000000000000000000000000000000000000000058a0000000000000000000000000000000000000000000000000000000000000581000000000000000000000000000000000000000000000000000000000000058b0000000000000000000000000000000000000000000000000000000000000582000000000000000000000000000000000000000000000000000000000000058c0000000000000000000000000000000000000000000000000000000000000583000000000000000000000000000000000000000000000000000000000000058d0000000000000000000000000000000000000000000000000000000000000584000000000000000000000000000000000000000000000000000000000000058e0000000000000000000000000000000000000000000000000000000000000585000000000000000000000000000000000000000000000000000000000000058f00000000000000000000000000000000000000000000000000000000000005860000000000000000000000000000000000000000000000000000000000000590000000000000000000000000000000000000000000000000000000000000058700000000000000000000000000000000000000000000000000000000000005910000000000000000000000000000000000000000000000000000000000000588000000000000000000000000000000000000000000000000000000000000059200000000000000000000000000000000000000000000000000000000000005890000000000000000000000000000000000000000000000000000000000000593000000000000000000000000000000000000000000000000000000000000058a0000000000000000000000000000000000000000000000000000000000000594000000000000000000000000000000000000000000000000000000000000058b0000000000000000000000000000000000000000000000000000000000000595000000000000000000000000000000000000000000000000000000000000058c0000000000000000000000000000000000000000000000000000000000000596000000000000000000000000000000000000000000000000000000000000058d0000000000000000000000000000000000000000000000000000000000000597000000000000000000000000000000000000000000000000000000000000058e0000000000000000000000000000000000000000000000000000000000000598000000000000000000000000000000000000000000000000000000000000058f000000000000000000000000000000000000000000000000000000000000059900000000000000000000000000000000000000000000000000000000000005c000000000000000000000000000000000000000000000000000000000000005ca00000000000000000000000000000000000000000000000000000000000005c100000000000000000000000000000000000000000000000000000000000005cb00000000000000000000000000000000000000000000000000000000000005c200000000000000000000000000000000000000000000000000000000000005cc00000000000000000000000000000000000000000000000000000000000005c300000000000000000000000000000000000000000000000000000000000005cd00000000000000000000000000000000000000000000000000000000000005c400000000000000000000000000000000000000000000000000000000000005ce00000000000000000000000000000000000000000000000000000000000005c500000000000000000000000000000000000000000000000000000000000005cf00000000000000000000000000000000000000000000000000000000000005c600000000000000000000000000000000000000000000000000000000000005d000000000000000000000000000000000000000000000000000000000000005c700000000000000000000000000000000000000000000000000000000000005d100000000000000000000000000000000000000000000000000000000000005c800000000000000000000000000000000000000000000000000000000000005d200000000000000000000000000000000000000000000000000000000000005c900000000000000000000000000000000000000000000000000000000000005d300000000000000000000000000000000000000000000000000000000000005ca00000000000000000000000000000000000000000000000000000000000005d400000000000000000000000000000000000000000000000000000000000005cb00000000000000000000000000000000000000000000000000000000000005d500000000000000000000000000000000000000000000000000000000000005cc00000000000000000000000000000000000000000000000000000000000005d600000000000000000000000000000000000000000000000000000000000005cd00000000000000000000000000000000000000000000000000000000000005d700000000000000000000000000000000000000000000000000000000000005ce00000000000000000000000000000000000000000000000000000000000005d800000000000000000000000000000000000000000000000000000000000005cf00000000000000000000000000000000000000000000000000000000000005d90000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000060a0000000000000000000000000000000000000000000000000000000000000601000000000000000000000000000000000000000000000000000000000000060b0000000000000000000000000000000000000000000000000000000000000602000000000000000000000000000000000000000000000000000000000000060c0000000000000000000000000000000000000000000000000000000000000603000000000000000000000000000000000000000000000000000000000000060d0000000000000000000000000000000000000000000000000000000000000604000000000000000000000000000000000000000000000000000000000000060e0000000000000000000000000000000000000000000000000000000000000605000000000000000000000000000000000000000000000000000000000000060f00000000000000000000000000000000000000000000000000000000000006060000000000000000000000000000000000000000000000000000000000000610000000000000000000000000000000000000000000000000000000000000060700000000000000000000000000000000000000000000000000000000000006110000000000000000000000000000000000000000000000000000000000000608000000000000000000000000000000000000000000000000000000000000061200000000000000000000000000000000000000000000000000000000000006090000000000000000000000000000000000000000000000000000000000000613000000000000000000000000000000000000000000000000000000000000060a0000000000000000000000000000000000000000000000000000000000000614000000000000000000000000000000000000000000000000000000000000060b0000000000000000000000000000000000000000000000000000000000000615000000000000000000000000000000000000000000000000000000000000060c0000000000000000000000000000000000000000000000000000000000000616000000000000000000000000000000000000000000000000000000000000060d0000000000000000000000000000000000000000000000000000000000000617000000000000000000000000000000000000000000000000000000000000060e0000000000000000000000000000000000000000000000000000000000000618000000000000000000000000000000000000000000000000000000000000060f000000000000000000000000000000000000000000000000000000000000061900000008000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000003410000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000038100000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003c100000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000401000000041c72e330b60e0052863df88b19ebb482d412b0a7bbb2fabb9347be5e59453d10078d263242fac5a2ad544b5005bcea367ebc04e01ff7ca279650bc63d9488ac304ad4d395e21ea570da47bf574569c6526312c5c7ad63a6d248f694e5c81c2b60e12693b411d9eb8f564aa43f4aa14e3e30f8574425a6d6491416332b77d2709000000000000000000000000000000000000000000000000000000000000104041414141414141414141414141414141414141410000000000000000000000000000000000000000000000000000000000001080818181818181818181818181818181818181818100000000000000000000000000000000000000000000000000000000000010c0c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c10000000000000000000000000000000000000000000000000000000000001100010101010101010101010101010101010101010100000010151de48ca3efbae39f180fe00b8f472ec9f25be10b4f283a87c6d7839353703914c2ea9dedf77698d4afe23bc663263eed0bf9aa3a8b17d9b74812f185610f9e1570cc6641699e3ae87fa258d80a6d853f7b8ccb211dc244d017e2ca6530f8a12806c860af67e9cd50000378411b8c4c4db172ceb2daa862b259b689ccbdc1e005f140c7c95624c8006774279a01ec1ea88617999e4fe6997b6576c4e1c7395a22048b96b586596bd740d0402e15f5577f7ceb5496b65aafc6d89d7c3b34924b0c3f2d50d16279970d682cada30bfa6b29bc0bac0ee2389f6a0444853eccaa932b2a60561da46a58569d71044a84c639e7f88429826e5622581536eb906d9cdd25a2c0a76f7da6924e10751c755227d2535f4ad258b984e78f9f452a853c52300e212d8e2069e4254d81af07744bcbb81121a38f0e2dbed69a523d3fbf85b75c287ca6f33aadbac2e4f058e05924c140d7895a6ed167caf804b710d2ae3ba62b1b51297b3ea37637af6bd56cf33425d95cc5c96e9c2ee3077322fbec86a0c7f32c15d2a888c6cc122e99478c92470a1311635142d82ad7ae67410beeef4ae31f0902ba2fb964922a4610bb18901f7b923885c1d034da5769a48203ae6f0206a92855e2c01ddb3d6553386b5580d681b8230fa4062948668f834f23e0636eaff70aaa64519aafdf4b040bd2f9836e76b9dc13cfec8065dcdf2834d786e06260d10000381000000e00000001bc00000090faba557e0ad98ee2315d96d69c82caf3c25a4d10cf0b72243facf67382d645e8a1b81a599cc0533389aeb681debb86d835c02a49d90c37438bd136b96045f9275f23fe0423b91210b2916b3f57d50400028183c068d003a8d24f139221841f03097934d15becd319a07ee27707451b7a0c719666509d3afb2485f646dc58a81a529768e50ccbf4273fa2e15476d37e4300000090a38fb01df8082d1058fc5fb9bbfced55f7509541efec857c25e9b027ecbc9086b2c05edf5be370c8ef3a808e13c8974ec9f1efcf1a6dd018f5e146e4e652183e96e5c8a41963dbbded5ddd932ec5fb3724345635ea211ec2a812f3f6f3c03acac7b5ec8c959c79c4b665728941fa1c0823008a54c68f8d98a4403148f59c6b7f01f487d0a15b66e91169ffe7505b01df00000090ec23ddbac68fc0541f0905c259baaac1f3c275bbf626e0684c9627489ae4637c16dd7edf13ace12934cb43beecd7df96120b0a445a9011f1fb47aa3155ed91df448e04b6ef5082495065b9d6498bdaf5222ebd02fb2bb6927b73c8fd7e1fa7dac0cb4ee59e3ab0929b295d0f098f2a9307265eec9e7618fa7eb0661bd24edf0ca42207842332a2921bf33f4b890e135a000001bc000000900323e0b7e5571e1800425de4ac2accc93e0c4daefc3ff84371de9cafd0e25463990e8255fbb11ddab5e4a9b80fc6c12d3563bd7e49dc971fd4e9bb69bcab0765a05dfe9e60aa6ca559600012cdec970f00bce2ffd6fd9c05e7b93dd3520cca8197696eb3a8e050f79abdc37550c82880217f2f5fe9c39e3a25e665f0d7f07a2132f9e8236372a36af4652bb70fd028ba0000009072b0a3e5ded332dc63afdf5ed66d35b98df136922103f1e457d3cbd1fe0aec5a38147b024deb433dc599f7caee486612f788ae098ec6160bb16c568779b58b7547db7731e68d6a2b4f7b85fae53b876309750e5891e2da92558d6c65c3602776ca77203a39a54b9eebf207f84a8412ab280038bf2949a61667f0ff9074d68760a47859c00c00f809f2c8785fcd2ce99b00000090ec3b223d145a9291510537f240f1f5a389136eb53fe32e57decdee50cf7867682747186d5204e0567139d5bbb890b67feaeb268214ede3661d3b30bd7c3e723b5e73537def569d43863d0fdedd650cab00bddfb50d9fd4358cc1d8c1a66a1ca3b593e47f5e1f9e23456b944a2b682b54264bffa4aa99eb3165e8401c5fca7e9aefb7b6766455ad265363037a159f1354000001bc00000090d0362401429bf597ea4e0d5f8a354baf82843c12349bba64ccfd921e4c9fc16f672eea4785f2ef452372a7d32a0d5a5e0fe3ccc3f0fc53fe00cbb8cd5b1222020fa988a277ec87401d16d346f655e066263bdb07dbc3c3b7c34617399a233c1430db9995c669798ef408c2c5705b58d301f918ca1bed831f9ee6e67777da012932cc4f8798b51679aaae46092303c1cd0000009087f90d8fe894585f866aab725e6e58406c485a8fce92dfc121db621a30540e7d38bb88d1814e36d6d5c58aa41b50943527ee71f6f06860b866e1ad4fdc04a3a094b4f0d82c268a70dd4ac6dbaa7bbb062faf7999f49d82c25925674e0537759c0900e1a18bc6878d96f96501223fb334022bec2b5a7d99a0c5574e0195a9ea8511214480c64f8e96de27a2a82df656cb0000009096eb7fa42018353e143b36bce2a3356f3ab2608e3e568fd1747f4d82b646a271f7210673cf7f57f873bc295236865c43e6eff138695b96636da79db526f2ee7b912c201f37d82e680d31e7e30ab89ba51c91a7f1ecd9ecbf9df14830e532d5c61afe2261e8d91377dbd4546e3533c66e036ee22b0d0f8e9239a94b8d2a4cb79677f4f1cf9000a6699b63926c68c6f035000001bc000000905367848ef56aca2417cb4fe5250b356f593d070f574f71c120a7170b2378ae6a5e1aea379090cf3417287ba3e209b669301ab6aa3b37ad97e2a0d8e142ae6ee44af60ab2153b976ebf3f96232411dede0dafd18d2e8e86ffbb8c570f085e531727f4f7c8c382a63726d2d071a9f980221ac050936e5527648fbedd216db31f334e1fddea5a3582ff37d25b6ebb180b8f00000090973332b09cb17f8d589ba107484cb967642d280eece882eb9f2060cb0e7ffb904ead9243897e1d74161376a527bbceefb1bb6fb46fc0975cbbd79a28742b964f8de228294ecb5564d8f3af688508ce5209782d26fb18e533378d8fcda9031591d4ac656283a6c36141c15bf136e20ee628f92c331a0e02c7c922b34491694b0ff57a0f730ea1d2d01e1336d55f3a13a800000090388ce03b93385a3cbd8d1054dc567140a4e8b25b6efd9a3194dcbc41c376253a7b0443a594f99fa820ae7dfe403a2bac11f1146e413ad28a01e05b639e1f693bb2bf65f34cbfb6da7e87204c9506db4929f7762119efe7ecf810a425d1d309ef407e707c37e406b204c97df648b8dad81b946e3ddb836c5093207bde61603be7adf8940067ca0e9da6c4e704448f8cd9000001bc00000090f3404d1e06f7c02dd32c084c5b9280d635c0fc243bc6e8e9b930693a8a2e55bb197989de1394c64d70611988c67ebc443fc418476fd6cfa1d63f9a1358ab0628d05ceffa42577b290069b9ddd3b49d6704efb8a3d89a81c774971611839795edb689e9f6ce06ca9424f971d8ee7421882359e2cf95438a0d0dee3ed70f87fdac245181dff2117582dc35f25563d8678f00000090f54c8cea6d621dbdff96eda0d560d17355bdff5620034ded0f79242abe7442f5f7327ea5c7214e622f444b34285cba54b465fd9a301f52f0db8cfa621e8789bd4dd639397685df4e1b7c3433e4da5d292fef8183cbb8a4a5c5bd364387d6bca5f04f61ec63ac90392cda925669181f37062273bb2a030f114f914165a9dd1fa471087454dca6fa0f72ad2523e80205b0000000904a65f0253b8bee3dee6468d0990c7c8d7c1a1d701d2bb05530e207bc67c6857ef7ac993c6401b01cebe4d428ebb6339badfbca93469ec5819aa624c79af29566442906f4520a162b49b434de2da2263a11934ff8ea2f7f9c733b4fd9c9f2a53dfbb2ed48e7204f6e9678e15972212cab16094fbfb58e358094ade8056abcfed04ac62bd9edd4884d5dd54e1b27bc9d7d000001bc00000090421ac60035ea3973da6ab37ff4cc775d3071bc4257bb79fd89f40fed05839af3bdb5692bd0fc8fcceb78050381ec004f8865fce649527bbc3d0ec27443d7ce080beac95a9bf0c59c74f88db558c22d731802a67fd5bf273582f6d1d8cc881b1f5beff8880a7f24a8141f99c51b24087002fee135d67ed43c5e154e367d28b4fb01d9b1a651f720f00929ff6f4444a18300000090c729c355dbcdfc5d1ff4c906f9d6737673cdae6228eabfb506c85073be6e699bf8cba46e03bbad73b8b3de910424f44bf1fa4b843d2a2712558698ed8f7be88f11fc21544f0e6aa45479c9863b3a64d61f95a54ecf91d7f27689a919aef3fd3042b9ad97f45d4c9f008eef362f4fac2a2295ced65561420be23d31cdf42d7c63cee5b36945b919526366671d964e851c000000900cd889f68e6227eee56c73a37fd7f06e8031bd42e784c919be17610e9e8eb2c231c74179def8c1bfbae1590978c7f949ec9180a9dcae57933c7de0b292b7a837813c7275d082f420543a162b0b82d58a06bb9d303746461e01b471e19d71e670541ac94e15d6125a28ff9e37ae0a7c8307570723e17b811ab2c0a5bbf97c97e06614d53ec02d73475629711bcfd7021d000001bc0000009020ce73da267c1ce22abd868a5f673da11fc67e08023d821070a8709bbfe6feb98bd19084a8674c68590c787dd5f442ec18776d391d221c7d4d782ecf3dc8e7b14e001532f1d922995754c5de7e03298a102c62a436cd1468a6d3a86a9d7e711ec2a23de7e3f2f660213ec3490d80138e1e3abaa69381bb163405df34d59fe6a7d91f16a787192841d17389af4e856eb8000000909a5924162a4ed7a5b8eafa9b8600170c407987210f2696f70c0e749c7e3b4d3049c108f7f5de014075783e0755430e5a704c07bc1821d3128a0e2a48a457a4eff5fe0ecf5bf04919ed582dfd459885011cad8e0e6aaeb74e435fdc9b2df0e53e30d60f44047ae9a181448572615e9a6e17d49193c97b65c6faa9969a2a67d2b2fb6b743dbe1ecdff6e4af346cb069a11000000905226e91e7e92bf53cca9a393340d168659de09970b06caa80da553281fe8bb8873397fa137e8c0f9afdc2c8e6dd439bbf84fc1e496cae7ff7c392bd9baf8adcf4e732290a4d18083c7ec68803b373fd4035e3eeea067bad11dffafdf132ee701d0640c4421ca3c7689f91f1c5450f7360e0c7aff83acbf0ef3ab2534d58efa80f917417788d4a56263a097dd6b9270fa000001bc000000901aba3c8913e4421e9cbe9a08bdf6b7a977168b9da9f7306d076811e1b292f45dc59c58fc5ddc24c42d8b45f45eda68911e9bae9122093c231ec898dd2b9fa94f388d65fa55585bba753d2d337c8b0b4a297b494af2f8f5453dc052fc5bc9c6d56a4374cbdb2d090d5b82957259154dbd221594d9c7057daa32aec5289317ab430f242c6bc3d71311d52c640c7fa89b4b00000090db1ab6330c30d19cd86089bafa5e4dc6b5d6a814911e97b2939164cdf3c69d13694c4ad1f65921e6fec11871ae70645e992550e3f9fa5a843f1d1a73aba45a677b2b9ce39ba23673122554a9f78e43d313e21f567b40a04e0ebb3ccbc7c7ba6b645488c178c3ccb96cf51b84104351152fa3a46c38eb344d8d3b9a56c2559944d3d3d4189d9565c489587c6ab916d22d00000090ddf1320522d527312ba41ea1664cdf8016914d0d10a4b4ba43e993ba22fc1a84c13666115f065c7b4ea954c23cc99031dbfbd787bf2921e2d678614075a3614ee449571718354b079569e759383162e0151398cd985d71c636fc2cb66403d35dbfbeecb21c0a63efcea99ab3fe147b682c1355e8d2646004ed7532d566e577f9b87f656cb5aec22a9a287ceb73756cf700000e00000001bc00000090db652aad22b298bb4d19d8e27e604ae77a79d0be72303ab9c14f2957483f5a943a1002ae52c2a85dd4566be96d155f1a5a826ede58eb4d15caa27e161270d9aa0959244e96ba52df5c3ffe468db5a1e615fac3ba85d16d682a7c76b082c2ae9bfe826dae62cad5f2b8d84049eb28250b22a83ddb9041b0608c7a6fb6454155274bcd40aed98d689e421fdd1a9407e7d20000009096d465fa51929c45fdc1962d72b9e970bf8cf421752ec92203723e30bc6f0664ae6479e82a5bdeecf07ff3e35060b8453e923dbfb755cfeb0c26c0449ef64d22c260818902186c55098a0e373c9966a400bdb1fbff98fa32f5e38b1eb2b2a998de24bec2ee46bbcb41fcd9ca975564080b038f1b8714ca33c5b5ccb48015b8b90600d671044b6b0edaaa710f71ebb300000000902c4ba97f0ba9a5049abaf70f75e1ef6599b1ad849c4e250044862da169a1acc09390120a63048677fbdaeae6fd240ef78599e6fc26b3bdc44fb06386550ea0e250db2153d6b228af21a83ea4141590ed0db491aed405e08ca217d27676ac8f6e2aaf151460646a96aed26cc1555e9fc10a333876667efbea046384e51f9fd09e67c2528f0882e7cb2d9fd6c00b948bca000001bc00000090317d6c1afb0608d68b98b037fda8b2e756d35fe7a4289254f63cd5271da1030b82c900a9633871d3971beb7d7fa0f22711d0245a1464a69e150f40618aab87941e9e64ec3f9350103f6475f7694eda1904e3d9e70b5cde6cd9b73af29e841390f75d4635fb9eb60a619e90ad7cd5918209837b1bdd8dd9d7baf1d8e353c586df94cd83476e6ec019e6160add6cf9921f00000090fd77b23ed79cb12ae351a9547dfe4b55a9caa709c08335ef1d69e490a66f2b2c44269e30c0637ac12a163ef780fb498939ff599edd250bb2c0ee83cc7ff7ec58669c7672709808505cdba7f30f3b257319d474d29821fe905d9ebd18487e81ae7472c38f9162208c203ff19b14d33ea11c683db9703fdde751870e4abea2b2d6bb4d58564b542df14cfa94bd33a70143000000908fbfbed9da48bce055f319c2e430127104afa36296c62aa90e1711d964b74e3b8a69467c59ee9008a432f57efc5d8d684c478c67d3450490657e2cc12815e0a5e4a5a8b902a01f97ba6ff86588f317ec2ceea5bd518f468fefc6714f8ef88d17c9bd085f84515e5be766a1b1ad7d8c3f1f64726222c453203cf184b7df509a490b6f816a5d4802cac593fcae623c1f37000001bc0000009058cbbc2490d32ad9ce193728024d7a15e493e5071ae05df2e4c1cd4a3bbf75f7f6a7f1b4fa8fa35e65b2d9db2545df8ee843bdbee1a59a67b24de585951b51656433dc997deff629c8f464790b1a85db1bd987534d371292cad9bf458d5b9c7368fbcc91a9808743bb65a28a91a60c96212d4bbdf4c2da6fe1a52b88485221e0b99d8e1a2ee9d291337731a819a6b38300000090050147da44717c542c5c896f64820aad88f0fb619044c49519b4fb1b42bdaefeb28cd8d2fc945c93d8fec17ce89a521647b8433f3b2d6cd6b5715c871c4c74a39ed3fbbf7cebf439825cd62f6e7840251b75b501c5cb74f0e096d38c36bec48e843751ce33a641f2072125412fe76dfa1c7290a9086a877bc9ccb3ebbe00789bcb7c6b951cf9f7245184e487e8a86791000000902b67906fb61816d7d4f88b951fb2ef7bc51cb7cbecc539826710ab54f4067d37313586cf4e847b602f075c447c6e5af5d9e056f3c68f8776b4d7cbc2c7f5b0f487d1de9306a3a6b2ac21d1afdd30213e00094be594ea9b1549344219396e546d7df82c3a4b6231e4bcef8b6eed1fb6ba0352aa82a0d4e0e31cfa426621e95c4f1b929dcd9ee58997a89461275b7cd46c000001bc000000904ea88144c0066ccea172d2112eb0597f561a5948c6eecb78877b94a022decb1e14718d3bf395472454681a1a2dd1232e5fc53536a5ad7221ec7dae62b30039a33391239dc51968c656ca41f94a5b705216e45162d2c9436b1f5565fc73ffad5af006b993d81f0b77ce3fd5710ce71e1c00ac921add5f109cfd3f3e3900635f4e67ec4dd848667e066e3703ce380fcfc1000000904097191765076fe167e19a0845b5c872af1902056c1f01c30550cae7bfa23e762244b9645125c0e627774b95d97dd10d472f4857972211accf114f6b1452239ffa7a0a1bb2a8926e1e35b1c1e0acb2911b25e2c9cc1233cedef0259c2dd95d49910a5c7dce0dd73da9230cf313c4253e30135886c18941b5458ad482cff51d0f44ddd1f0af6b50be2d002f339ba1913c00000090b98ba97b9678e3b55afc14cd7752fbe96a9deb68965ed63adc6f177e17e082bb8012b2de5dc7ea2a30dbb10cfe30d35bd550da6769e343504a98f1c7f7df3a63e7383fe6e4412afa9c736e78f24525ed2314f1b6b9a919d8d2e3293ebe88f11e4d51e7672ef570cd9372e533d33dd656091ee34540c4e533b918dd513db6afa869147f1d9019fd18ec8368542a2bdacb000001bc00000090b0d51af3f81d2cceb508a7f1ff4d80cb8e686854f5467aee275fd23e7ba5364f98d51aa403b36ed88b25d7805c78bdc7f3358bdb2eb0ebb22a3d565d2950e61a3a422488cde294df2877cea73aea2b95189b6ef982c99a1c231c55770b7df6a9c122caae9731edc1a006e530cbf48f011a65bf1421065a71630fe13e703f33dbe56c355873be0876e5ef0bb62c892093000000903881a3c58eb83d1d25b2f22a30df0cf64d11c02edcd1cb5885fc616838dca27ae6c5e4cad518c328b5800212b2bbb5bc81cf0deb0a6ebbb216ca3d6455e4f941e33f1be46c11d52edbeabb48b38120ff1f875b221a884a5816af98ad1585b2706c842062eeeab1cd1459a1456231d0ef18cae46a9f443ac00605a4f854fef1208361dd754edc06d7fab2d9e5234f9dda00000090e76732a28147572bb4526e9d2071e459ab57d8c062c02cb5bcd6df2f41c2278510227e90ec5bf945bb4cb8efb2252ad60bbfbd9b4588eb30f279df077bde5ac429c632d222c406acc724c99291e4822e2df0791ddb5127215a61a1b46653f7864d656eddf3626f2f32ec43a0cac189a414ee8ab66dfea01e05845acb7158362f11cf322768c651e9d224b699e0c2b3c9000001bc00000090a1f618ff9c3f0a69611a72933f1a37eda13bb318f7020635219c6c2596d9cdb1b20f4d7ed143948cb5950c2f3f4648a616c0ddebbb95cd1025ce49f881411e9e920a663f0fad95fb42e0705092ad96431029d75f145a0d1aea34721db49a65b9c02a9d3ee1affd4acccef81330cf95e60fc325cd839e15116699e0eb4667d97bf392924405699916bcfbcae1b998029800000090c0b46c2855b8e0158be99aadc2262ef5910547df7fc25db2c7319b6f0902de6c84e996c3a97e056da82773cf0ffac13e10c9151027d0238f8cd7efdc782b942ffe748c06d76ba43be90448fc08e6ab192807ee3b19248718eec114232c6daa4742332020b9cdac97a479665dc391d49706948b16686dae1810498ce9d02f818dfcef12f3ed13e9d04b7664394a23f6b600000090ee8160446c9dea1d8d9e8f2cfc4cf4c2da6b22ce197a5f1a6cbc47ec3633101de6a6803828c9c507a5611036366ac58701194c4cb3e501189653822eaf6e57baae3be9460a7bfdd802f925761c79d24f2ea5cef0d55f8aec27ffb2568c9c48ba4927da06eb6297628f1b11b9fb329c061c90d24e6806d40409d0461fe26df0acbfef7120a88e2ea451278f2bcaee749e000001bc00000090d7558a8e02ae20656596a8fc7a4521def5c54ba209d4f307f99155c1adb6787a6a24723b86dce28709e82726ecc00f6ca25c29d1eca4d1dd9cc6f25e7ebfdb9276f809182d9e32191c1195226d9aee85099c3950f872230430d4e68fb37c7f687bc93f3f49fa59d14764c6281df252720d881d8348bd06e4147028a2064a8d76efe4af99ff80c7aab537c92fa8d6fc15000000906faf5e08e75ec248f96062dbdd3ee76df72939db524f749f1cbb378679fc5351a14ed67ee34fa0e812b9a445be1b9fe2d1ec22d96c7192f7b7ebc4da24a5cdea0d8ec9bce3d1334f32c5c4be0d5f426e0f107ba2b782fc31d00fb088b2e769789a0a71875fbb2121e0afc9ee5e9bd23f033b6d3c9eb95db6f1d31d6d7adbbd64013ccca94917e1f8b9dfbd5f8c6dfba000000090a672f98839d8583c11642d3e46c1d4d7bbd6a7bc3d47008dea1bd248ede0637a7431f826894228f01a6caa29d057e50cb093c7d9c4dbae78c272eef3271766bd4fdb6cc1cfc95a4ca9041d385eba7c9e05a3580560d97ebedf8a29a23463aec239ef8b1d50b38c11c58c2e682f2da4f6057daddf89055717beb33550f7e6d8e79cff3b42f417c165267c2b9a1b1c5fd2000001bc00000090a8eb5239528ec46d7f2a28c64b5a69110972279d3c9d30b9d03c2002a5d9559f66af22289d2f6e11e30cb201d6488a376806bff549dc4a11c9c62d043aa1ec224ca7eab383b9ac6f9e82c2329db003cc1f2d6d2bb9994f0641cb30ed16c2dabd525db32b09abd8f4083de1cdb348e2730babd94066eaffc297ed79fc3204443300e2ee317e5ce17e9bb114129c00bd9b000000907c746cde356f4ef87755ba97bf772374d85cac217b3f5812af49868b94f0c9949d8106cd78d263227ba9fbf1d275a70e0086f5002facc3e99bdecd73889f8719445931947c5c06d8a30fdd8cdfbe0a7017865a0eea0a5064f666eb4867d0f6c558f05fe93075995807eb53a209efeb0c1d5e00a28c47cde4340f5b4e09050ea7489a12f9d430c9f4c9b109559756893b000000905dece539ee3d230585ff687cf549f1706d878ba0b2287aca19d2d4e52f99c1e0b1562424db2584ccda92d8f49ebb8aa198ca5ac478ed2857b2ddf8631b73f2e8e9cc61f5192af4d44a345a29cde0ce560442af2ee468175f70a91e74d865f1356d6d4ffa75811d9ed39403a7518ff20b0e39f5cf52115f91f67dbbc0344298ca0e3334375230977122dff405401c929600000e00000001bc00000090fda4dc64d0b6e0d596c0e1c36bc561756b6dd289bf0579af6e8fbfcaf729213c89bfb24e8a284cc3229d4218b85a10bccce27bc4049fd9027fc6c8602756c23d11cef7956a73bfcbe2e2a4cfa72bcbbe17cdeca243227b2f0deff86bfa1ca4aceb1ccea4ab0e4f08d1229f1c758fcaf92ea55a2e164b2d11c8dc3101cdd593e5b4715cd75487c1ad39d038266c8de519000000906e204915a953f809208c619fc1dc5d07f68391d2c644c445274bfeaf8518120844184cbeebb9ee01d12d7f473de90e2aeac7e5034ca9793b01600468c9fcf8bddcdada0fca1254f2d0c47a58b9db19481e0733d9ddcc53dddd96e56139b0b63fcc59fede0d51a633f7b1df17683dfb6f0c31ba19e7dc825d5ab9c7fe7ab769bb7f1e5b973df59ad94404ef2c5dedd747000000903736978eb3d21674fb83f7f597cd969162d1d064ec54c2244cf608185ee87820495f2e43c6113c0d9c9a10bce96e657835af4905aad0dfff74a488aef0ff0a0479434e50fb318409e64be3e748bc1bc11058e060573402823b8faa38b96ec1b30f537c724339586d0a7045fe86e80892206bf9daf2c992853378fdba3862d50d48f0f170cb2f1489d6b09daa6b8aefe3000001bc000000905de96e64849f32b7e1a0655c65b813ac4c270958079104f84c24a957a608f3c08f5f326e677e7f285f40a0787a5bee2ea1e88c0e6fd76e7bca354b7df213fb111bcccd60c48c798f2968891f6a3ad01813f088ccf6c56eddacfde77b6451e530744d77cbe54da14951df6992911b6e6b130f9cc4483903a76e16c279954ace154f5cc0c0c1b083102319eeb7820071bc00000090acf03208b38f133df3058dff97964615b0ed53832ea858f5e5232e1513dcf979c06dd23ceabfa09aafd6abbca4630960381b05b5a8bb66b649e1afb75185c2bdeeb2dffe064ed7728e6c7c219ed77d7513a6cd30d7fc644559d5c860e61fc7c42bb73180bda086c33aee054f3c93ccde08ef26ad18c83cc9a6fae255755213e4a786180e56e29f2505f32797958258db000000904e9c8d785ac9fe77eb1fe6ce5f8f4ce1382f6effd90700e5f32a35de5aac4da9ea2aa16bd15ee504f2ca914bb7f4c08973bd85d4d2254c4cf4f3c717842357b4cd46124ac628713a23fac9ac9b18edd90b3a235d422f063f7e8b8babfb9d6f6178acc4f09e5a21b229b139375eb8b57806127d34513d8282846842f5fbd02e5878a1a0733ca2bd69e2139ee3d7fb3c4c000001bc0000009063a0b0c5fa450096456432b9a88c09756b32e6d66bdc098ae31f3007e8da649704db253f6899a5b209c8e982d0c0136af4f7d8d4ee1c374e6e813e596b5e9cd2bd6525b8b11f4ab9568acf4e72386f342675b297d8f17f7f118f8f03150805e9ddecf0ffe4dd101cd1d96a1ffdad2f5b043d066023ff6c921dd03468a129bd1bfdc64d4cb9f3ac02747a7836b36b09440000009070157e3bd5b9a98f8d41843478f532a1494c44ff6ce8f0b0a5f1703fd55d44fdb088483a7dc08744311c54192ffc990490c275f2641511de67b9c16ea36d7e4178d64d83601b0481f4d453a162894ad11766168ec7e71d7ee6a5268be91bf3ba00873dd422471a50f03e5a8d381114c92f623e2d094df2ae2cc06640ce8da1c4d12362aecdd8bca5dbab630e0099203f000000907b335cfa119c9c11bf107f856759421dad14d956ffd502afaf2914326e24890561d25999eed8f6dfdb508be28456bfeaa3f10616ac4e90e412f5fab3098f72846b305c5fa55d029c8b41e0fedb62936324c087dd991ffce649c347760c62f009f9339c6590d5847355e3da7110d7edb2291ceb7e393d4f3aaac2a286c5392c722efb2147627d236cbf21c4f932daea3c000001bc000000905601b76ce867afc42fd76aff20a4a367f71972ae0c3491940cf7d86873fc272034a88f149b777db5314af27d8ee5d2297d0e2ea72da2aca5a4c60b61e86f13cffe79b17b8139b1456cf6ce97cc8d09d91b2140d7c6f8efc6eb6a022d38d4126c53105b374c5323311248e1c2c0382a5822b6a98f0291a2e3951ff424977374bbe3085550f8fdcd2295c73c24a99a412c0000009002ed6660640ed0d909a58b8778502746dd3433dcde601bdfd6ecac685aa7e6beb33fae7171cc058bf35967c23a6eff9e454886cc3371b914150312d07e9e2c537b314fe2601e588a4af7607f204606c9261b99ec663f440bba9d09049f40c9a624727b79a9ab7d1c0fac885169f3a6c0041b5a94405f0628c2b3aa0c00b9c91b0aaeefffd155dc77ef8742b3c734d36f00000090945bd0ebe75662f55a84c9dedfe4a26b6459a34b08088be24bab619bb0a04bd7fa3316acf96ef0d6155cb1d98fb0e60f52837be3e9d3bbe94369dd944936ddeafecd44fcbdc7a5ae171c951713f2fbfc1dfed5df0d5b9b129099ab0ca6f431d41d7795d6f161e505fc826dd4a8159ef10c0c226b5f06667aa95526b1039fd83ce3b7e647dc4f3c9d5abc6b923c56e743000001bc000000903a0b34c6c481b235ee451e0f7f1f79911999599fabd8a34b4434b7589df65bce82b8b86c1caba33b2b6ecaae72951164b922f9fe4e489a619466939ba61da11949ee9a45dda9ecd4115334d41daf3e0429de570c85fcf6fee05e9626190484825553c63977a62d00b6468a3ab51c443b1db617035a62df5ec5bb6cac4e0c72fdad855a6631b6e368a69408668e17ad6f0000009069fe86ca60be66a658d6a037a49626da107195d6b36b9a9980fa36b967cedfa4ee02dc65a7b1d712a23563b7144bf01240dec3a6f8853ad4e3c7659524e197d85269b5d9d400a96052059a7f2fde806305ea5b099a72ce3fb27b21fddb90346726f148415d062b9dfc3a7d1aec8287e8277ca59595ff4ab6a6b1ab2af0a2fed0e2de61441a59dd679fc03883b89f4a1500000090aa8cea3e45cf3c0711c101be517314b836117e8dd7607051ec1cf36ba94d6f2933ee9bd1a1fab9742ae5f42b15243545f84d5c4a74b54f4fdf90d521a3463d0edf38b91e1f10f2f6232e2212bec7e3a82c58b821489e3bd2c3cd6d1f6263d6853bf5e89d641b83d60e15275eededdf052a9fabe78d893923657ebdfe5918e012e098ffab8c3af1efa815e0a50773e113000001bc00000090049f4b0cba79f7601acc1c4d265ea2b4286bc5d5f1edd22cd268504e2646a1baf434908e2367712c330b6eb1d72ae5f9e921a02b16b2346900589d32fccf831508d193c629d2a91a113e2d5b0c1a976d0c4bcea337adaa481e17b7d30765cd4672ecf9975f819d9686f302e5d6e42e2d2b8a97fcfbb5f4c9866b1e6b6baa65fc631ccbfe90f01f1142e27f16c182d9fb000000906dbb145ceef2d3abc5c18f02447d78fff5f8b95a84cba56a122835ef2aaf8b672360e5ad08c1cefc52c96ebc277e60d80acf0932b83559e245d2f800dbeb071c62ee2dfa94bcf43dd38d164f0fc4fa9b08abd032b327e07854a7681869fb3e8f5eaa062b82861c5f7ad02f455075ee8d126002607aee6d9e7c26dcbd63f726f553092f44ec5978ace375118c4bd71a87000000909bd1e495ba27efbb0dc89786d764ce8fa8d69abff1313511506b3cc31b596bd846814730c065b21269f6c3a5faea23dd340cdef94f2e659b21977ca38e22617a21ada655439dc12646f11253db12607328b22728cccfe7f58b741132ce0c8842d74a1b4de1b27a02f2a1893b92ad5b9a08a522e67d426850238e877e5f6ee92ee231fb1c687b5f1f9706995a5a43d712000001bc000000902175ca2ed22b618ea1961c51e9e1c0978c3b18a9f3dfbe63b4fdf377bfb409b99a9a57a82ff8434cb6c1325ad5c882af3fc55d351869c41a3c4cad282fc4f9d024eef715234ca28074e3db62090369060443cee8c1203b828b3cb5642d1f08ec17b1346b8531292b950d36297b14df551432c821e0170ce7bb91fd731c818b83bbbd89f97d8cbee8a3477e8f539bf4900000009024baca26092f2fabba8cc62624ac7b129dad42ba4e4d350f896bd02a761e6955ee20e7a1559429885dbfdede506ab6db4209fb3a7e785b376ef4339ba56fb19681ed91ba0a5076100c3e923a4ccdf442057d8938dc39ad86edba16a8c92e795bedd0eddea505ed39edbabb06d52b04fb00941077b274e57bbca411eb8f5497f129773b7c28925aa6757a8d4dca98dfe200000090f73a55ccbbdb1543e844d2d349f3950d198ebf791f510823917340ffd0a2e7dadab1a9b861edadb82ee0a4cda718da994eb858ffc0125cf2b551bc8378e32987b113a7f925ac9a7bdd5b90d80992f7cf0a36bbacc04df0667d3e335882c026e41fc613598ad9461d246bd4c69a870cba09691cf496cc0d191fb621c6609ae83cccf9f6ab6faf898aa9a512d01d625005000001bc000000902351960c23c07293d145a31c70485daf68c4439aa9feaf0d799276dc46fb3236e3485bb09daa2c5090494a3359604855673a03d144d15162bb30086265c57846fcc18c46871b3ca6691684b7bc8085c614afef122029d596076346461c3a3765fa04584b6bdf6ce996b81bfd0976f1c91f256283d9c1ed4b15c9df61e4212268c05bca43e502fa8aec6bdd5eed11c77400000090b32f278dc3473a370f56d1f98879a6b0e75bd739d0c23b886385c7fd1a88e4181d08f20f8866eb806e8fa3fe765eac600072f69fb39fa86305adbfdc43ace24e80e46d5d2c1671c9100001b72433078904ea8a551742eccf991e090df8675b9a1cfa345c112f1e2300897d356029d527120f15a532bdc32a3afe9cdf9eef1ba2914bfca023e3d3dbcb3f3a219c6d89b1000000902dab863a0bc4634842f475cd3b7a0644ebf79b1f2310296180bdd2756ce558886021398a53a3145a1f80f32242f962bd5c48b930831ced8e0c988ba0e7b30cc99a6ee6562651311212c29be1b0fb55ba2ee19c1bb178d82586084614d58f63114f03cd3d1df75f48fda85fd4b9979bba159f56d8b98994f2f0249c030530b63a5f6471e6489781692156a378df67375e00000e00000001bc00000090cf23733b594311b0fb7d1510c040ee58e9511af919d8fd730649f45f9450f89c630ecd353c67922e446a8da872db3ae4aeb88d9ecde0a8e45428db9ed21192333d87cb4bae5b225c67c24cd46350e40805eaffddc1048f2627a4615193de5d4d8bcaaba4613b8bd47f11d67273db3dd50f3a151422d9302e190c4ae8d95a04e0abf81611e6ad62a955fd2c0b601d768a00000090497191397e3c5e21ad00156414955be89b417cbdee5ac30db6c42cbb06fbb27c635332dc8ef0dd9f5a271aff6908d1edf26764065c0274b9f961c0a23c5c8550af134517b0a165014ec053f6f616973c0ed30a936c5ed46fb097d6c14e95a2b63404a380ca5831f067605de38b4fbfea1e97a0a6daa1d3bf6e12a9fe54e4a8295f117ba1538a82acaf42eeae694cb7c800000090f91123c2f2edd94752b7306f5ff1f09eba96c7d5284fa4cf37aa560cbd5433d6cccd9a71ba41ab7f0439091f2371f415ac7aa0e56e86156aa350397625302eaab078bec7fb4c27ed16ae5e02641848722aabaf4dccfdb310ed28bcde45d49c699c7a1767308a3e1133602a7edafa8bcb25dd02724fd6a38ff82f3287fd80bf14532931d60a3b05f5550e3f22f849dbb7000001bc00000090d8a8ce8e103a3cbec8be409d7a2f8eff0c5eecc9de737085cda737b800241f969292c83263f294e1fb69644661008c7a45db4086f3fa760b46f5bcaa6cb5e8fc7fd531bc2b22d5c6ae1083e09c4d3a580c1cfedef1b2dc06022dde93f50cc1880368234de8e9f8b44d2fe634d3bfa3c1116b308ff35d86261c91831b6fe62448b76961624b68d7dcf4629ea4e228b87100000090bd519e24a3306dc61ae3017318412632a08d7fdbf477cf37fc9deceb830d2dd87b196ec067eecfb75356ea84d98a6be675d7e4cacda56adb58e6bf5425e82a051ab7ad575ba9a0fffb879d40c2c3f1d62d42818e8fa45d9fee4895227ababb4c2ae08dedbd7868e7d90a5e7f88417def12e3f887a370613654f21c9978e83323aa79e57578de0689da63741c579b72390000009063bf34a659b1a96f3775f4998ce3ae39a5bc290527a765f0471e678f34a465e23a5e88d58e1f1a161bfb67d68ade836ab1f34527a21a1ea93450732f596c17dc14febfa3586924467b4cf7174f307b5a1ebe9061b249f25f39b5536b058281a8c5bd4e9264126a7683d2fbd780696f4c06218715544a9af9f379ef6ca8421d4f5a5cfbffb0f3eb79b995c27ef51bd624000001bc00000090780f3928eb91576884a39487ac01127eb7b9a5e50d96718ea43f4b2a249f4fb35ad9a49c66e568e1be6132af9fb7558be5839cae5fb673912cef2565f1651db4b7b9d281094e1753d3786f8e67db998b0125b4384dd800e4955bd435aa8e3081f49223a676b9f89ea0832a4b3910e5fb2c5617a8139170aaf93612dbcf89eef7f7d974e284d1cd10ed050bb88976823e000000905fb651abdc42bcd38b0425eac4236571f8308230768c99f66a7e820bae332960b57fd93ab27f45c90d4ea9b13e401e65d8d95af45a37271d89008c846e448f3e20f1e5a0a2983f8ebd5c33871ba5d3aa1040a0ba78fd45dd8e46bcf338f5f05f72fffc3ce7b01c6779534c43fc1f36a8197b9bba4ffd3368a0e7390f3051d240bbd61c941b5321c2d3b0354f7fe734aa000000901b1c32814dbe2d228f61bbc89f48b4690e52936dd160e9e591da05778a86c91bbaafbcf70969cbe1aa550f8bcd152aab6e4c2c233481ae1405112353836a292551f84cd3d66a319a4721b7f9cef06f652f5dccc8783a4b06cd4dd62c669039ff0720bb68624fe43b0846fc0d5459b39f0bf0bc56467d646930f77e2f1f2795b343ba6af1f0785518f3b90b7a95672a1e000001bc000000904354b89e98166a672973c9e1a9f2174e1e75475677454ccae4bfa2bb93216ac0946deea01b0bc48c4251f59103205ff4acf6546d10167982d3d0dc4ed129f3609e213f4d01e9d781392b4500f9e3acfa268037e37fe05a73c349cecf8a0d06d658efc9f69d112ea7f81f6d02e2ee79812c293fa8f1f938ef51095033c04d6bd58753d2764f99e5e546bda68a93f44a1d0000009037fddf7426233fa502aa26a100ca32afddf56ea1bcea6a8ccae113020464e9eaf3ce79acaf7853be808a3683e4405594dad2d5bd5efa4dd38e3d56c6f22385821d6f0632d6f22ea3d68f3799a5c9a7a416ad5555a919b22493b82c50b4a7a254e8bea1a13d31a45ac6e97fce4a4029940d1eda7b3055919bf81a6dc213f9c0997a19d927278847552ec9a959f14e024d0000009080ff9e8746dd60d62246370aa0e9327de91d20ff9fd096deb5f4a129d8fa0301f1940aa820060493df3a283a24373bfd15c3482a1e81d1ce1e6930e4b91726f51ca45430148e567af58ecebb4111231f19fe5068a9edf3135d7170acbcec453eacf7c2cfec0b2e94e2b214cb6e34544f0ae77a3f0d59876c2b26f598c66a451d2d4ed519249b13eeefb9ba5570f825fd000001bc0000009001b7e1aa3ba7976e59b12d9b7902b4928538261b7abec7ddd5d558d42c5b74bcf79a072ac57f6db460154e1d707267f9a8dc4103897397cff4b7d0f3ff35bc88eb29c08928b04c271e9fdd1bf932312828106b80554f4289bec063457689bf7e3b1a77bbef582cde33b6a7f955dd099024ebe44fad48d7b021f5aaec6de7ed6f7b8e6e885dabafa223835cd777f63ee100000090e23820c125fb2501cacb093ed8a5bff13cb9d98bdf2f7b6ddf8e2afad290117d7921e13cbc6693499955d409705dcca6936f3a96ef0505c62a718a4c7719b3f3a39673eea8bb1c5664aa52576894be831373e2a66ce4baeeb9b3cb8131feaa2a09194edc559f533c7c3051bc6222b4801bf108328a0131fc298e4e3270d1069c06324f0f9e10c63de5bd1fda1d3227f20000009048094cc88d1afdc7b65205d3697919aaa24b0645dea087ccbd05eb9b3ebf257498a7794c41577a9fc07f57aa77a77825b2f7d4520d62c878ceb9155466da4fb18d060c6b4920189fa478f01a8b1e237b023e2d6acf12f10434dd575e7c3c21a9333bf9cb5d5a83456192ee04aecf76000c3de905b4bbafc7bd6c50f15d326d790d9c2e207ce65fe7ffe767823b465abf000001bc000000902bb23678edd9d4222a245df15caee14d10bc20562720077bc5de181a935fb660863fd8dabea49e5f6b63f2221b3a32ee59c021e833ea198eb5a5962dba1d27b6c0417c818f88eef52c829e73b4c5a0d80965b23e7ceaf017ebb7418d3811a2010e3fdddbbc9e977e48fb147499285a392dc9b9c8580a56e40d389515dc13e7c2cf0f8048952e6f7f8ba8de11d559c4e800000090c40ab75960097cb08ccb5779704e3573153884670882c51d1b79496594c1cb9cca2c2a5d135c5368153698975f36986fceef09495d6471d07017b094c04e4d72a3ac5eec66dc3032da9c78a9c1e506a51b4325d42043015f2353cca71a6ef66ec3b6ff3e37f5b3329eb3527b62ef09550f24f3255a7008cb2681c8e0cb7f818a2ca0d2027adf84a0bd01913e91dc53e200000090a2720b7d1ee63cf4eb07f7a08e2ba88ea387309e3701dc707d56cf5249549baa94e4bdf73977e9d64b8c7fd1d27c951b3838fd87cadf51745187c7415fe8b296bd370770aa9d1ebe037a7669da423a5b0ca3b5a6c12c4290b771b7ecbc326bc3b735b37537f18cb0f1ad2ea39c68aa59124a830cc57a47f7c4a532e78f0e001686b7de77c8141bfa8ab4aec7e4be4966000001bc00000090ebcad0f042f83e0dc516188d56375e13892cbed46f2b29e84cbab6b2976f4e0b78bc264d8f911e8b2fb0d81ae8e81e27e409ef7f2083a52e010f97e100b7b9b47f2da91adab7d7a2fb9f0c115c8bc9ef2b064269ff069596f9cf866ea103bd7cf3401f17b0fc080b6e7bf4c139845d5d1aea1f2084b9273129f858e6d5c237c5f1047debc1d8124473ad1bcef91bb7c0000000903f4fd6837962bb7903227a3816bb451e47bddfc4e75af2dc53794a977bec09c4f0116123f95f5c1fa8a52868c3883e49d32d33ed6ada3188c05d60dd477591adc30eeeb3e3d4046e34c3726f84a5debd1eedb05ba828d3ffc0ca600d36277e37297f1aee35783fa8597d520ff8a8a07b28e4b71f5332a0b29d175c7fc8e2c065466986ba003817dc70d7502849af39cc000000909fb68cc6aff43c30e612f5d4a41071144dd084034b13adbf2f5ecb525cd3289f9afc2b0117e21aece170160719ed9c0fd90fe4af18da222a0620acdaa9d678a9f704c90b4e6ecaae41b91f53524baf8a06fc5136ba8f1c765fcb619e4e43219a19f6fd099ad0c79fcbe750ab3e5cb8aa1495de8ec2cea9c95f3050b744ba67b8e0fe5d56c99c5e794032cf2824fed2f4000001bc000000901f37f51013d4801aa3bc160bcc2fa954d8c7549e73abf48a1150ae118a4064b8f135b5e8913d886829c75795320fa933a1b9a69def1e8bf17cfd95aabc745b6354a31dc9ec7c93faa5207581f95f30bd280e8c3940a3732784194f9ad58c59111c6cd662067c182115a3b76f2a6a82a2071dd1465bbd3e5ad9942dd1e35c8a8b3121e59d1b9724bf06abad9fe21f6f3a0000009078f20442a01962fb1bb0fefec86e16ea53012b034f61aaefe67eb1e9b69fd8a12a5512d8515c507b0199917b004d9f47be78ffcec043d40e5b89e1769556424a3c457b1edb91ae8be422ccaa3778b9d008d385868479cf04df13bd5eeb68d0ad4714422e38dadb97e23496dc820a750c0dcec02e7510031622643c281781b27ffcb69e11cf5f3e95e29d5836aa4d2aba000000902962f159d8ebd65c1e872929b55cafe5cd26114306a7e9046de3757c52efead7f00a5d22bcb05b4c24950f67ebfba24ca406d075dae7a5ed52007bd55634603edd592aa6b0eef78b45f785eac4421cd410927d0226bc01feea663989b522dd6fbfcb2d9101f9fcf48482238d4583c3140ed0b400cef40e061a60c6e7899e8c2b22cb1b3e8a8d5bc2cb4c1f136a61fecb000033a000000ce400000128000000908ae6017b6d135b5e2bde681fe460cf38d338763c948468e36131143628eb17bd88f5561fd3d404d26805f11e389a91ac938dfafce30ddb415047aa6ffe57b50e8887855f2f3b62feed0a2f174a7f1a602d85712c97795c550c409fe7cf49a45eb168053001230ccbd38b86c6612382da100e6ef7bdcd0fe44a56c53f99204741e660e7cd5ecd3f0af35c439c239309c300000090cff1d3d4bd02b23369bfbd7bdfec831b966f01550593013158b4eb7cf3cb1e9dfccf1190d7e365aaee3d2e2ef911258440cb990b5e87d6cdf6cbab3fb49c7d92bbbcdaee23a60e721ef32855791464e7013952f034a0b990add27b4ea53fd7d211977c8ee25ab350c38e22d97bd5f6a0104f53e2ed909ed855987e6e3521308af5f8ba90552096cd23e7d834ca02743a00000128000000904abf03633540c5151c9b161d29cd461e37930e89e8b1a6235cbfa8082313e6cf0bec8a18ea55d0931ce4f40dfc4c86741f7faf853e2d406863db88c2a5b7aa8b22d9e371f7c34878d1494e992af4446515b4021b9a75747c69b4bf727cb70d9e0d61693c8412b8b9f05b5419125f3fcf2b39080ce0fea80062e0c91831a5cdb73cf6b029ec73d93bd2027b873a91c36300000090d93b5935d6f68c6b7fb8ba0f678877fadb3b776373756a4b336a30e2b4db912e66ec20fb8099be94c180c9cb7a8b159e0f4b834e490b8666024aea7d34a303cf3166ccc7f9fb18f1fe9007ba12aeb30f035053dca8e30ca2acdfc211a5814d71ee529ec598466948813ac8082766263b1adf7f00f8c87e1c52b5f98cb2a7452c11f68946542ff0ffd0bc8cbff178653a000001280000009040e994c4f02bd7503132aead9e790f392d492fb3656c3f1c8a7266b3c77a780b93b4e3f2dcb0f15187f6edbbb60c51a19d542f4466d55fdd0b1ca92a88877cd90bdd38bb8ec423eacacd9d9dff2d2db61cb9be0e49b4fb065f88226df5d3210fc15ff5841078a9d6bf54e998307f52d316daa357312e7c8f41b4bb34cab4927eaf1cf6d9769be9ab76061ebbdc874c8900000090f2beaadfd2dab425679ad37d2ec8e098ea35e75222c547880a5554264ae9c6528913ef1f8d9453a4bf6f8a427b466311666cf3d051a4c418db85d3f0016fb1bb3885a4268d08d3af637c6b2a453aa39b22d2052f5f8493ee8024f8319b6c933e913fe391f25d9ad854ce64f639da706228b24504b08fa6226d2f8b16678f42835b9d496c5a8e2a618ebf20b98539c72f0000012800000090f7b055156c514d6c5f6a7d1f0f61dfc61bae60eedfb37ed736d6380bb9be337fd0b997a5724a99bce193e031111260226122992d9aac79696fd6a787876828bab161d96f0234bfed937f8aac2305cacc19433dfa7ea05947e270fdad0ce11189d1c44d7ee339130dffd187013c54c79020c89b20f87b1fbcbefa3ce1f5d99ccf2bb4cb44bae553b8ff0daedd0ab76f0500000090a74e97241f237de7506d4ac93f411d1bc544eb32a1d6935e0175e914f2383e72544485a255aebef3db47dbb7b1076291518bd856f7d7a1ee68847ef30d31c9a27948c2e143d1e64f274496654c1884b514f29a7553011f3d6e95598e7015a54a93e106bd766172c08fd916136c06d2f5144076559f9666dee850bb36b7a424ee0980f36de91bfa2e7d5333e31c5f099a00000128000000903153123282ac8af9c6440ec0cb64e1bd220cb72f4ada818c8912aa13406faddd2ac38e52605fc44aac6c152ec898d52517833d88d2276b3c873a7e62ee8280381f6930910b2fa868d77df1c88400c25c083a63a6da52f641bbd86473973dfaf0aa2f7d678673801da6c2f82a6b65e5c510f7e9c4a5923decf92bfc171d9c22dcfb41ba51c11d769fd05b72c819cdbe6c0000009067fe60ae36b27f6d316dca03c8ef767c527ee7c733b6d92e75e2594d1675d8fecb9d3c2e26903b0866d0acf80fd954de60161f44370714d6ff8ee57862d8ffd7e6efca4bc4be122048a2f7992a9d3b872cae39d2142370680554c73c05a5fb9c5347d1045fc4d9e5d256e287e6ad5a2d20547506d0f3702b2e3f9658a43b57944205fda1b8f777615ab43e92b91ed306000001280000009079e608f27ffaf88bc8cb6acc8ee4fe31a6e8b6d75c22a2c501b78400674f13ee819e727f60d68566660af82a43fefd4d171c8c26225da7554b88464646ce9a4d9f6e873c460a74c51f999f8a9f035b8b0b72a58b3a334a721b176743dd28cb35d97904b3cb2c274815dc267b082870eb165bb0aedf931d64accb50fde038efc974269e3a5c910afff8b54f8885248e7a000000903a000ec1345cd36d5bc9a2c8ab88f1b326d071487a82c070d4d785657a64bb23d9d162482d12cd2a925b7b4764b9c0d3bb257b49f0c8b2b4f5a8d798b02999951146aeda08214a90431ab316d6184f350fd1a34f0a7fd348c25730e7cbedad352a8ba10ed2b2cdd6104838d2543f47cf0a325b908749ffdaf2fa0eb9e87aaa64e13543953e73cd5b71fd3b09a90711730000012800000090a46deeb41e86c9f8cd8ebd074927cc62c69414ac134e4083d9d8357d1a9e39a036e407c9b81f186f982c5ef326ba4691f4fa324cdc376ef5fc7b04364c972a0836e8136d2c37c06da9d76d04e5190189014d75045e18ef66e7ff0f8af8e2675e96502639bfa24c75fa94d7f714db293209b025b56d954c2a52bc065bc74d8d75cdaf200e0303fcaf3778265aa71915ae00000090df8116b5f4dace89bf91c98ae48eb03e5f0cb028f1a417ebc514493cb2e5bcff982e7fd0b03bd8be41dc0c91e1e57db9b3f18ec0bf9a78c90af6e596f43330081b4736536817ffbf70143985d68456d8122eb95d44ec4858eb15e4192da039fe2502ddecc07cdfc91b32673888de127827d3ff19853def30c3bf421bdbd6a17454599a157af2b2f3f34df7819ec9834a00000128000000907cf3c4a6899d753d9958979b4aaf368cb6897220ebb062c96386f6c4557999dd69f3f1fcd10627b0a54aa74effc162a5bd45b11a27215313464ddc3148c1a96c7373f9a1bb4bd2c12ca801e4f752872a14e6125cccc7a50d133d3e3a9e5443f0ba73df26a9c48b477b09eb1610d32c6b2d0c491445fca3be631a159d0f53f6cfd954627e22570be5162d5a3bd14bccf000000090dc7f740b81ca06722aee446f67390d24c1edb81a0dbf5df9e949b68c36954c22a2b7134c417951c573fdaae50258ef58df760d98ca7c370d6e055d94b16a05f4619d99822bf11812bb65a864f2966cf60ca4a6d7cda595984e673f48ecb7155703ee50bb14e70ac2e2372408f57af1a727cdab69ff26434d43304ade33359ed9dab795edb21a926e232489daf874226b0000012800000090939874131cd59c8d928a2b4c130b77386ba48f81b56c36ee5bb1f8c9b8367026e9761b2191423d8607385ddfeef3a1dc7470cea6e8b64307a157eb9c13565bc848f89360a9ed6fe353620a00452f4708233836128baab151af93ed6d55f771a63bbd9a9cfc6ab7d7471ba2af808bc7441a8d269f9db071b72abb1545a0642a1080668074712c65993048af8f8b471baa00000090ec45a5f4e061d776aa01322dc90bbb23808ab4985ee065faf4b6b696f0793fea94c6668070d34d1548c418119b345599aa566c9f37747e9ed7ba4ce07f35e43b313be77232157805e9b2f4ea440d1482072f15721b4f084cac7438e93e728565fa7777fda42f05e57fc749195c1268562f6cc8f844b6684321bf17a5e80e6271dc1689c1e3886174b4b977c957f44f4e0000012800000090c6a0d985a24eb505a74590b75c2019dca9d4ffb6a073985fb16fe9823d05e3902f01312c869e3cde393cd050281dc7710bde0f3e192ea24d547be832a4568f9281b650c3550fb3d19fad36c7a9a4bcd82a85884e8d960fbc5c0ae20000dd9053cf73bd2def3b1141ddb0749c978119301b5076a60300d5b3ff956d4b9d3b70aaa28ca472dce4f7b40d407afc71a0b13c000000907a136f6fb0e760f9561f71b128178372ec592003725326680648623e016679c1c0626e0d87ae913d0027e01e0d6726fef5d7913d053c3b87f446a06df9c975c775152da4e29710dc38ea2d7735571f9a2b436dc3e79c310a691c56371d592f587c5ef62da4374b7dd643e6c01aded1811f17ef0dc310ce3e71e1330acc3823ae356c9704001cef29fade7a91be6a720d00000128000000907a71b069f15c247d5a22ee60978754b545f62d2cc8481c1e2cf3bc4a5d2962f5e8dc2f3221febab5c60e53497abb7befbafd6bca0e7e1638939646a708705be44e0a2043c09fbcae68140cd00941a4c7044810510cd20b07846ed316b9e013e2389010a6f5bd9849b094e59def62de210b83550683c0a92e6143b3b2220a76e70bde3ed85c85d1feadf2adf68e5789da00000090b8406e1cee5df6b62376c4d28a408a46f9aec8350d4eb67b233bdcf9546d297e46a388b5b70925eea5a3c9b5d1cd5b1ff708d04181bb3af657516df0f26a1cc20c5467480c5d6109c79fea2bfc88ac8f1afeff91b00965ab77390ac804c967cdbdc934f7bf7e95b24c3d68b36c2de5ca05b74ee7cc0432ac5cf073db729d830d01e1e6ea208129e8de615a7d978166dd00000ce40000012800000090e63cb00790f7bb0ac6223cc6b46242a3325e24a086634ecdce5a46f67348eda3eba18ba74ae7248327938f17c8b732cedb865ace049cf1af4f7668bd1d8959aed3af34ea6323d60e91cc7a0989b4963601ab527cd86268353780360d40a3721afb9c00aa7a70f0076114b9ba6b72bda815c72956254012d4e68640e2ffb3f04b8cb2c1611d25fdb3f7d70847c00c2c3200000090464f36880bb8d12fe68714899ef3c585ca5ad2bdb2e5a35a1474e4a89fac77f116261c866d58283411c8825642c34156a87bc8a246188f219d98cb39badd958100b1fff0f90612c0fbe67f66e0a7f70f27d554db07dace5dfb437f5a5585fe8a97230750924fdfcb39792c1e03db296f07aab14562867d83c11e8e25276cb4ed6dafae917f382f8de96771aaaf8dc67f0000012800000090df28470aa7412fb9a4732e68f4548c573fab9937050d96182b96dbce36226d3d75297de119870fad24a200c047e3939124690679792955ef63c7e0d9631c004577477da543f9c278176b61fa33c594f80cd4544d7fc0bed15049aa09ff42ae3f3a531c6f029fc1921b5e196865e2b8c819cf47a3efb7bfa96485497f0340cde1a808f87dd998b881d58a722c143d17ed00000090a5f11742f218299dd7c54f36ffb8a3423a944d8f5b12b197d4612b2cb291f5f865e2da3b360dfa96c94c23e58c2cee7d571e530b300b770e5b1718c9f89f06e5cec49d6aefb142098bc3f8e5c45f2b612a4e144f01a387260ad235cb38dc41ad1b9c810ed909f090c301752174caf38d10c00be8dcb99085bb2972b8582a631d50296012d65f8dd0263dd21c18fb259d000001280000009029e111fffdc5873236f240dc4dd12fe70b61dd6134b839f0e0f70fdb5e7c8873d0ffec07de432fb8e21e5de1b0dd17663e24c28218ae0debab51172ecc67469025447b71294caf1b6f3807c9a307c789079df47927722d506c8971c7284f4063c04d050062aaa0794f2b9172907ff7141b53b427c4ac089b2e596be4dfe43e9b94a4159525c71a9fce779e90848a09a900000090d8204fabf43bae41531cf809a3b47351edbe61a93ffb49b4caf2c838c388ca35a5325a02499dbb56464766c2ba0203297aadc9bc523575ec6859de36ce0ce3072c4044e3a9a0758122c5a730dfd8d20904e473bb9dad8b200705dca6fbe3d04015b0bb3e95f483c43c8f9cee6b27d8980cb74b8affe2c8c2690d018674490987d8012128761f6062548e307be10d874f000001280000009079c60376794356cd199678900fda2286c904eb74172b258ea95408af9736a4493a51b78dbb36c3069605d0e41ff37ea4f4b9bb596a7ec52c50f21d5193018b9859f26743dff10d084aa1498722e6d03e2a0300c79d3f77361f9ffa5d036b1f1fadd3b10c5aac4cbbe2a777275b0cee9019b10346c01f60b1979b2820393084a0d2940ccc6176f4b17f9244102af19a9600000090bada804fd1e008be6d2ce121aaedc0501fcd15e97fd4bdefdc6bb089f1236b196fe5a8c7afa542706833da904453e5fc3231fd866b5097fed82f95342f388889c9984d48dd7a7b3bfda42d6c7a5630720bc2ab5cedc1a625957844226af8f58d3caf98a2f824d99bd035096cbfd5750910127403a5a7c77f9a99db87fa6bd5e2738023c9aa4857aab3d61bf83ea999990000012800000090dc4da534ef290868f7fb0eedaa23c0a8c4165ab70b8967b6349942c6bd6eb1eb018ac228b5d166bd6e10a9a5f5f84144a263e7c2d846b52284f905dec6097ca024c9964dc16e7cce6f1f69ca59c1cae01a327bd266ff0713e96d53b977d7472833636963c96b05db068c18801d3fc0cc29e0c73e09aacd9739e3479dc5a58509ee8e6ba96e1c84e3788f75c00b0bcce300000090a9ccaefd804c0865c0da1251985361cd79c6cfa6d8bedf8417db6b728c47b2d6f39b52319562c61f4e0fd612b2cc6abee8acb18aaa0e98cd7ba725a9518ee0c17f5111536c8ffd61667377177b0c0c12279c45cbb4a8e26a0caf8f2417568a1247fd0b57cbb8c0d027035627b765fc1e2e8822cef8a67af8c542d33cc08189153c7eda896562ade6bcf67cd951208b4900000128000000906c15aa33a9518988439f06f604f18eee64cf288665607630443e88ea2b2f1ee4091f57b32c9dda08c2059055fc3917df42e4171973c3827ee8741f046c26d9987f25dcb19dc717ed7a136c514523dcf6132aee4eb6ddf4388ecf9d97f5865fd900559060eb0f30ff27d1eac5012796f621fba417bd9f039e7fe6e0b534c6672f50a431b001ca6b3a8dd98ebf7d9751ef000000900bd97b1b638357111cc3a6baa0fcbdfbdc9574f90848c7a0f725dbceb28402e72a0476cc165a93109c3ad17c4eecce25d00a5dce03489f5da3e07049bc3bb320589a79f8515e62fdcb54c29887206d3c14eea28d267fdae7bbb21bf4361694e44f62bde9d7064b9003a6b162bb32b51e2d3a9d68198afd3c397aae2008a9e8d5547b5886bb25cf5ce2a9efd6b41fb18a000001280000009005cd7ea5043430547b36ca913148eea68bbd30c9aeb982dd153e270b09c187ad31d1da4b518331d6f2d5285612e8ec7e3fbc38847704b72ec1b7d9361e130db6d5a124476285b06e0b53d72d416fcf8000f6b720970a7d3eb475120cfa6ffad9241c2460dcf69d8f6901df0d8a0ed7f525e80c451f61b0723c2950bbe0460b0d7e9cfeac0a14af247f6b2aa6b2b0f202000000904a91b2c4556b0c2c18bd1b82fc9a10d578b258cc76fba5f0405917f24dd0b59c84815154e555d3231620c53e45de4e897d116ccce16fe8b5a288b084dfdf76b687f469ad20ec5a8b8f3c6bd13eb05e4220c03ae33ad4d580cef8d6889acd936d5d68237b909ac66343694015ede09e970ad5dc9545b6e6811c294a27c4982e68e00beddb33a9f8d9e54288040babde80000001280000009074353feff15d4a96331e8c96e0f194cb8f4228dae705226ea556543fb4f9ad281a184d217c87e33b8c0acd3f33bab6dfadd648d4a118758236694ee63235d0cb6d39071523e3f9ed56e2d22c0acb40bb1e6292d13943ac87d931ec05e1572c5c00292e6a2d5d8b43d15d14e90327b5a32e6b2bf4aeaecd105a1937b80cd7d9d26ce7c87c038b008bd429734617626d7e0000009033d883cb15f66cf10636597f6b4d260087899c9af11187c2bd21bd6c691784e413466ca36930d9097d86aacadff1a92e56986995c57dabc03071d32e8d5899291c26aae86e894cd18cf621470e9fd1ed0cf04e280a249991053be777d2c3153785e389ae7744d1b0fe8488ed808777ab2551605b8380b00bbe78342c8ec00ab89ad319ef93a54d4fe933e7af4dedfc620000012800000090343edae0218c915bd4668d00d36b433fe9d25cacf00fa1671041ff09b7a0f0e1e8b401354468d4e16b2b091d36dcb011d1acfd59006f02519c9f4e7de62ae9e9bcd112a80f3dcfe61d507e3956a2b9ed0332303d43fa48525303cf1d388c19c135bbf93035b4cfa7b17fcad6ea2df43b0ba5a659441751bb9b9b0029099978b17de2cd06bccc4fba6d2310ef92c08cd8000000901f1506aec58b01792799e7951fb8e9f5635f6c526e093e6807a3a92179d33aedb6ecb1e42b9486270ea936bbb7e7a1ae0a8535ada379396b8c17f7abd28ee1b3171092cad4c6a85069413e5b1b5b72d10c3c8948274030268e2357983b0810104c62b5a5adae89aee22e2d1f8feea50b1ee166cbcf183d2822a3f9f047da416ab16be50c95ce134ece2c46c00da2b730000001280000009017743c2d174b1eba395df0f38657bf050b34813cc900df131125d77333a9a05e85b5cbaff8a72af69a9cfd4d8c3dcee6248d2aea6508c15f8b8419360320dda002cee53214089cd89f7fcfbad6b9be2203503a4b7bb6b93cddb63ee2e71b38405cbe0656483974b487aaf761343f1517056455a66c69282f27472dbed1c30eed2e6354891e4c25564a51b6c33989f6bd00000090b25da2bef33a0f7e3d6ff772df7c27aaced22f6e0252d8e904399e9bd63e56d27b455c5f542effed787b7fdf546e9995204e1c8eb3b709143913981352ea023669c8ae52d387e1a94512bc07447b36792031d8a3a0f534ab3959fb02c7ce56a7157481929ba14c12682c5330e38ff36f1ed76ce1904e89574c0a341aaf1a7b7f4a5a604563fe61cd435a8f9766d6503f0000012800000090d15b162ef3d3b13b202f4a64b3644f8d5c712cc3bf4d002f736233406fd8eac53d74e374d841d4eed00807e3cd7e631ccdc92dcb2179af718a2645a7d62ce01fd2d889d1f505ec8b0d2b169909ec01b127eb8ace5612e7e0f980a4d763a252e857c2b1a4f96c93f4d7d5c8faeef1bdf519b9ba5d2a8c0fc679b87626f982fabe8ea0c146e938f414dd56722e9153e00c0000009005944da66e238176b99e2e5d23952859080fe89ddb0449eb5dd4d51e8e6cbf22b62ee34866e6f2470ac70a03d0a51ffd5859915121988468397865e21d38d6b9ffd473f9546c7e3559aa64f6d9e96b31239dfa3dd936a9967338c7a477d01624635b153840753632ea3cf0579efb3ce30fe143472d2ca14222bd63b55b8d1cc6995b5363daf3d4431fb236bb9895b6fa00000ce40000012800000090f2a6dfc6e4b364aaec9478a4716462a97c1d58fe31e8336a834f0fe64d232f14aaf208e2e5e1723f42edc8135b521e1e0a612e5aae1782f14220ea3c236b73f1fa49d70032304025b911d02156fc27020d584943c9d58d532f9d34b28ffee8c3d1b7a4a1345ee66680bfe7d26e7f5480111dbb6366796d3bf4f574dc1222ffa9e1734f88664b401434ca77bb7c4df1930000009065b249696cf1a95aca53977c7ed04aa853daee9a5e8aa75883f0f82307082bdd8293d81b5eaa62f4ce599fed7777521686e465b416de7825c8aaffac8e46805488d06a0c5dff8ae0a7d386468b61d2502187f28a1826b163ab321d96587091fdfa9a375ec3d6ac9a870f44c1123002ff1eac15f7966cf5a22634a252479e17bd9b451c96555f7dfd51c4ab8e659169ac00000128000000902a5bf738e55daf39b770a16c6d410e420638a1b42b01a0d7fc5452363f99b419615572e0fba1ddc6ff3a820aabff93265895a25d6c2c651a10680baa6678ce112834632d02a749a1a31a0429a18fee3a176373cd3aecc314770d6e61ef85864d412ee8fdad48d5642e6473e36170fc8004b30f986709c484aa269a8c4574f0979c1b51bb9fcd86e0341fd3dcaefa732300000090489547a0dc14aad3a0117014e18e7ddeafab6c5514a39d5501006b216d803ca1f5fe0f0f9255243bf9d07ea5579f12087a9039883b502d84d647dce2a34c8c42aef2fc3895c2b8c6c26ca5189a1911f82f225d0f198478fa5fee254293a7a0c5cf1b78755fc9fcb732ca2aa9ed59938d15668a9ea2d14a5ea91cc1d17faf814152cebeeaa3bc52dac3031939a30828d2000001280000009016f3c4ffee095bca171701f35e4cd7512b3aacd332669aaced1d1f0d8fc14968df9d1b58b1774c140f2f80ad17bb638c1c738b89375b6f8c66ef71c150988f6c301608327f2656f84f0d3b87f01a6ae5067d6eb5e4603a74084e0e208e06ea2272b4382c16eeedab05804824cc916ffb281a8c361e9c19ecb2de3d652a9c8f200930b45c0418817fc724e3009a4dae51000000905a70670a05add78b99578d58e475738e519e8d223d8a7e3bbb3bf58df88360f57f75c73fb678f2f81315221cbbe5ef5ba94e31d230fee618638c367e8ca4338b57294011cf6c76684a1731320d11835b163e3d5f651a88b228e2265109c4fdbd352d949d36a0257875aa87a2072d143412a1194f09f2b4ea6ec475b4f44d1a95bb8f9404472b0ce951c86d4c4fa9ca2800000128000000905a25e0b4074a254a00e9e4b4311539e9c87a0605bb890d4d8528d6f0e32276814a8708dec671d5c385d3e05739c7a29a348ab687749207989a162c259e1016c9fd425c7f0273600161b856556f572d0713fc866135fbd3eac6db7e27c2269704e627d2046429faab80ecfa403feee3060e8d0aa54cd8cd0e4a96cdcaceeb8a064a3f5a54b0cab4cc76536569148ac897000000908a6df6c2d63108c69d3cb1d8468ae7b0fdacba6e3b64ece05d2d83b0248481311b5f646e249da6261db2aff92057fa8d1c88321ede1846146ac212e2854d71bc90977f118074069f68274a6077d9e37a14a4f80356db5183e3e2462cdcf44408d0b4f8583017fb14a3312abacb8220361f729d781e2d0c7bb068d5c212e27d6a499464462ec88b2cf9faf5dd4fc82bb900000128000000907ab775b93d3bcff1197e4efe160395070c3f2d34377102df3ca40479df0cef553f6b613e86bae2340b9a2ba947c8c8d6fbb7d8da8fcf5651e1ea47979d636824cfe694cf1c733cd4dad9b33e5b03384b1669bb05debfc206e18ad93d3e5aca0cd355a9a9e66f5cedca0c0d7803602252197b4b9a326307d2ef93cf1c52e583c5f15e753894843ee195d978aacc9b606100000090639a3d2ce92d0d2ca07b5841bb24863dbcb295e1b37405749d36750fee245ac837799ccf18ffee3db14ad1f78470b95fb29c319609aeaa84dc3809409354db3cde412909a43aac5726e4b1ceb51ed5942b0ec926610ba9ed133e225be515ebd3cda3d32bc70751eb61afef2b097184b806a0d9200209098133ef1ba0dfdaeb2c8f894fb88fc70b8a43bb4118bcb9e6a7000001280000009028a49c8bf8e6497d61c3422fffe9ba04d4fe63243bc849809d4d6f8ccda3ca9b2461af482ef2cee990f1511ca77cd70ae319b81cf1905a4fdb7bd487fc0ddd197280e0db68a6f2c6aad4a7fec335ed8c29f1983624db051ff084b816791a9369cf8aa9a4ce6122fc50bbeba64ee495b604afc85877102c73ddc28539468221851ab8f4464aa71f5714ea130306a06087000000908e573f4ff049b51ebc4a82e8496fc3542c9614346d45297d49547745ab63d7ce1823b578a61a83db6118c44b7389e480d8fcd3fb6d3701d4d3e5ec79916a67a5df4c596622a069ec79bde38af4934243139196142d8949ea0b19dc71b47edb3b746d136a5de3d75f5f3095063cd082bf2d99d0d5bcace6c0608cc59b518af71491531e1e92c07fcee7cacc06622e1aa80000012800000090e7f111807a317b47e4ae5d92b7b83ca055556314533e6726b7bee354ac3f706bc398bd861948672fa5c744f6d71820061af9a59aa05a64298db4b8f6eec92410e30e4cb46eac82e3ee91d3b5cbd6a32f2086a61baaceb641cec33dd41d9300607cf09862aa07c68938ec6cf2da711c7a24cdc553f36cce7153e98ea1faf0c8feb6458fa74c3a8b8015d13f68f1b4faad00000090fa4c282b109c5b736695b80bd15ff3857b21a81af2a6d45891b38e20642cc5fc4809ede28526ae4c3949dd041db04e51421a8a50e292670798be8f70f032208676d95d2d5d0e669da30b90107b9df4db0526884ef9cc64334de1fc32d68edf518032431bc2f7969f3742dcf939b3fab819b84bcbc494c60bd75074a8aa419d0e65757b8a8d3d45385f49dc744f2494900000012800000090575d37cb7e6d54d3e6e7cf56a083e6de489989a9afd062b320cdddc472f2a6dcc5e9452e454ba723ba103e5944a934353586c25d1093dce2ef2be0937dc387d4f3ec68c44f4bb146ed296af45ba722db2d160be754560fb4132cc59cac4bd8f34c8679c5f3a1100f48bc2ee0297913dc25487ec760d1666f60219b5ba2719dd5cc7314572b070d858ca868237d21f9f9000000905c4a242a73c01013b39b88ca6192db016f923ef22e5282142c21af1fc56ed8d3d8712d54dcac484111ffdbd9e80a13945a58a3ebfacf570c9f6e057f1a67b625c59be4868ca88aa0b9ce2c139d52655616d34c0743ba2d82147d6184055794cfacdbee9a616f8def4a12efe41647946d301f1f19b0aef5d53da3bcd03185841abe9fcde5ddfe1acab994e9069f6bf809000001280000009047482e38f4982ab0d639aaafac960ea87c2e4e4e91c6f34fc7370961bd054a01cd05dff22ebe9dd03a3317fe2139ccd3256109b9aef3886b6fcf258081cdb56f939cd5c91f6d5fb000542b97350f78f221d45ede0b9a56d752be8baaf2b780c5624d24e4a2e267f3fac5d516a3edd7c91018464d8b03222ea0c45603dc676a78c43d3c6f1e29be670a4b568c285d306c000000901054da3727ea61edc015f6517c7968f3005a4b993bfeef86bb35173b514f962319e02cd0c52aacf3ba6a25df8c266e397d3895cce1192647e6bd6ce0c2a99af21aac1873cdbca36f086c55b538e092001978f44b9d25c081ca3922daab5f98f863589bc49539e37981932bc311ad3d741e212b54370942d9f8d9cc5e88497f56674b67f13ee02cf0b02835cb35bb550500000128000000901c67aaabf232dd1e5dd4a401774183dbb92643dafe9e37474a5dbf5af565b98dd7f347eadd51272601a5e37ed55a389e0451872169a846c7b05895f7acbeaa4f8dab8ceb4a98cfc6e8c322d9c01dacb30ae4f2d6005bd7bcd31c916ae6133820f42f7a96eccc245b9f619a5845e6bb8c2e7d3d189d1a8498d92f8b24f259f3665419358a3bfd2afb9e8dd65b23c51fd400000090890d1e42f9367eecef0ef460f23f00f26439772ca68ba001fc4920f3c35e497c2df7a35ce968271d92c02ef065a96b118d15338303b72433601f256b41ce6b1bd44c8c5ed65992597cb43b7654e171ed1a7ac89b1703972ff384a87d14852ccd6c4b7109cfb26e53282fc7890096700b01f543f4795fd05ba7209e56523a8075e954d7fce44242a6f80663f07977855400000128000000909e238d2bf97aedbca895f8e81240c4091a4d6c925b6290d90930796c91af130d5831de146886326ed259dba0b6e2a49bf2121770cff1d1eaf879af515b5f6ca747cc3e2501d05c2e3bb1d0c0c3fcb10809cb8fa87f595909b126ce142171e6791c9780216ddac689e093d9633c101f671c7d5f33beae83145222f53f35e7ed9dd1c9156d285c654ae770131c8cf2d43d00000090ac184d834b01604cdca29bc485e689224a23fa6f459ad340958f46050f9a864eb7553b5f79dd419f53033ba701f358b3a130219e259faf446312cbd242452f6f2e97e7a30b3ba0915566b62fbc0b32dc1b0b269426b4f01b641f148c3037f3282bc54ef830e74935aa32913b28d666c827cfdef2cf08479063c64085ec646664da68cc67cdac47d9389a49860856128500000ce40000012800000090dd13dcbaa27f29af8a49ed03d3fb6f25df257375a719f1eebcde8e816b38e8a368413836ecfbaaf9bb1ad37f400483c6faae0efb47112d268a26d2aeba6770cd103f54a9961021140af2580a431542d22dbb9f2d3c66dae6b62f9df4ee66e526e57394b09e2e8d7f847a7891e29d18f32010b1f61f58318492970891419921b4193582b71a3d77100029f1b650109c98000000902417f5f686ca8342a33424af3a725c8ce161f83fedc3115750ab7875ca386d663d35bd14d72a8ad2a43a5522c2ba272766be04e8782d7694d184ca90d203e1dac146e76c2acd95fe7428c47f421358b7263ec0f68ed67066bae896db04a261f51ae21a0a5375636b87f66827bf1ccf8709fa34a22dade740cb181d4d22a3f6268892e166078b8a0c3ab6bef1df85c013000001280000009046a8b99ff4237461e9128065208db69aabf69c6a316c711141eb30a945665e8809e8b636b5f277011aaf797398605c7e73ace050fba93c7dc0579b359bd927e378d393fa452782fe518b91b6f50d8fb21f86424c793876821a281712921ae15016c1585fd44a434781be11bd7d919f38007b6ad4fcf1cf51859de1dfe9cd2b7c536020be37be80c5752f5077a1baa60d000000902825e5c922ce813d4032e9667446af97b746e5a055e9409f99f46235c41917a78b7b5c204208a9da115da0cf4a651903b4a83d5933c85ea481b0233a24d7d9d79af9febb3f55a6ba061bf93b49b6932928c781c98a181875b6dcd542581062af10f1d79ceb1eed834956f18cae39cf292125bddf74820ac00a0561aecedf8a898e4d27113d0839cbefe144740f5d2d230000012800000090bf46322853c0470b44183f55ecc4ccce9bd85a561d0810b530efe91b5b512043e342a47a4467de0eb7d0b8e81e7132ec8c558c468c8a3d194fa27a5819776b617079df4a4180281c2c6ab18abd9f0e6a1b11cd0a5560ef2ebe4c2fba3a1577b5de0db3d65f4b7c87ccb22664e9ff2bbb0f5881b341ecb35a3b744752ef6fbf7be077229b7291f875e44eaf5032133023000000904cf6a0f4062e35092325585b338b98a0a7551bee77dcf40f8b9e2c8482a8c70ff8d9b9a55958c5672ba4b3f8686a0a38f01b473aedb39f79c447c93b997b2662e061f8bbe24639d4c169f001f6e7bd7628787f3bb97fd31145f9e9c21d30708e2c1a4b8de501ead286726b6d732be6a326a5e081dad1abed1f0c59c706cc302c6e12b89c7c9d35ffd2d2ae6a1b1eff7b00000128000000908941692bc4b6f96359dec7e2ce44377d3094af36814d90c4a9eb3f615fed03b9ef3e4307d7b264a88704ca13c8bb3e0322348c01fa04bd737780bbd54867efe72c0720d35e466068fb6e29fb74e1a65b2443c801f4bb8c6bb02eff5dc9c0e5f90719a520675ec3d13ea5667ee743028721f85ca31c75a8c0b76dec09f2dd72b8a48cabdb37568ca269d33da098616c6c00000090985347d0734db684f784bcd328e803e5abf31dcc91511b43d9e91b80af228f7ac5b4aee04f9995de42e6ef0d949b2886232147a9a2853fe53c0d14b364d6fdd343456111339d61d6867f77acddef9e4f2314c29b9ee01e9f9ddb77be80b93e591c55160c367c0f9d55c74f57f12cd686010e05aa6922ea14f8246749cd155b9c93252e0a84d9a0c70380b752422240d100000128000000904e06322cee46fefea1dea5dde5b6178e61c4bbc90a33423552f30d06e6a29a94436fdb1e54ad228513d13fee625cade73ba26d17dbee052a96083ca346c8b1394603e20010dec693da5fd7df5f7adbb40ec6ffc7493396bef2a6a8ed2a58a2e0777552b416ab5eba3978393d0570154b056c0e8a134d75e86bb46310f386ba7227b833f579d5d2a26ef9cb0a3da741db00000090d46206ae13047bea8df14e0501ce058789e5f2ce0b568df31888807d9c9bb44d0f6f5637d6a6b6299d967e662b73868f975b55f25596accd4a04f90204c6deda31ea1b35946e0289b1e4d2d98eb950c207cdfec1705664556ffce8011db272c79ba56c4e90ff9def836a1b7ad0f6c72505bf7c35c3da8bdf2626d94a27d9dab1bbd2fdda8bb15a68da445e527e838e6c0000012800000090be8491f41780d06a961083034c766d60a654bcef483a4f958c63555f80b6ff5dc83eca16285346aef52950307f581ee3405d9e8a82c441f531b9c6bde9d5a8436112622197599eacb7e7dcde53a9d6570244549f32ad30e521ee950fad0c1118bdf309d79db58c36c858a2500c115e0a04f1930f87e3b277280be27e17b78242fab7aa2e5df042fd38f21e3f8f457a3200000090d4218fc5d04903e225b06ca321647866643adda3a5f93c3e593691047ca0a6ba2271cc9cfcf53295ba7b223afe10cfd78a9a3df59203c611747a175a72b050edbfde493e8215103300be21e0a1f998bb116938741b8107a9b7d306ac77c674dbcb2617523f0f93f4332f14f5bbb3ca61282a12b255924c748a9a55632d769009360b61b75a0182e6a0b9284cb8ece84d00000128000000903edb1ef5a79f1e476120d592fc61a99e9c53fe919b0b097d0c0b676f7627fe031c0ace18bc34239c6aafe86b08906ebe8b99f38e5b116091af6320ed1bd0c04c560b340b2eab35a60eba91e54f448507162fcaaa43e1836286a7bfd67b70ac1bde19834d3f42705abb34de8590d7255223e3b3a9de8649712c9045926a6b96059e599c92130fe7172c48da1a8210faa50000009037cd152a57274d6dbae31d63ce20135c9dfe2a041394880643b8692a25bcc60a384cb072fe55bfae112a81a64e9566d6a50fd99490ecd1475a52feef629336780fb3792d932e73898b7c284ffdea0b0018c5779afa4ffb0c7e1e14d81abbc7fafac1d47a6f3fe403fc0ad022ef73920504342354d41109a010310d4657a6ea4047c0e51feb79c3ad7072bfe42253b52d0000012800000090c058cfe0177ccca32a24986e0bee78ba1e4f9a45f11f69fefd8d361eff8073b8914111a7c98e9271ea3957d1618dbb1230e5d7c53687b42f77a00e895e9cef3550f32e31f676a72f5b75e47ad600b7d42e76974a3b5b3d025a401893dacdbfd2109a20d9e5e3c638722770c03a2c1b750ec0c16beccc2a09638d5c8a024599018794ec67d804c3145b7a1a92f38b871600000090efc71b5b771fb6040ec45f8b716139a6b802765b99f8050b7b672e31487fd342b2c0f4e7d3fc2b94e344f089870f6e3e096526a37e1bbc1fce2a70aa3f22e0db7da068c8390a382db7ed5c5e41c7c1ac2a0c9a29b14a35532b89e8eed7ae30fb8c7b18acb8b77faf97a0f8639bb60cf2217fc23e559c83658bd4fe5efefc07313f5195d6ecc30b621e09d0315038ba880000012800000090b293945bd12e8d406ebd163c98f00a562608862afef9c811c2b91c4fea017f46503651eb6001bbd0191474a34a90cca55b0addcaafabf31b8ee5c44c90acd16a9baf9117e3d93b917607c1e26a55783704fd1aeb4348a0ff9ca465343575f256099eb772be3e124968e3cc723dcc58c90ab04676c9f8d64a9caa42c80d3c3d1c3b16a1c95002f38ea74b5e96c911105100000090b1130f2cb52cd99a89131f63af3e1282460d49364e38c27280a858078c2cdad4f4d08ab90e13472566cd6c95f7ea5a82dc14775b56a1608993ce3592f9667a63932d7bd06f411767df405d485c2a2bd3115042e56fec10e71476834f6e9c8886ad33d46cbfb36a5d8c3cc6f0cdbce4dd119ebdfc1d973306b22a3f6a9ac503a84bda7c6713ef6428546ecb615241d205000001280000009052b79f81961041848e37f5e81bc82dea4b231a804e1c4f4e136e95883ce8d120f04a32ac75ba48cc833c8b0b84b8faba75599b791b51ed9dd6e361fefdc326667eddd06382bedb59c3d6a8a1a9c2c1340897f6287acc52f489e18971f91b0bd5871a4888da1c9c2d35726c58dfaf4f3a2d0d2546b1ae741b63b7ae87b9cbdc1582f39bae2775256fda84f27b554336bd00000090027f6391e00821154d54b4cb0fcebb433b9357544c8191fba1cab595c3a44331538b76451430ccedadf9c68d4635ca5d9201f66ab1745c04c3bdf520370d342468c3c1cd715d18acf5af6e338f5b6c200f229d582966fa2dde6e1ec9077b62157a481a3405be207973e3d808f3bd01501953597b74a5f286591ecade14926a4199b00490007ffbb4d0c47c710ecf4baf0000012800000090264704174a964acbf875467752d9b8c3425f7831274dd0e9a52a6f86c0e82bbcad6e0fc871168831b0c321c984657acb70072acbecd04a4a74898a51a68297c557bc2e8aa57c90c631898981eec68bc02c450ca20800d69b151af35af08c5c1bcf65490c65cfde331b11a69be2e8db6012879a7659512a2b1d8d0ae99a907fab8a0d346caf670e2e0d66c7b8c513df610000009001f8c3e62bde000c69f501a59aa84dbce6ddd03929d9d694f4993ecf330b8da68d08494b3eb64e9ff746b5b13d2fe131c073a22a252ad59f71bdead76a17ff1ca77a8130a2946f348f90edd6c025f05c28f24cfc805bd774570ca71733fe4159a55f41c542b64cfa402b7668723ee04328244dbd8f295c588b8b303367f9c2c285204839956439d6f2cb1ffe5a4bd821", + "calldataHash": "0xdbf6d088e40ef7d0e0064c202f4bfcf4556b135b70f9d335cd4d587d79e0aa43", "decodedHeader": { - "bodyHash": "0x0ef928e73adbc5f53790a7591f274b0f4179a533e21da23f2ed7defe5af7bf41", + "bodyHash": "0xdbf6d088e40ef7d0e0064c202f4bfcf4556b135b70f9d335cd4d587d79e0aa43", "globalVariables": { "blockNumber": 1, "chainId": 31337, "timestamp": 0, - "version": 1 + "version": 1, + "coinbase": "0xdfbe2253407dbd0a152c036a2ed1237465c243c6", + "feeRecipient": "0x1cc1690e2bfa2c49ad640289205cb9547e1fdffff97848aab22d8a541ec3b9d8" }, "lastArchive": { "nextAvailableLeafIndex": 1, - "root": "0x1a005071a487e4891787073a91504fe6ea55280bc6f65a021fd6f7ca1f10aa02" + "root": "0x1213a7f84b7be98d122a1b7e15013610eacb74b328c20f369588569b1f6272c4" }, "stateReference": { "l1ToL2MessageTree": { @@ -92,8 +94,8 @@ } } }, - "header": "0x1a005071a487e4891787073a91504fe6ea55280bc6f65a021fd6f7ca1f10aa02000000010ef928e73adbc5f53790a7591f274b0f4179a533e21da23f2ed7defe5af7bf410a241c83a063083fad29b6c333afcd968f71f8a875544ff1f1f08cae7f770f51000000100d944282e11bdcfa5e8f2b55fe80db4c586087bfc10e0bbba5724d30b8c15e2e0000010001c16141039343d4d403501e66deecff1b024bd76794820a43dc3424087813a2000001801a3d3e40c90cd24822b9c268154ef14d4639febdb7af81b554cb2d651b88dfb100000004160ba3a7c15d7dd592a24b3f14bfa76a0b45378877d4dedc5f126f47844b99b2000000600000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", + "header": "0x1213a7f84b7be98d122a1b7e15013610eacb74b328c20f369588569b1f6272c400000001dbf6d088e40ef7d0e0064c202f4bfcf4556b135b70f9d335cd4d587d79e0aa430a241c83a063083fad29b6c333afcd968f71f8a875544ff1f1f08cae7f770f51000000100d944282e11bdcfa5e8f2b55fe80db4c586087bfc10e0bbba5724d30b8c15e2e0000010001c16141039343d4d403501e66deecff1b024bd76794820a43dc3424087813a2000001801a3d3e40c90cd24822b9c268154ef14d4639febdb7af81b554cb2d651b88dfb100000004160ba3a7c15d7dd592a24b3f14bfa76a0b45378877d4dedc5f126f47844b99b2000000600000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000dfbe2253407dbd0a152c036a2ed1237465c243c61cc1690e2bfa2c49ad640289205cb9547e1fdffff97848aab22d8a541ec3b9d8", "l1ToL2MessagesHash": "0xb213c9c543fce2a66720d26a913fe0d018f72a47ccfe698baafcf4cced343cfd", - "publicInputsHash": "0x1256090bf682bee2a1b43969d13bd8921ab74904a46a578d20534b57434fd60d" + "publicInputsHash": "0x06ec35c3b5e33ace2404f6995b2bbebc1164ace46a2a36989a5d9897016afb6d" } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_1.json b/l1-contracts/test/fixtures/mixed_block_1.json index 805a3869c17..6fa74440315 100644 --- a/l1-contracts/test/fixtures/mixed_block_1.json +++ b/l1-contracts/test/fixtures/mixed_block_1.json @@ -52,20 +52,22 @@ ] }, "block": { - "archive": "0x238d559a05a8fef1cbfcc8b7e59836b7f467fa8e93d433bfce8efb75a6444448", - "body": "0x000001000000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000024100000000000000000000000000000000000000000000000000000000000002420000000000000000000000000000000000000000000000000000000000000243000000000000000000000000000000000000000000000000000000000000024400000000000000000000000000000000000000000000000000000000000002450000000000000000000000000000000000000000000000000000000000000246000000000000000000000000000000000000000000000000000000000000024700000000000000000000000000000000000000000000000000000000000002480000000000000000000000000000000000000000000000000000000000000249000000000000000000000000000000000000000000000000000000000000024a000000000000000000000000000000000000000000000000000000000000024b000000000000000000000000000000000000000000000000000000000000024c000000000000000000000000000000000000000000000000000000000000024d000000000000000000000000000000000000000000000000000000000000024e000000000000000000000000000000000000000000000000000000000000024f0000000000000000000000000000000000000000000000000000000000000250000000000000000000000000000000000000000000000000000000000000025100000000000000000000000000000000000000000000000000000000000002520000000000000000000000000000000000000000000000000000000000000253000000000000000000000000000000000000000000000000000000000000025400000000000000000000000000000000000000000000000000000000000002550000000000000000000000000000000000000000000000000000000000000256000000000000000000000000000000000000000000000000000000000000025700000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000000259000000000000000000000000000000000000000000000000000000000000025a000000000000000000000000000000000000000000000000000000000000025b000000000000000000000000000000000000000000000000000000000000025c000000000000000000000000000000000000000000000000000000000000025d000000000000000000000000000000000000000000000000000000000000025e000000000000000000000000000000000000000000000000000000000000025f0000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000026100000000000000000000000000000000000000000000000000000000000002620000000000000000000000000000000000000000000000000000000000000263000000000000000000000000000000000000000000000000000000000000026400000000000000000000000000000000000000000000000000000000000002650000000000000000000000000000000000000000000000000000000000000266000000000000000000000000000000000000000000000000000000000000026700000000000000000000000000000000000000000000000000000000000002680000000000000000000000000000000000000000000000000000000000000269000000000000000000000000000000000000000000000000000000000000026a000000000000000000000000000000000000000000000000000000000000026b000000000000000000000000000000000000000000000000000000000000026c000000000000000000000000000000000000000000000000000000000000026d000000000000000000000000000000000000000000000000000000000000026e000000000000000000000000000000000000000000000000000000000000026f0000000000000000000000000000000000000000000000000000000000000270000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000002720000000000000000000000000000000000000000000000000000000000000273000000000000000000000000000000000000000000000000000000000000027400000000000000000000000000000000000000000000000000000000000002750000000000000000000000000000000000000000000000000000000000000276000000000000000000000000000000000000000000000000000000000000027700000000000000000000000000000000000000000000000000000000000002780000000000000000000000000000000000000000000000000000000000000279000000000000000000000000000000000000000000000000000000000000027a000000000000000000000000000000000000000000000000000000000000027b000000000000000000000000000000000000000000000000000000000000027c000000000000000000000000000000000000000000000000000000000000027d000000000000000000000000000000000000000000000000000000000000027e000000000000000000000000000000000000000000000000000000000000027f0000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000028100000000000000000000000000000000000000000000000000000000000002820000000000000000000000000000000000000000000000000000000000000283000000000000000000000000000000000000000000000000000000000000028400000000000000000000000000000000000000000000000000000000000002850000000000000000000000000000000000000000000000000000000000000286000000000000000000000000000000000000000000000000000000000000028700000000000000000000000000000000000000000000000000000000000002880000000000000000000000000000000000000000000000000000000000000289000000000000000000000000000000000000000000000000000000000000028a000000000000000000000000000000000000000000000000000000000000028b000000000000000000000000000000000000000000000000000000000000028c000000000000000000000000000000000000000000000000000000000000028d000000000000000000000000000000000000000000000000000000000000028e000000000000000000000000000000000000000000000000000000000000028f0000000000000000000000000000000000000000000000000000000000000290000000000000000000000000000000000000000000000000000000000000029100000000000000000000000000000000000000000000000000000000000002920000000000000000000000000000000000000000000000000000000000000293000000000000000000000000000000000000000000000000000000000000029400000000000000000000000000000000000000000000000000000000000002950000000000000000000000000000000000000000000000000000000000000296000000000000000000000000000000000000000000000000000000000000029700000000000000000000000000000000000000000000000000000000000002980000000000000000000000000000000000000000000000000000000000000299000000000000000000000000000000000000000000000000000000000000029a000000000000000000000000000000000000000000000000000000000000029b000000000000000000000000000000000000000000000000000000000000029c000000000000000000000000000000000000000000000000000000000000029d000000000000000000000000000000000000000000000000000000000000029e000000000000000000000000000000000000000000000000000000000000029f00000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002a100000000000000000000000000000000000000000000000000000000000002a200000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000002a400000000000000000000000000000000000000000000000000000000000002a500000000000000000000000000000000000000000000000000000000000002a600000000000000000000000000000000000000000000000000000000000002a700000000000000000000000000000000000000000000000000000000000002a800000000000000000000000000000000000000000000000000000000000002a900000000000000000000000000000000000000000000000000000000000002aa00000000000000000000000000000000000000000000000000000000000002ab00000000000000000000000000000000000000000000000000000000000002ac00000000000000000000000000000000000000000000000000000000000002ad00000000000000000000000000000000000000000000000000000000000002ae00000000000000000000000000000000000000000000000000000000000002af00000000000000000000000000000000000000000000000000000000000002b000000000000000000000000000000000000000000000000000000000000002b100000000000000000000000000000000000000000000000000000000000002b200000000000000000000000000000000000000000000000000000000000002b300000000000000000000000000000000000000000000000000000000000002b400000000000000000000000000000000000000000000000000000000000002b500000000000000000000000000000000000000000000000000000000000002b600000000000000000000000000000000000000000000000000000000000002b700000000000000000000000000000000000000000000000000000000000002b800000000000000000000000000000000000000000000000000000000000002b900000000000000000000000000000000000000000000000000000000000002ba00000000000000000000000000000000000000000000000000000000000002bb00000000000000000000000000000000000000000000000000000000000002bc00000000000000000000000000000000000000000000000000000000000002bd00000000000000000000000000000000000000000000000000000000000002be00000000000000000000000000000000000000000000000000000000000002bf00000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002c100000000000000000000000000000000000000000000000000000000000002c200000000000000000000000000000000000000000000000000000000000002c300000000000000000000000000000000000000000000000000000000000002c400000000000000000000000000000000000000000000000000000000000002c500000000000000000000000000000000000000000000000000000000000002c600000000000000000000000000000000000000000000000000000000000002c700000000000000000000000000000000000000000000000000000000000002c800000000000000000000000000000000000000000000000000000000000002c900000000000000000000000000000000000000000000000000000000000002ca00000000000000000000000000000000000000000000000000000000000002cb00000000000000000000000000000000000000000000000000000000000002cc00000000000000000000000000000000000000000000000000000000000002cd00000000000000000000000000000000000000000000000000000000000002ce00000000000000000000000000000000000000000000000000000000000002cf00000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000002d100000000000000000000000000000000000000000000000000000000000002d200000000000000000000000000000000000000000000000000000000000002d300000000000000000000000000000000000000000000000000000000000002d400000000000000000000000000000000000000000000000000000000000002d500000000000000000000000000000000000000000000000000000000000002d600000000000000000000000000000000000000000000000000000000000002d700000000000000000000000000000000000000000000000000000000000002d800000000000000000000000000000000000000000000000000000000000002d900000000000000000000000000000000000000000000000000000000000002da00000000000000000000000000000000000000000000000000000000000002db00000000000000000000000000000000000000000000000000000000000002dc00000000000000000000000000000000000000000000000000000000000002dd00000000000000000000000000000000000000000000000000000000000002de00000000000000000000000000000000000000000000000000000000000002df00000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000002e100000000000000000000000000000000000000000000000000000000000002e200000000000000000000000000000000000000000000000000000000000002e300000000000000000000000000000000000000000000000000000000000002e400000000000000000000000000000000000000000000000000000000000002e500000000000000000000000000000000000000000000000000000000000002e600000000000000000000000000000000000000000000000000000000000002e700000000000000000000000000000000000000000000000000000000000002e800000000000000000000000000000000000000000000000000000000000002e900000000000000000000000000000000000000000000000000000000000002ea00000000000000000000000000000000000000000000000000000000000002eb00000000000000000000000000000000000000000000000000000000000002ec00000000000000000000000000000000000000000000000000000000000002ed00000000000000000000000000000000000000000000000000000000000002ee00000000000000000000000000000000000000000000000000000000000002ef00000000000000000000000000000000000000000000000000000000000002f000000000000000000000000000000000000000000000000000000000000002f100000000000000000000000000000000000000000000000000000000000002f200000000000000000000000000000000000000000000000000000000000002f300000000000000000000000000000000000000000000000000000000000002f400000000000000000000000000000000000000000000000000000000000002f500000000000000000000000000000000000000000000000000000000000002f600000000000000000000000000000000000000000000000000000000000002f700000000000000000000000000000000000000000000000000000000000002f800000000000000000000000000000000000000000000000000000000000002f900000000000000000000000000000000000000000000000000000000000002fa00000000000000000000000000000000000000000000000000000000000002fb00000000000000000000000000000000000000000000000000000000000002fc00000000000000000000000000000000000000000000000000000000000002fd00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000002ff0000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030100000000000000000000000000000000000000000000000000000000000003020000000000000000000000000000000000000000000000000000000000000303000000000000000000000000000000000000000000000000000000000000030400000000000000000000000000000000000000000000000000000000000003050000000000000000000000000000000000000000000000000000000000000306000000000000000000000000000000000000000000000000000000000000030700000000000000000000000000000000000000000000000000000000000003080000000000000000000000000000000000000000000000000000000000000309000000000000000000000000000000000000000000000000000000000000030a000000000000000000000000000000000000000000000000000000000000030b000000000000000000000000000000000000000000000000000000000000030c000000000000000000000000000000000000000000000000000000000000030d000000000000000000000000000000000000000000000000000000000000030e000000000000000000000000000000000000000000000000000000000000030f0000000000000000000000000000000000000000000000000000000000000310000000000000000000000000000000000000000000000000000000000000031100000000000000000000000000000000000000000000000000000000000003120000000000000000000000000000000000000000000000000000000000000313000000000000000000000000000000000000000000000000000000000000031400000000000000000000000000000000000000000000000000000000000003150000000000000000000000000000000000000000000000000000000000000316000000000000000000000000000000000000000000000000000000000000031700000000000000000000000000000000000000000000000000000000000003180000000000000000000000000000000000000000000000000000000000000319000000000000000000000000000000000000000000000000000000000000031a000000000000000000000000000000000000000000000000000000000000031b000000000000000000000000000000000000000000000000000000000000031c000000000000000000000000000000000000000000000000000000000000031d000000000000000000000000000000000000000000000000000000000000031e000000000000000000000000000000000000000000000000000000000000031f0000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000032100000000000000000000000000000000000000000000000000000000000003220000000000000000000000000000000000000000000000000000000000000323000000000000000000000000000000000000000000000000000000000000032400000000000000000000000000000000000000000000000000000000000003250000000000000000000000000000000000000000000000000000000000000326000000000000000000000000000000000000000000000000000000000000032700000000000000000000000000000000000000000000000000000000000003280000000000000000000000000000000000000000000000000000000000000329000000000000000000000000000000000000000000000000000000000000032a000000000000000000000000000000000000000000000000000000000000032b000000000000000000000000000000000000000000000000000000000000032c000000000000000000000000000000000000000000000000000000000000032d000000000000000000000000000000000000000000000000000000000000032e000000000000000000000000000000000000000000000000000000000000032f0000000000000000000000000000000000000000000000000000000000000330000000000000000000000000000000000000000000000000000000000000033100000000000000000000000000000000000000000000000000000000000003320000000000000000000000000000000000000000000000000000000000000333000000000000000000000000000000000000000000000000000000000000033400000000000000000000000000000000000000000000000000000000000003350000000000000000000000000000000000000000000000000000000000000336000000000000000000000000000000000000000000000000000000000000033700000000000000000000000000000000000000000000000000000000000003380000000000000000000000000000000000000000000000000000000000000339000000000000000000000000000000000000000000000000000000000000033a000000000000000000000000000000000000000000000000000000000000033b000000000000000000000000000000000000000000000000000000000000033c000000000000000000000000000000000000000000000000000000000000033d000000000000000000000000000000000000000000000000000000000000033e000000000000000000000000000000000000000000000000000000000000033f000001000000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000003420000000000000000000000000000000000000000000000000000000000000343000000000000000000000000000000000000000000000000000000000000034400000000000000000000000000000000000000000000000000000000000003450000000000000000000000000000000000000000000000000000000000000346000000000000000000000000000000000000000000000000000000000000034700000000000000000000000000000000000000000000000000000000000003480000000000000000000000000000000000000000000000000000000000000349000000000000000000000000000000000000000000000000000000000000034a000000000000000000000000000000000000000000000000000000000000034b000000000000000000000000000000000000000000000000000000000000034c000000000000000000000000000000000000000000000000000000000000034d000000000000000000000000000000000000000000000000000000000000034e000000000000000000000000000000000000000000000000000000000000034f0000000000000000000000000000000000000000000000000000000000000350000000000000000000000000000000000000000000000000000000000000035100000000000000000000000000000000000000000000000000000000000003520000000000000000000000000000000000000000000000000000000000000353000000000000000000000000000000000000000000000000000000000000035400000000000000000000000000000000000000000000000000000000000003550000000000000000000000000000000000000000000000000000000000000356000000000000000000000000000000000000000000000000000000000000035700000000000000000000000000000000000000000000000000000000000003580000000000000000000000000000000000000000000000000000000000000359000000000000000000000000000000000000000000000000000000000000035a000000000000000000000000000000000000000000000000000000000000035b000000000000000000000000000000000000000000000000000000000000035c000000000000000000000000000000000000000000000000000000000000035d000000000000000000000000000000000000000000000000000000000000035e000000000000000000000000000000000000000000000000000000000000035f0000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000036100000000000000000000000000000000000000000000000000000000000003620000000000000000000000000000000000000000000000000000000000000363000000000000000000000000000000000000000000000000000000000000036400000000000000000000000000000000000000000000000000000000000003650000000000000000000000000000000000000000000000000000000000000366000000000000000000000000000000000000000000000000000000000000036700000000000000000000000000000000000000000000000000000000000003680000000000000000000000000000000000000000000000000000000000000369000000000000000000000000000000000000000000000000000000000000036a000000000000000000000000000000000000000000000000000000000000036b000000000000000000000000000000000000000000000000000000000000036c000000000000000000000000000000000000000000000000000000000000036d000000000000000000000000000000000000000000000000000000000000036e000000000000000000000000000000000000000000000000000000000000036f0000000000000000000000000000000000000000000000000000000000000370000000000000000000000000000000000000000000000000000000000000037100000000000000000000000000000000000000000000000000000000000003720000000000000000000000000000000000000000000000000000000000000373000000000000000000000000000000000000000000000000000000000000037400000000000000000000000000000000000000000000000000000000000003750000000000000000000000000000000000000000000000000000000000000376000000000000000000000000000000000000000000000000000000000000037700000000000000000000000000000000000000000000000000000000000003780000000000000000000000000000000000000000000000000000000000000379000000000000000000000000000000000000000000000000000000000000037a000000000000000000000000000000000000000000000000000000000000037b000000000000000000000000000000000000000000000000000000000000037c000000000000000000000000000000000000000000000000000000000000037d000000000000000000000000000000000000000000000000000000000000037e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000038100000000000000000000000000000000000000000000000000000000000003820000000000000000000000000000000000000000000000000000000000000383000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000003850000000000000000000000000000000000000000000000000000000000000386000000000000000000000000000000000000000000000000000000000000038700000000000000000000000000000000000000000000000000000000000003880000000000000000000000000000000000000000000000000000000000000389000000000000000000000000000000000000000000000000000000000000038a000000000000000000000000000000000000000000000000000000000000038b000000000000000000000000000000000000000000000000000000000000038c000000000000000000000000000000000000000000000000000000000000038d000000000000000000000000000000000000000000000000000000000000038e000000000000000000000000000000000000000000000000000000000000038f0000000000000000000000000000000000000000000000000000000000000390000000000000000000000000000000000000000000000000000000000000039100000000000000000000000000000000000000000000000000000000000003920000000000000000000000000000000000000000000000000000000000000393000000000000000000000000000000000000000000000000000000000000039400000000000000000000000000000000000000000000000000000000000003950000000000000000000000000000000000000000000000000000000000000396000000000000000000000000000000000000000000000000000000000000039700000000000000000000000000000000000000000000000000000000000003980000000000000000000000000000000000000000000000000000000000000399000000000000000000000000000000000000000000000000000000000000039a000000000000000000000000000000000000000000000000000000000000039b000000000000000000000000000000000000000000000000000000000000039c000000000000000000000000000000000000000000000000000000000000039d000000000000000000000000000000000000000000000000000000000000039e000000000000000000000000000000000000000000000000000000000000039f00000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000003a100000000000000000000000000000000000000000000000000000000000003a200000000000000000000000000000000000000000000000000000000000003a300000000000000000000000000000000000000000000000000000000000003a400000000000000000000000000000000000000000000000000000000000003a500000000000000000000000000000000000000000000000000000000000003a600000000000000000000000000000000000000000000000000000000000003a700000000000000000000000000000000000000000000000000000000000003a800000000000000000000000000000000000000000000000000000000000003a900000000000000000000000000000000000000000000000000000000000003aa00000000000000000000000000000000000000000000000000000000000003ab00000000000000000000000000000000000000000000000000000000000003ac00000000000000000000000000000000000000000000000000000000000003ad00000000000000000000000000000000000000000000000000000000000003ae00000000000000000000000000000000000000000000000000000000000003af00000000000000000000000000000000000000000000000000000000000003b000000000000000000000000000000000000000000000000000000000000003b100000000000000000000000000000000000000000000000000000000000003b200000000000000000000000000000000000000000000000000000000000003b300000000000000000000000000000000000000000000000000000000000003b400000000000000000000000000000000000000000000000000000000000003b500000000000000000000000000000000000000000000000000000000000003b600000000000000000000000000000000000000000000000000000000000003b700000000000000000000000000000000000000000000000000000000000003b800000000000000000000000000000000000000000000000000000000000003b900000000000000000000000000000000000000000000000000000000000003ba00000000000000000000000000000000000000000000000000000000000003bb00000000000000000000000000000000000000000000000000000000000003bc00000000000000000000000000000000000000000000000000000000000003bd00000000000000000000000000000000000000000000000000000000000003be000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003c100000000000000000000000000000000000000000000000000000000000003c200000000000000000000000000000000000000000000000000000000000003c300000000000000000000000000000000000000000000000000000000000003c400000000000000000000000000000000000000000000000000000000000003c500000000000000000000000000000000000000000000000000000000000003c600000000000000000000000000000000000000000000000000000000000003c700000000000000000000000000000000000000000000000000000000000003c800000000000000000000000000000000000000000000000000000000000003c900000000000000000000000000000000000000000000000000000000000003ca00000000000000000000000000000000000000000000000000000000000003cb00000000000000000000000000000000000000000000000000000000000003cc00000000000000000000000000000000000000000000000000000000000003cd00000000000000000000000000000000000000000000000000000000000003ce00000000000000000000000000000000000000000000000000000000000003cf00000000000000000000000000000000000000000000000000000000000003d000000000000000000000000000000000000000000000000000000000000003d100000000000000000000000000000000000000000000000000000000000003d200000000000000000000000000000000000000000000000000000000000003d300000000000000000000000000000000000000000000000000000000000003d400000000000000000000000000000000000000000000000000000000000003d500000000000000000000000000000000000000000000000000000000000003d600000000000000000000000000000000000000000000000000000000000003d700000000000000000000000000000000000000000000000000000000000003d800000000000000000000000000000000000000000000000000000000000003d900000000000000000000000000000000000000000000000000000000000003da00000000000000000000000000000000000000000000000000000000000003db00000000000000000000000000000000000000000000000000000000000003dc00000000000000000000000000000000000000000000000000000000000003dd00000000000000000000000000000000000000000000000000000000000003de00000000000000000000000000000000000000000000000000000000000003df00000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000003e100000000000000000000000000000000000000000000000000000000000003e200000000000000000000000000000000000000000000000000000000000003e300000000000000000000000000000000000000000000000000000000000003e400000000000000000000000000000000000000000000000000000000000003e500000000000000000000000000000000000000000000000000000000000003e600000000000000000000000000000000000000000000000000000000000003e700000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003e900000000000000000000000000000000000000000000000000000000000003ea00000000000000000000000000000000000000000000000000000000000003eb00000000000000000000000000000000000000000000000000000000000003ec00000000000000000000000000000000000000000000000000000000000003ed00000000000000000000000000000000000000000000000000000000000003ee00000000000000000000000000000000000000000000000000000000000003ef00000000000000000000000000000000000000000000000000000000000003f000000000000000000000000000000000000000000000000000000000000003f100000000000000000000000000000000000000000000000000000000000003f200000000000000000000000000000000000000000000000000000000000003f300000000000000000000000000000000000000000000000000000000000003f400000000000000000000000000000000000000000000000000000000000003f500000000000000000000000000000000000000000000000000000000000003f600000000000000000000000000000000000000000000000000000000000003f700000000000000000000000000000000000000000000000000000000000003f800000000000000000000000000000000000000000000000000000000000003f900000000000000000000000000000000000000000000000000000000000003fa00000000000000000000000000000000000000000000000000000000000003fb00000000000000000000000000000000000000000000000000000000000003fc00000000000000000000000000000000000000000000000000000000000003fd00000000000000000000000000000000000000000000000000000000000003fe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040100000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000403000000000000000000000000000000000000000000000000000000000000040400000000000000000000000000000000000000000000000000000000000004050000000000000000000000000000000000000000000000000000000000000406000000000000000000000000000000000000000000000000000000000000040700000000000000000000000000000000000000000000000000000000000004080000000000000000000000000000000000000000000000000000000000000409000000000000000000000000000000000000000000000000000000000000040a000000000000000000000000000000000000000000000000000000000000040b000000000000000000000000000000000000000000000000000000000000040c000000000000000000000000000000000000000000000000000000000000040d000000000000000000000000000000000000000000000000000000000000040e000000000000000000000000000000000000000000000000000000000000040f0000000000000000000000000000000000000000000000000000000000000410000000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004120000000000000000000000000000000000000000000000000000000000000413000000000000000000000000000000000000000000000000000000000000041400000000000000000000000000000000000000000000000000000000000004150000000000000000000000000000000000000000000000000000000000000416000000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004180000000000000000000000000000000000000000000000000000000000000419000000000000000000000000000000000000000000000000000000000000041a000000000000000000000000000000000000000000000000000000000000041b000000000000000000000000000000000000000000000000000000000000041c000000000000000000000000000000000000000000000000000000000000041d000000000000000000000000000000000000000000000000000000000000041e000000000000000000000000000000000000000000000000000000000000041f0000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000000042100000000000000000000000000000000000000000000000000000000000004220000000000000000000000000000000000000000000000000000000000000423000000000000000000000000000000000000000000000000000000000000042400000000000000000000000000000000000000000000000000000000000004250000000000000000000000000000000000000000000000000000000000000426000000000000000000000000000000000000000000000000000000000000042700000000000000000000000000000000000000000000000000000000000004280000000000000000000000000000000000000000000000000000000000000429000000000000000000000000000000000000000000000000000000000000042a000000000000000000000000000000000000000000000000000000000000042b000000000000000000000000000000000000000000000000000000000000042c000000000000000000000000000000000000000000000000000000000000042d000000000000000000000000000000000000000000000000000000000000042e000000000000000000000000000000000000000000000000000000000000042f0000000000000000000000000000000000000000000000000000000000000430000000000000000000000000000000000000000000000000000000000000043100000000000000000000000000000000000000000000000000000000000004320000000000000000000000000000000000000000000000000000000000000433000000000000000000000000000000000000000000000000000000000000043400000000000000000000000000000000000000000000000000000000000004350000000000000000000000000000000000000000000000000000000000000436000000000000000000000000000000000000000000000000000000000000043700000000000000000000000000000000000000000000000000000000000004380000000000000000000000000000000000000000000000000000000000000439000000000000000000000000000000000000000000000000000000000000043a000000000000000000000000000000000000000000000000000000000000043b000000000000000000000000000000000000000000000000000000000000043c000000000000000000000000000000000000000000000000000000000000043d000000000000000000000000000000000000000000000000000000000000043e0000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064a0000000000000000000000000000000000000000000000000000000000000641000000000000000000000000000000000000000000000000000000000000064b0000000000000000000000000000000000000000000000000000000000000642000000000000000000000000000000000000000000000000000000000000064c0000000000000000000000000000000000000000000000000000000000000643000000000000000000000000000000000000000000000000000000000000064d0000000000000000000000000000000000000000000000000000000000000644000000000000000000000000000000000000000000000000000000000000064e0000000000000000000000000000000000000000000000000000000000000645000000000000000000000000000000000000000000000000000000000000064f00000000000000000000000000000000000000000000000000000000000006460000000000000000000000000000000000000000000000000000000000000650000000000000000000000000000000000000000000000000000000000000064700000000000000000000000000000000000000000000000000000000000006510000000000000000000000000000000000000000000000000000000000000648000000000000000000000000000000000000000000000000000000000000065200000000000000000000000000000000000000000000000000000000000006490000000000000000000000000000000000000000000000000000000000000653000000000000000000000000000000000000000000000000000000000000064a0000000000000000000000000000000000000000000000000000000000000654000000000000000000000000000000000000000000000000000000000000064b0000000000000000000000000000000000000000000000000000000000000655000000000000000000000000000000000000000000000000000000000000064c0000000000000000000000000000000000000000000000000000000000000656000000000000000000000000000000000000000000000000000000000000064d0000000000000000000000000000000000000000000000000000000000000657000000000000000000000000000000000000000000000000000000000000064e0000000000000000000000000000000000000000000000000000000000000658000000000000000000000000000000000000000000000000000000000000064f00000000000000000000000000000000000000000000000000000000000006590000000000000000000000000000000000000000000000000000000000000680000000000000000000000000000000000000000000000000000000000000068a0000000000000000000000000000000000000000000000000000000000000681000000000000000000000000000000000000000000000000000000000000068b0000000000000000000000000000000000000000000000000000000000000682000000000000000000000000000000000000000000000000000000000000068c0000000000000000000000000000000000000000000000000000000000000683000000000000000000000000000000000000000000000000000000000000068d0000000000000000000000000000000000000000000000000000000000000684000000000000000000000000000000000000000000000000000000000000068e0000000000000000000000000000000000000000000000000000000000000685000000000000000000000000000000000000000000000000000000000000068f00000000000000000000000000000000000000000000000000000000000006860000000000000000000000000000000000000000000000000000000000000690000000000000000000000000000000000000000000000000000000000000068700000000000000000000000000000000000000000000000000000000000006910000000000000000000000000000000000000000000000000000000000000688000000000000000000000000000000000000000000000000000000000000069200000000000000000000000000000000000000000000000000000000000006890000000000000000000000000000000000000000000000000000000000000693000000000000000000000000000000000000000000000000000000000000068a0000000000000000000000000000000000000000000000000000000000000694000000000000000000000000000000000000000000000000000000000000068b0000000000000000000000000000000000000000000000000000000000000695000000000000000000000000000000000000000000000000000000000000068c0000000000000000000000000000000000000000000000000000000000000696000000000000000000000000000000000000000000000000000000000000068d0000000000000000000000000000000000000000000000000000000000000697000000000000000000000000000000000000000000000000000000000000068e0000000000000000000000000000000000000000000000000000000000000698000000000000000000000000000000000000000000000000000000000000068f000000000000000000000000000000000000000000000000000000000000069900000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000006ca00000000000000000000000000000000000000000000000000000000000006c100000000000000000000000000000000000000000000000000000000000006cb00000000000000000000000000000000000000000000000000000000000006c200000000000000000000000000000000000000000000000000000000000006cc00000000000000000000000000000000000000000000000000000000000006c300000000000000000000000000000000000000000000000000000000000006cd00000000000000000000000000000000000000000000000000000000000006c400000000000000000000000000000000000000000000000000000000000006ce00000000000000000000000000000000000000000000000000000000000006c500000000000000000000000000000000000000000000000000000000000006cf00000000000000000000000000000000000000000000000000000000000006c600000000000000000000000000000000000000000000000000000000000006d000000000000000000000000000000000000000000000000000000000000006c700000000000000000000000000000000000000000000000000000000000006d100000000000000000000000000000000000000000000000000000000000006c800000000000000000000000000000000000000000000000000000000000006d200000000000000000000000000000000000000000000000000000000000006c900000000000000000000000000000000000000000000000000000000000006d300000000000000000000000000000000000000000000000000000000000006ca00000000000000000000000000000000000000000000000000000000000006d400000000000000000000000000000000000000000000000000000000000006cb00000000000000000000000000000000000000000000000000000000000006d500000000000000000000000000000000000000000000000000000000000006cc00000000000000000000000000000000000000000000000000000000000006d600000000000000000000000000000000000000000000000000000000000006cd00000000000000000000000000000000000000000000000000000000000006d700000000000000000000000000000000000000000000000000000000000006ce00000000000000000000000000000000000000000000000000000000000006d800000000000000000000000000000000000000000000000000000000000006cf00000000000000000000000000000000000000000000000000000000000006d90000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000070a0000000000000000000000000000000000000000000000000000000000000701000000000000000000000000000000000000000000000000000000000000070b0000000000000000000000000000000000000000000000000000000000000702000000000000000000000000000000000000000000000000000000000000070c0000000000000000000000000000000000000000000000000000000000000703000000000000000000000000000000000000000000000000000000000000070d0000000000000000000000000000000000000000000000000000000000000704000000000000000000000000000000000000000000000000000000000000070e0000000000000000000000000000000000000000000000000000000000000705000000000000000000000000000000000000000000000000000000000000070f00000000000000000000000000000000000000000000000000000000000007060000000000000000000000000000000000000000000000000000000000000710000000000000000000000000000000000000000000000000000000000000070700000000000000000000000000000000000000000000000000000000000007110000000000000000000000000000000000000000000000000000000000000708000000000000000000000000000000000000000000000000000000000000071200000000000000000000000000000000000000000000000000000000000007090000000000000000000000000000000000000000000000000000000000000713000000000000000000000000000000000000000000000000000000000000070a0000000000000000000000000000000000000000000000000000000000000714000000000000000000000000000000000000000000000000000000000000070b0000000000000000000000000000000000000000000000000000000000000715000000000000000000000000000000000000000000000000000000000000070c0000000000000000000000000000000000000000000000000000000000000716000000000000000000000000000000000000000000000000000000000000070d0000000000000000000000000000000000000000000000000000000000000717000000000000000000000000000000000000000000000000000000000000070e0000000000000000000000000000000000000000000000000000000000000718000000000000000000000000000000000000000000000000000000000000070f000000000000000000000000000000000000000000000000000000000000071900000008000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000004410000000000000000000000000000000000000000000000000000000000000480000000000000000000000000000000000000000000000000000000000000048100000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004c100000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000501000000042ea6fe02855d8c72905f35f08604467117c037962e324c9a793505138558b3700c94efd9afe573212f9bf596ca3a4b42ae57f59e670a7cb5b9440c54bd8ea2961856bc4892b0b3f156ed2aa87463c389bfce0fd675a37cec77ae5d753fcf593c12f9d3f397c2edc9e4a6a5e485641163525ca802e3bd93994af997a9b9a44f98000000000000000000000000000000000000000000000000000000000000114041414141414141414141414141414141414141410000000000000000000000000000000000000000000000000000000000001180818181818181818181818181818181818181818100000000000000000000000000000000000000000000000000000000000011c0c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1000000000000000000000000000000000000000000000000000000000000120001010101010101010101010101010101010101010000001012e5643e26da426570dd999e0e044e5f83d60f3cd813c55059bc0ea0f4a7c9d413b2d2cea949fa0876265cd8eee3a4dce1e243783562ea07e2de537f469f7bf627abb3d4560e786bafd52f77ac52dea36c50419f32386567bd969b0c38e1bd7405d339cecb99fa74bfd631917f965357f0341d8c4dfe6a8f4b621d8df54c82941d560ac24523012499eeca2594f20ce238b7d21b98ad5c638767d70ee05532c2183e6d64e69b005709dfc4771c7ca5981adc54f3e8bd1b00222461ae90e44eda2f1d4572fe0b0b23100a7ea6d4780b25e826e41ca9e71897e010bcb218887b3d036d44eb30a430b5cfc6660270eb5fb7f274689ac73dfa53ba9d0739fe38637f01f7130af8c5888d4c65ea68109a1d58fe8d7d1ae62098857b0a3a3dcd393ef80ed8bcba6eb5e3b4887a32c51c5853b97a5eb59c87c520f36423c6d7be06071821ca1719330de5e3c51a521778b49cbbc1d53f8ed42e0562bf21ed72e8cb9a410b0e82ef5f7276df41353faef675fb408aeb246b6e2f704cab99bf28d1427e7b0fec7b9929c6effdcd045d3fdcec1d1b73faed495444699fab936630d69b519f0bf4f1453db36439419dbfba703b849d1aa5774fe9a5325e5bf3e7cdda9d1f7f2a9c2a035c72fd4a3e383306aff03448f9accc08a2c665837560cec8675fe2512bfaef35a8fb7df08a81001a7fd4903849c0371dedd87f31295f46269c5205dd0000381000000e00000001bc00000090c13d9d0180efb0cf4a6d1676f61f735ed5237557862809c657aa892a154646f002740dcac518dd1d753b4e8c83cc4b820d7a92f8d3455ef8d6b782406a966e38abcccfcba2bece327a31225662a0e51617a0f49b0b6dbffcf2dd0fd020106158903111091982c078d4c3674969f364fc0a71e2354ba07e5794615562312bd212033dc0cfd54419fcc5ab8efdee25f19100000090dccd8f5a0daa473e34d076eeae33bcb6afbc88dbe6897c7b315149811fd15efac96150d7e0fa1579376d42f4b911e155eda5ee5456a9d6c0a699643c6beff9cb0eb2e1b36cf3fade1af2b33ee0c0bb472acae19d029a57a53882b8ba8389fe0e30429fdf159c9693fe2006334692e67b1b1fcf6fa166824ec7076564e555e49dd085a8e4b54bb1ac0f18e31118190e6600000090379379b71c561c7622aaf4ff0d200b4aa507de6b631c841e84ec50b80fb6719d5278706bf3400d47296446f1c13e75cabe1732750f02a7ba2e278a6f5b144cd0333519ed882d956d16cc45175bd00a6c16cf2171d48057133603ac31d8bc578b9b481c0a2040a5725d0224e373b3f043247e2bc5856e7216bc45fa196168132578c74e26d88b4ff36eaef01d3c7f915d000001bc0000009089c7007a588bd867a1faee4af2137ccca39e4d930507643479212f21630c943c6f430108f4bb721838c8f1bb34ff73841fa2c37934cc6e2cdbcfda0e9c468ad150dddc942d41b76c0758433eb4a0242e26e30592948a866293bb4e29a584a8907676dd085cb9360afff7ab84ec5801fe07a56a33221144d05716a7f2db7ae035b7e80a56341d289af3914b0721a00d08000000902b13f3df874d19d5829282e4eb39007639ff7c211e86e7f8be619ca4ba39c5d81c8d145a5192f4a3f10895e2797f2e25a7131a1bcc6b1062f6af45c94d85de2c419ff98bf9cc3715c1039b2e8ed4ad6c0499353d1db9426370e35a27689ea1b19ae662edc37422f8cb8592f9c6f8fde61dd54d1fd3bfbaf5023d7bddf2311ca15af50e55673a51a0a914bf4532c9722000000090539a9203f6b58beb64bc593fcd09ed470344d5394aa75974ffbf7f996c7b066a8f2175d3e9f10ba74227458fa6150ea458ef71baf2845c3ce67f771741aceb9abc9ec54a601399e81afd137ad3434457239ebf4d9c8c846abbc844ddbf723d686b365611aa69147196cf8df5c22ea6dc27f19ee20cf6fc0390a49c304a851e624db98d7e5ad0f450c3c8bad71b4a5de9000001bc00000090da222fd69c4e340b559c3dc9bf8d0bf6008a106d09f504acc95a3ab1c93c1481e2e2704e786271b93745fc97c7b0788a6eb74aa6e72c6ad2b6877d7439eb41279bc6107b7794a16257bbb4d0a20ca42303e778f0158c37a7cf4698c7dc402292b6d224b91f884783885a44c4b22cb2e1197b400ffb4fe08750914ae9639d5447c8bc64ffb989e07b8ce53a2043185c94000000908ea72c947ebf55d77062f0b89b668a142a198842dbd2dac59f115887ae962f7c162ecffe95eb0078e9ecc34874060fcf3da11c14e08a92203b8fed924ccbc787482875ff28aaeb45859aa0d1d01db986137c1764dc112f53424f750a28900c8c53e6973557e33d7376e0730bccf2a5d606a3e795498757161646d549a0a5af18e3958557963648083d6e76c9fc6ad1e100000090fdbeac241ed3f7ca3be7180b73150eef39d6a366bb834fa7903267719e26e83579db2cd65cb64ea43a9d203f5c8d837c1efa6325e91e032006a7f5e98dfbd0eece6aa4c7db4415259601ddc5b049736c0bd34df57ddb365dbc441b7905adc29628e5559ad6d5b3bfe0f0392ebf43fe810d8a808231fb44958c9a96fac08161ac0956714bd3c74d9c851197ca7b1a8c57000001bc000000906e199cef996acff8e6408667d2db579909371083a2b40e70dcd78a3b6c655ee906d32a6a2e4bb9d1ca738f6423f006ffa3f7ceafd91e96eea421645efbb0e40388f9687acb66dd29aa5483254c111a831ba7e8598f6360924da54146a7a03d128a412f9e3ffd0397856b66ab9e8b524925cd75b0ae28efbf9c70b3f5b6a97e3f035453116809651ce45021ff596167f200000090dd2cba45eef3205574b614aa62165a4ee28430fff5b14a32cd63328c61f81579edde9efc3dfe5d7dd1526640f56ef9a8413c7c404907d88f32d16dea6f5958a9f56abce2a07c97569f8c26bcc74f2c9d141b0c142f32949e264a3fa9d1e77083e8b916c2df83261c0da074fc461a2bfe2e1c37540455dfd845002c4b409f9226cb252a4f11eb97706bb34fa6679068cd00000090e69c94a722b2f3cdeab1fe8314357bd692975c2261756d4f2e42893ba0bb2bebdb3512194c20a5b67bd891cb60c2d1968dbe96d5484b4964a5929de3c2a5cd0effa311707ae0fba27fc768c80f4bce83231d783024d854556157346463fb7012bda42dfd618b0aca7f58cc31dd15c6972303ff2ed3ae6d388f478577aaecb76fb12e7238ef29c2e5505477eb86b80477000001bc000000900f5ef582e8f2b358a287f69fb361c846bc362796e2766f502d677b6146517246b69ce262540e375c2424a887054b16608904482f40ef323763ed9e7f299404f25d608e6e0e4bcda16a92354986662e882eda68e23fc827ca6597c85e7b2c7f1a5f9409f6c7223104cf3b5dc3bbff99071977631eb91b2113c5fe3e3ff3ddc8da3bb01bc785683396c5470183f910dab300000090c51abbf871caccb44d13c60c2a6f8429140005f820b70f74077aba9c7f32cf74d9ece0ce1b24cc19980d787ba82d3f9186ed2d08888626deeb8ce1f74846c70ec434efc3e33bfbc86213df64cdf73fdc21fb971bde4dce6ce0cf00e204e065c5b1f57cb613c3ed8ab6e54d31c1636baa264dd3ecedfcbbb1dec253095757d12bca1d76d2631ef94e76245798dd47af030000009022d04f9051a6626fdff3d609739cbacd11741343c4d8ea3177ca242e4de50b37ccad4739ec2c882d5d17bd084f1d3fabc72268d28193b522600a4fb708231e58a7ef5b23f91389137beafd14a7d0df55048f605b84bdde04f25c61ba7101bd5c58d397375879af5a4ffe97152630c801260d6e9ce6fdcaee074e2f665238668386b35a772a861eb4e9b3fc3556ca1974000001bc000000907e2e2070eba81d16a60b826b11ad0a7a348148e4da106d6e92e01e2ca53e99cd643c4faadb85efa26d2686e15df7111e080d9b2f08b8d1799dede4f9091005b95dce8018d40aa6bf530206560bfa3b6005a351fd26639df63ee65b51de7b68e077fdc01ea04b73d878c3895dc223130302ce398479d642a13db0eeea714edbf4b6011a4dce09c1fa516a27aad43606e700000090498ba863b488e2698f2b2020eb4c7927ad3dc4c9bf3d7cc556c123db1ef46dea337cd5cb99ad0b8e521103a54ca7444a8230be7749816a240d8b0f88522c629f98bfc97d8e980244e4aca243dc1d8256289d3b37f200f4c5c9f4cd63a3edb7954c75d547577a5d22bf3f77b69953bdd323b82b33481f27c55dfc4f15c859fd27da61d786836685a16122ef59a7ca7ac70000009046c3512b1c79aa1e065a8e4256c595c9293dca1d56fd05a119cafab59416499ad8aacb94f92d99388f774ff6d7d0ba468fdacdb8d8d595c7be3ac58364d84d220bcc50460aaab158b837c1f834af3bd918cdc85c632337166ef39a085b6112604af2ffec61e77e9023863308bd2566751f5437bcf1ea2387b364b9099d087cfc5bd0e26ecacbe348de1b418d55b4875a000001bc000000908adab8f017417b5bd46fa1e9779632be5afba45eee6a58daa7754be749861997acfceb86f08f30b61ff903dd7acb46108739d67425d42f335498d98640fef4cabee4bc1593be601b8f85aabd966b24fe2147a3b6a75dfec1d644e0076f106a4051769f6aa62715d2e62bec25379e3fdf2091a5b55925577c3485574e37696c83a970b96c169e46877baa784d8a7666c6000000909d4bf0f2d2de7b2396dec1959f7b7de8b805425819c8b80798cae313d89e545d8025ff56d9a92845135ac58fe672a0fc92245eed345b5859f67540a5c19c80c499374d282f293a6c6fe12a8831a09f4a1107c3e23b62b0c34d7bc37d1fa74e9a6bf158f1890db25e9e5af558a463c85f104fffd61d3945110ba4543ff2a78e36daa74aea25b0e4905f0b76b8102901b5000000905584f775caac62723960eaffd596a5f64c7083ddaabdaaebfc2e60fe575109bd1e030a83c7d98fefab9494250ea6191e111f06da98f325b6db114b081d8277593d7c7c21b59248510cd872041c66e8480b33673cd6947e1be4673318549d2fe339e55c81b22301fe039ed1f9aa1004d51492f446b0797f7f27076842a05de5d9c53a8f0b45987af90fa814f5014c7ea8000001bc00000090e41c2efc5d16d3c931e59cb67106901c97b62ea2e65a49df476d10bc4193d36deaf6fc746c076bfeed7572d833c13ad4a51c933a86ac96ba919855df3c97b3a970e095a8de48e656eddb0630d208c43a1ef50bdfb97e408c7228fb2a13553807cc7fa20370e6b1818b11d43242ca70fd2686012dddb4a7920ad9752c93b0d8648338b7d453efc270a19cb0de5fffa2ad000000905aae1d893ce8543ab9ec6b411142dadc73a5c8d4318ea84c92f1482f3ee4c83be1db4e4f24090036eb9aabdf351325fc5865a36ec5b9d8fae372d8e5e42a97872d7ff6161ccbcdd20d56f7328bdcffa2090edc7fa952da75dd796b3c24f7a505acf739c62babb1016e67198d76ee4f7e1fde045d25ee1bab55b3494f55648df759e89e867da0cd6595a0916a0714905300000090772b55f21dcbfdadc07da90c672dd84e3eb7b887beeb448cc1170d05aff5ed6d2a0a67aaa36d0b76ac95acdde219bc952afebb74bad19640888f01e3fb2bdb8aaff26919e5b4ba2963018294487653341bc08d07c211cdea452937f2a2398917bec1a4cbc26f5a7a276f95c7827955e71b7c0d5e6b2836d8d81506520ed72933ec1356eb0e86b950100598e01736e87000000e00000001bc00000090132d9159c2693b4605031d9d3a8614931fd0db820cff1586861610a76845ae37c482268160a392d9503f26c73e4729eb9ba4e48e81ce46acbba5940b5befe62746a0b0d404d6d2050905640ff7ad60170968822a7680b69074574389dcd34b1bd979f232d474a3570a95c3b2720db7a31ce639fc503648592f9b394d65aded02aec9957f94fe094920fc061885fb59bc00000090dde8d4d0b0994f657c19ea77b96c20bccf7b42d2cfc40fc66500b6bd4b7b16f72ed38ee66714fa0727b946425817164bc9957a9fb8e5f742010a8b25824fc0b59941700ed1be933747bc2f18b35a4f01192bb2cdb5e56b6e94f90de95f2d9c8cfcff964523ebe0d4fc7ce9f7ea3026860ac8cff5739701036d90d352667aed8db6aeb4db8d1fa8e6089884c62c0156f8000000904153b073474c5db528f4be51601df0112a8d4d4ba2f2dad5ec82ae03437fcc1e1285f240c75a7713643657728145511fbd10da85ee19bb331be6067e453c6ed6a004eab94cfa133987db6b24fe4b4b5328f6d5edab27e61ced83baa42c7b3152732865ebc7f220b1f139fa6f27d2e05928f542135aa723c11ff508b83338960cf2e075bb43369b6ed46f309ce7e2582b000001bc000000900996b066ce34966c5fa8466a75f45ed2238062b136cda336793b7282c677d084bbdeca74cd1e06ee73e03a4b2319db173e6355dc2cf5eec9a1a0b85dd39b9ac260f7cbc3822ad3891e3c993c082dbfcf1c099f20d14abc5f4eb82e6dd7365592bafeda7e046f7f0396ea4a7b92e91d0513745d615ecf41c7bd8d130985740dff55a3dbe6026a5e80f8ce6951608e9add00000090ae6ef7a3a04a06aba48c357353e6c650967659f01659407980461c4c74de0884f0710ceb1572c65bdaa13b1de3c7d87b2d7ea4c5e175443f499cdcbc419fc4cfc9a6ddb7f4203163cccaef1746833ec62417f587cec58ac40abdfba21cd2add2927c04a6a95289d9a28ac577acb8c595239d5766d3d4c2393156ecb2a13f9226fde236435950396b6a56ee1870822fe100000090f5c8a05db5087e5ffe39815fcb37bacb14bfbf2e953c52772196959a95d165b703dbe921570b16991e99e15b4e2bd68396c4db8e97f4160356add145b3e9ff608f530f2fa55f9813930830f8df5a148e3045546abafd7f81a231ca7b975abf2962a5dbd88b969e5690eedb26ce4d3f30238b380c78bc2d1e4d2e5e919969cc45e415cc276965ab136d16a69cf34758f2000001bc0000009001df829a357a44970ee6cc4d401098330479eb359c3f69bccf7858c574097b6534bb04d7e3f8110b15c79e3d77ea1fdbefa57dd532ba43cf31660e9d4d0afc5b16696f5ff10e768ccef3128d6cd4792909129b9f9c4fd742f07d5a5033662d2c73a0c29d3a3a120535b776e0371fdb32198861115ea1d29ba8d1d39c9a36ad5c70ee0a28366ca0b0590c87e8b5b1453e0000009051c19f51f06efaeed558e6007aec37232a35fb7b7b54799b265865773dbe7b0a0a21282c2e7117651bf2d581ac8b040853c9a1be9b691da9d69a81a6ed5b2f186b05566a1faf567297233df82c15e9b515ec50a7779d8b2a2ce03c230e3c9131c6fceb6ee0257c924492c071100715422d7393f65393f3d52d1a2713d368bf37756f50a18bdbd23e4a7c9b80a6815e2d000000908f2cf32ce81164301b92839f7f83a03f1270b5b93eee777ef10865560ebb475dda85aae36d47b71dfb84331af504fc7e85ba2691d5c08719ac8146c349c9a628e6848c67f3a94d4955e7e77dd73439602c8baedd0694dc98d7b7682d9a2be35064f90b4cc40d6128a1629a383a63e68b10477a7c93e1feb16d9d01f28250d981a0014364a7eaecb958a9e0b8e1fe2794000001bc0000009078bf82480ab9af379874a177f5131c5737a1d315afb04bea2abe470b5c8335c41de1d90ab17530cfd4df0c0053968fe763c4525fe11d27e3831eb0dab5ae94a051be0afdd96c5e52bb00a90bcc7240f007808aedfdf71604a531f3106c8b532736c54d7580f5db68859c9221a6a246f32d0fd2fa766c225e76c431c23b15911c72a6a449b8b332d59a0ffae46065d37b0000009079c4088b4916ee3eea335fa522fb8a2c817929f79779914a6d70bce9560db262320f4f35e377461640fd8f5ed83a8e2c1b6a571b50dfeb335f0ec46eea761e1255947c339d960afdb69f462d4b4a96171f4c0ee5369eda087dd385d3a73553d8f69a66d3cc981513d3f7b97ea277c7da13c5ad6625b3719cc9922a33b900d509372e65685073456a9689d8f3e671cf1c000000903e43310f6a0f4b45a417eda3bd54c5655b6741ce1bf8bb52c759432201cca9859fa2bcd9d25c38eae0a2eb724da6bd423db952927ebc9260e130c594f2573729e52c01a8608786d48ab7dd4f9539f1fb13dc2590cd703450457b7f2e9ee5efcedd9bec09482778efa1f2452087b5ea2608c16ede459ecf2b771b8348b00febdbb4c743a887bf22ab9db65591cdae1ed9000001bc000000903df172e06543a3182cccf2a11084765c3e6bf28b0e0b87b78d4995c5262966bf6e76411c6af26edb7ff83135231bd395d969a78aeabbf1a009b1e92aed0d46bed700fbeec8e60bf18f004dc464e29ab425fbcb2f9ce3eb20afa7714cfbded8ccad46c7c6cb6631a19d5305878f91e6650452bf6b77000046d7e5acc19362d74fe0d1d7cdaf7828e4584e8c7ff5db0a3a000000900e7c0465de744c7dc835b984858450b15d0c9068d49213cde3badeb7b0ed7ead242ef5fb2a36da2327effed1d6e1546ff33189c5c9d8985ee21465891e46c287cf13c5fb8fb5f3706847bb3b75c11b52156bf5b51d8b7620e6790601927a544c713b70db2740e3d511d9fcaa5f6d146d00cdabd162b35f6d7f4f336e4e7b33bbcefb0a8d120108dfd68e915fe346a0e000000090ba5272498ab1c5001f484d38a82b91f3a255d7a5b0bb835742379750c42a449210c814730296432e381eb32d239854ceba60841a3e18cddabaf0c128e9dd673197d0e2ed6c6431cd52ad32a107cd955900cd6b3a0c054e77edd28d86860c5f63a5c48ee87f9b9ef71a9b3a72a01ada8a2490ea1c08b5b48f642f4db559159af3dfb462406abe387e350171ed76abf47e000001bc000000909d08c99ea2da1e2e868070a52b6717503ea37b1c4a801458bc5a5090b2d976e9db9f34b3807f6b9f066f6c3db6fb4f7858e31209b97e6552af165d4f144a2b92d4f677db6964c37dcdbc6b8f2ed48190073dace76834a34d319c7c8008d07e44640bb1db4b6ae72c174dbf5f59c7e304145c4b213d5e30dbe7cab6c50ad3c43ac5df01bacaad452dcd852eb8139027c1000000902f2f2f4042bb83ec7c71440941752fba92929c70e6bbe524fb904414dfd4ca683490c74a9b707a8a94de43c7aec160c4025390ccadf8333c5a217afa28258e83dcfb7c085eed7a5cbd591cb316bda6d60db2c649515dafe5a34157bf952a8837c0f266e9bef1e8097c774c094a1e3fbd221c65fd93c3ab6dcc3a4c72e9c2b51937411e9e935f0e368a8c17b722733221000000902ba5e91c85c88efefe97256b0d2a285261b9f3f766ece5e6ef0d19086b13f410bf9a24df9f0cf17f3abc9fc8d84145ee0f0c05118ef0d0fa0d99320f5daf8b1307513f7c46a8ca355821b98dc7e409a029607cad1fa4290d08b0f377d632e8309fea56003f2abc8f8232157eb0f99e831ec90c50c5c0d90609f5b92bb81cec93f57ebf2e8a85934958ec194a27919ba8000001bc00000090acb6759efa9edf780a8696476098e2b0e698d37f0529cc7e07771e20805ce183ece93a6d8220fe5e41f8f2c4f66f7d7600cab1e5a432239448a4cafac2664f29706b686ecbb9ee7a585e07ac328059a402ff59578da4e6c644f587093d3adb925e26aec2feb8a0ca70a89f09e36c627a07281794087566010deffa8026376f7486b6ba38e3f754db746cf74194a4650a00000090cd127b6b398aa63a9a73b1761bc918762593612e1270efd742b9f44ea325f6a290fc37ab2e78d604f3474b42314cdc14f10515479093ac62e7fb8009218217d17dc2c1be6979425d1f99ef36d05a258e291b3a3cc7dcca71187fb2469a8210fa7d944673c6612a74f7fc91d0d740d4d2201bfd7ddb9f169445c7852cfbc34c98457bd126da955e97f4308dc91310a9c600000090e9c97269047e138e4b47b8cd15b47f75db80aa24ecbcbabbae439e4af1f5554eb1b18500ee95fb4e5fa9fe8fa1ebc4b2352662ad8e557221c17098a3323418c6a5c6e209a9eb3ea6150a37bc5a1aa7760b77664e65a23da337ef538d13a8f322ec6c0cacae03379328a80650cec29a9705ad4a8c798250af9cf409b45074f75128973eccb68e627e2aba87bd1f35dceb000001bc00000090090959743b24692cd5ea95be03a90fe28eddedffc9caa45766141e1a454ae3aa88b9b51520fca9fe0ccab25f78e313a27df6c3fc31ca535fe4d5ecdeeb4ae6cb2e9059afd5036c342d0998d511a835b21e9baad20c0ef3c5be298e5273eca51df8041d08b4f88e08fc3695bb7d3f126a11b4f9af53680091d66168b8b4b2ac9b112d58df3acf91a5c1cc86e6f488c65d00000090d05387d02c443c7363d680111021068fc45fcdfb27d26f3914f05b48eb73dd6495e00c8e192dce422f7dfff826c41e7a5c98efc82d56ec2a1856b46fe18103dfea5b416ea3abaf2491cf6cf960bc2e9f1d5203b3f2410b36bc309f7fd06467953553d215372cf74ce674127ceabe66732d1fe77f64af1c2e4118d09036bf5929f0339a26128b5310bcf267147b085f6e00000090786c69a19ad57b5675bab6576b4f0fe2d6008f0b8e96b4a5691f1ef61b7bd2d3fe369e73b7ba2a0329888bc9a05d4de7315abea648c97744c02cdc0247f9477b634484f3e8daf469c96cfe6e37cd850c26640cb55b63489fecbcfd9688ccbfffcb4102175633b6a5377efcd0b7cc17cf0087ba0d1653cdaf6c68d49fa89706096ea2d7a9c29ad2f3dd867d1df70859a100000e00000001bc00000090a3876e16ed55d821d4636554fababb1fc42d06cbd92febfb62719d17b0f2bdb03d139f03e172349fbb12fa71876e71453c43e13ce97c64f8dbfc93415397633a065a1d515d26b62f3363bfc2854f8bfa10ffdf2a4efaed8b701374ab7f1e679a18ceac9c210fcb9acafb8cf37a73251f08e844a2b2001c82544d3378a05a9549fc7f61910e88cf90347073fd6e82835d00000090b5ff3c7f2f01945fb574824a039d5c8f42610b4a22c8b38b84cce82196b2f2ebaee6887ee5b0cead8b2d6869905cee40342c48e8efc6c2e9f832471f198074b291669e0ce93ba735756fd1c6fca3ebac0aa462812f3112e86d740a2664453eacea944595a408b3d4d8db332594fc5a102aad8663729ef614958a89a8b811cfee1d04540edf80cc168052d388469f0e6000000090b88b5d5719cc71eb2bb8e65e65d5432c51017975c69c91239547519b9e3c2d4628f9e599498bf8e302c4db9d1dae86963a18265772c4779a629a902121419e70a44cee9ae1129d1655e1ac4b1b25df362e67bc16884a13f79792cfe62a93585e14f29b2afbe23f15d1615f3705caacbf2d349c9d6a636d70237841d62796d49e3dae9b0c72fcc3b9bf91180247730568000001bc0000009006c722129a887a0e14bbeb91d2b1daabca1e3ea84f6c08eabc2deda6f75464cb597e5d05d0d823f8bc5f61221a336a976d225ff6fdc4a55a1fae420affad4450d1188825bfd87cd9ff4dbf25801900fa19518a80845efd7cb9eda2de5ea170cde239b239c07bfba655a5bb7dd54b5898210957fb956ec97b2dccb426dea1f357cfd8cfec662257afa8057f879a25c8f4000000905dff93700500f84c17a5d4978e2b0919e31d688d946279884a5cb09846dbc907b40be46b703041b02b2be0b1816374ce7403b92d14f4bcd334a1ca74ed7deb0a7d4a424a18cea800d23aac41f4e319a405f5aa27f508471258f487eb39b1289d102520641b12a47ecfe0d755b9d92806174fdbfd263a80f130e1b44f98423f769a15417b3298de41caf2d78f00850f5d00000090bbfcde9b17102b338768d92ce80368c9a2f4d6949b28be3a44746ed12c0d9ef2e2b66ba398c6050fc7c37ad565242d970e3e439bb08ab9d45dc897ee4828ed045dc4d2b0dcdfc7014e47320e70b14acc1e305b0d9424ff136843f472581ae3891bba2a8452089e70533c2466c89e403d038a8d402008467ee4577d68b2f14766370abc09c249eff0f906d0d1e093b8ba000001bc00000090e31a0d8d00cb9f8fd05817acbbde48215cfcfcafe44646c8d1924850509055c24fd79df0cd8715464e5a1c9bb6cb1f3a4bdd663963eab4c0752aaa1cff3a7b2eb75ab40a996b93f0f2302f6ad963806d0c503bd84ab49a02eeec51d263f1994702f69b0695ceb6cabeb7bba3bf52ad83237badec785ab3a745914806e6f26953a6ca04fc3d7cd696209bf5f104f86ef100000090063f775e7ceb26fe011707735a2e5888e7c230255e25e0979035744f3588eede48b272a0cbc80337c17972944aa6f28f70600506926e61c7630fdcb977bce23d8481128c814a778f9138879e742136b00d089f10d3d8c533045673b43b77fb383b4e661ace6d8d0162c266fbb9a6ee1d1dd8d16898423a2f00855cc213ce2d9044deeecc20a7ee74100ccd6e15a16cf300000090c9f9ff48464c6f94de4ed0abce66d7261db88bbd45ded714b66fb19e5bb89ce727fced3219274c155a314dace0bae0180fa8ab396b989830bd01cbe7928ef72559f89ef4d3d39d77d524a36e6816df1824dbfbcad5773867833c941cf338b17473bf2b82dbbf7946637b68009a1c0e1d170670a34b5b36d17e8dc7a3b901b710cc234ad174728ba4a1a12cb20ca5caf6000001bc00000090e482d47efca5ac34305cdd7cf1e0357dc9a3702db439d0ec32a557be756f27bb31464cf5a6fcebd489d99a93e23f8ec3bc9d6907bc21581d10d66a551180a5d13cab0d2bc41d8a1f6d2352bdb9d51a042d52113e3b937d9964600d48e6d8179044be056af36b7d28717ec773fc116c53028000a5f29c579fab1ac3a2b8650800ae68ac9a53a1f275c208c389013bba6f0000009089ae58cc01b9b4d1988af7aaca738ea51ebe24dee59a27948325a1cbc58e4ab31312369e2cbe9b0b21652e91072f57dfdbacdde7b7b6d221b3ee1c26d55baf5fc7e667b3574a6deed960f1522669f71d13566e4e0b0112c5a12585f5608812a6c602f239e99d3d82ca640ee8eaacfd080b4d7398bec0f577cf72403ccbfbe2f71dcf9ceed0499776ed5ee0c4957cb4c600000090e65d9f202a140c0a2022b6225cf2558d3f5a74a70aeb12acc459db2ca2d3e1826a9a37e98ac6b7c01a555e2114f7951822da3937d011c7a2cefb4c1b94ef44bba2529551281404e375a79950501261b01268dbd966ea9d77da87d9fe434442339186c81fa5c2dd31dffe8c23310e7d3f2a4f8272093f358c6b080b5a38f487a72a7d704b32572c536694618194172be9000001bc00000090e4466379aa91f3bce88e053033ebf202986b24940b07ca54164f0cccd41ca2521d2f1006404038afef6819f047d200d8f16b955629c7bec12ee1c5270f0392d8c98407c12448a429775bac3aad5cefa004872024a2b68eedad94e7663e2f4b21b4bddf32d138d844287cada5ee2dce080a36a7e159a32f219ee6b4e027c82ed2b456ae6e6499b13eee1581011e2e6b4400000090e3038f011ecf8122724726fd8db040ea9e24b16589ed2635f3751b1ade8596162fb96587ae669443d81dabd555a5358cf2395769e1079e10b467b9392e72ce23c810f6ebb2afec33762c8929f7b08f5b1883ccc2b03ea2df7dff0cacc8a2b9d47c2cdfe9be11b2cb64aeee7b22bcb2c31030ab1e56b449cf77bf7341df47fe48f089d5b0419675f8ff6230668da522000000009034fda1924626a90d62ba3a0e77560c6061bf610393bc208e92479ee7a591552f2ef5d34b8cccc41e98566d095b477b6f9b35a0d77db66384489d2c5b759f9b922fe8ca8d89c1e019c90a306a9b228405213482b7e55ea72cfaa28a983538434189af956e90ba1ae65146b08d92d451681b452d1ac8335c202aff95a6f01d387e9e377e313889ce43777c5c0d4915995e000001bc000000908300f26d3083d051387eabc1fa6ea58ad6111d5ad459cde12b4414126838bfe80feb66f89adc287849b52e352bb159abb21d7fe5b2f96afa5a56ac91e2393a7f43dcb867527e553df0b82cd01ea1f65110a950eb54c3ccd5692340d5e4e258770a4c4f5c869fd017c55dd539801b691f1657c78f302683645f577a3811910cbdee1cc7209049d3b1f23eb5d8daf1e1d0000000908480b44d561ea59bcbdac63423d63c3d45b314fa17cdac18a35f02805193dead44d1675d119f0377ca46c6625a3a33f86eb2cb6ee6ac03b9311690ff2d4ddb5670d34a8a577079af14339deb75c09ece1dd33cb17fba31c4deedf7d37ed1b5cefda8e270c3e3883370bb8285fb8fb7dd1527cae5b86022bc1d7c1745e0df1cf1c2501c3398051375ddfbffd4d5ec4c8f00000090770fe8024a65c310145b1edd9638e65b5cc21a4fab5427ee0d5a529aa0f770e6a209dd8608d528210d73c37e2159f2774716cbc7e0dccfc79e39b6b53b762034e77d067237c1de74766583c1f4484ba3064242fb6cefd1993cf4bbcbab8dedda0b7a4546e17068512ce6db5b71e8fbc31cdc30adf2e51dc6858b4865c5f96d769aa34ce8f4b63763d2e7fd0afa3ed132000001bc00000090290b968330d9b2a6a8429b395aff8a353dd65597f38f50ae73c75c1e4b471995b3b23d3d08aa1f5ee4a60471053d1d78fd50a24fc8f4829b43aba4604342c1080a603eaef54b1e03c235f151f8a635be2c715b158619bbe48a16f6201dd37c0323f59537e0e0424c2bdccaf24c5e3b2124f6275ea3f9ab4f0f3393eac7606405653742371717aef2bed00c867d5135b800000090003891a78d433b9cff782fab1b12d3488d4d616f84cac4d51ff1206015f7f2bafb9309521c5425cedf5e4a054e2783c4fd49b54f0c2758c72459b04cf8f3d217ee25ff6369aa0f98a8a1f28bdddf165b0925b0db8f19a1cd1528dd5863d25ee007b07e136a6bbe605c8b5ccabb4e3b8025bf5fa4eba51c3abf2116baa338643c472c3f67fcf8f86ee1225e2a68acb8fa000000906240c30ecc2e1b81aac6375b7624902e826c7ef31eaa1edbb328de81fa510d77ee3984891fa3e065e55a11422a20e7837fa5e2dce0fc007b6b42349a70fd49ccc7103ba8ddace83f4b8becba2cf709c41e377e7c37de9cf6937e975277b598a1b1ed960be7f1cb1468085246647c5c6b1d305e6c6d0704f6045bc8d0ebef9527ad356e325a7727dd1981ae243eb00111000001bc000000900e29e1361514875a00ff70111ff79784f25cfdc3af735a5e7b74e934051ac4ed1992c3f8578624175065276893f775acbe3ab7a307f6352f37128fd69088715466745dee45361e1943a1bb42c79a4ac606f0dc81e6229de80293a839449cf77b84e6b595e9098516dd479ce5ad0d99680a340e7809afc785e4b448a669c076c11aa06f70830474b808079396468f886800000090543bc7a8713ef2d048a6b7d3cb0420b27d2ec2d1cd4cba84c7f8dc2b278df74e392acb5ea8f63992cac9d830c4c41c2558dd15068d18772feb80b7fe078fa12cb1ac04bdcc5f1f13d703b8fae3e1d9391bdb20c632ee66855a0f9797e82e2ca6c8e82b755fe7ff70343360b46364296715903c0f9332b38d5c5f82d5c2678b7be0a1ca117998466b08683ec43f685fea000000903d102425c2f6a06dece97ed3e1024405c8a4b6c80704c0107dc067e4f0ad0dbce5a9c66f477d45adc34a0c6aba10bd89ad720b07508710262f0bc332137a513b6ff63a0de6dc5d1c835dd8fb7b12f0072212f1ee47da9cc45894cf5a987c44bbf1e3d4d135d391d04e725237805b4c1d01c79918589ee1a68bdae93bdc9cca3150910959ab78f4ff7eb936689bdbde9600000e00000001bc000000904f9a864e690819a00fb8224e5d3155788abeefab5507e780edf2a71530813c32f89f2cdab2818b50834af7fe6db96dbf98be1b603550bea8f83ee2e9ee48276318716e1b76c0d7ddf83b13cde5c9b72a29449b6a53fcd372c9435bd66bfa1f1e2ad6f334452b04ab28e9140fa760652b266637eaf4fd6c15199410e0442dfd6853ad8039c839cbc38c8f8a641b4557ec0000009053778bd9d306881e6437f02d1c060c6ac911dc6dc08e14dc2fe7d07707db0bf6d1317e435d10bbf694eead58bd9f247505f45d2474764f9484f51aa3d47b9ece0c873be7a8eabfa750681261208a3fbe1abd5040e0f3cfa195fa47e57c9eeef7abbcc9e44a7a410b8f642a7f73172398091c39940744b315f2bb1aa543bf2300b7df1f145e51a9ecbdd7edf6c1f940ca000000905f8c5f38e2cd1526e302f63617c4c9442d7a701e64f186f4643495bb0f2225f4d447161caa374675056fd347cfc9c326abbcddcd2dbf7fa0a7c65d66a00c9267934cf5024613982dd220b5722e732f2b233018f448a53711c9125341245ea58ccb0319c067fcd85345e2d7c01ddd145017d6eb1fb8dca36f5aa255c7d6cf5d0fbe53d2280505061a10fae56a8037f9ef000001bc000000902d323435155354833a8968b946c70a808c7e5a0c957d741deb6d5e5a8de5a16c9c4e919d122e71018820419b3bb3ea11bcc20004fe62fea8d2ba9fb60fb876b820cfb3f9b1e9a4b150ad8e068ff23c2c18eb725ef932f7edb2f127a03e5f1e6860b836f2bcf6d158b5436b373e26c3c5236af647d18c743d8f4d0cea5c99dd134b47c98959f3e21dd4d432e47a953b35000000904550746a5407fc155dc61fbaa7fd755c1eecb77e8436f97ad949b11abb5620d73e5d8e0a4b17f134538a6acadf3d0dc4002abc8ac8e3346942c62d5987689524de70ca521b9138cb85322d3d139eb015024d269932c7ed0293cf0b10aa5e4fa1aed8b334bd2da9538887291d4a45908123521208b53e8802d8822973c96d095d142847fdd2647c4096490dbc21b89ddf000000909e6a9f692303985214bd3d440f42da18221f968a9842001de8589c9cbbda59b89b0f072eae9806c576ad4e5d36ce09dfbc1ce7192fd51263bea155056bffab8c1fe28c1d7df7cfd69364dfa06463143e1c23fa6a033cfa7aad7ae3d3ff76ef9d9b02db4c233d7e2e273e1363d1aa88510e897831bddcc98055881aeb1416d3a6b7530b777503aebc2e54d6ab10c37d0e000001bc00000090d58a0acfe904837b752f41eb33c3d959affde56bb5947f8e20696e0c68d4e953e8079930620497ab7e7aa39694f7243ece745b53d450678e9f989059ce3c00a2fd2fed4851f4a2981e532c924a4229080d331f051722acf173ea3580dd246afb3f540af9e403be1f550f4ca957ad0ac10fbd4a4d9a643a1f0c6128d7bf44ad7bff2e84cc19ca5db71575b9b52076e5c50000009097a819c4b0baca0937186c55c7840fbf353123c45346afb6366ce03ed1007e6cc6425341d00e7de3f234963e14b1f36990d9a08170dae6b366243b9df8b9ed34c5b9c3752428ebb827164ba27345ac88268b66690366970da8019354582c203b0c91e290f71e0eb314c617c084af18c718f5896b1fa2e3be304b1759530a4b0da0a57d1e5e9d94e96cbcff3ceef39af9000000909aa7ac7b6e139c864a92fc2cae4aa465d428eea35dc90501d60b64d527b85c9dcf116e257495f8f3e4b5ff275ada7c77811fd81e16090b33968a7866f94e4b9e1d1ac3103cba4a1a96cca7a145eb2a9a17c67c30e8843e28fc74702e7701391560da1edf7efe2ccd6548ded4ee8743fa12eba27029beac848fc5cb5542c1b38078ee96b9ff5e44827edfb6abc1ef8c6f000001bc000000905f457d742ead95b5eedb9b948f86be096590d0e8e112383d744ca7ea0640ecb703cd6a42dc251d0ac50a65b6810a2a330524cb21817f1cfe8ddb5da561433d545ca5d3867cb28ee6a7055e620f80b8b40f110d07b3e07ef2b58a4d7310ccb1c9499fd0763aa7ea99229b8c604f28ff02083622ba713712c31103eeea2e1ab0789f2a3fe03d131652cd452fc538be8327000000903b8939cb4709958428dfe265eba9fc58c4a72c3f3f9a5d685681f1828c317d44769dc018b8aa017c3f8a4855e885bbd1b9104f4e12dad6554c86d6e3d68e3b10b81c1ba7874847edddfb85835398930d2e965aa6f1a9348fac83cfd8907d032082fa1832f0e6e9a3370849fdcc2bcd0502c306678c28645be7661b14f7d195e89dab565d436a55c63b9874b820790371000000905ac1167885ea7eeaad310ab9384ef3a85345c6e10bedcfa00f0eddf1d2186ce76e35d94dee3701f21a340d6ca6be5f5771816c78dc7d4d9642a0360f373c273b2f85fe07012da5142754ae9b4c1e683115f318b02e54319c3eec0a1f57ed259fad61b8029918bb04abc88d5418031a472bfb38eacb9e6aafef22d059b2cad66bee5f27951d7653f1d5e6a1da7d7fad25000001bc00000090186c54b312de2502ad90df9d21c0ce039879cb91c919fd22bb38cc261c79c3f6e465013bfecc988abd4b69df333a8f616787e0280e4f87b70a617e4cafae0780bf83078216e35d3d331a1ee4ffd020ad2448a59aeb1b2758f92194e6d3b81afc33f106d6479295451e96e64ceee3e51b1b94bad364c09520d6cc5227c50aadf85f82e0c59e7a3da5967c45f9292f4e9b000000902ecbe834880fde873379b8f70e3f0de3ada567546eae1c9c9af258f4f3312cfe439ee227c5748230dcf227580b6072fc17e3710b4f156cd877bf40f88b2ad26955df72281a2d2cc0754234c05978ad8d0acbadc8f9797ad222723847294785e8e17c28e183001d281a7ed57aebb00ab9016cc25d4e89b4fe2fca8c6454acb10a7ce5ddebd7186f0dc2d52682ea2d4d4a000000904c5c6d664fb12e3471d405a8182e87e91443bcf78b545796e8c73ba29651af4e98c2e7a95c9a9c46dd5d3c8df95a0f5439fb2b296cbb8e7464ddf15c389d2d235dfe994da79aaf9cf6891e8efbd94ab51bc8f73bc8f10fa23f0bda83f9be9e76c25e2af740f2bde9b5b0a0f76fc5fec12e6d9e7203dda27b27eccc42fac592fe6e5d51d991e51d12223ce89f4394cf1d000001bc00000090eb34f161278463b602e60cee956c56a68b4fedeadcb8c77685bdef0b7ea3481ee297cdc07da286af421064251ea71598cab671f1f4996eb1cf176047a6e89c2aee237d289d7bf9fba91ef7799d8cd9bc0f77b2dd8a32a1f2be262f3a001f8cbf4435ef612d0072197f8615a52ff7afa713cabbc93c14bf0200295cf634630cad118a1d988bb10fb3c2814e80a4512575000000900966fca2b9d5cabde2a66d5c70d08172f1703507d741e7a635a4927fefc4ba2b09ef5eca8fce696413a95cd9334da60f7a9862cada5a9fbd788347dd580e99caa43968a6255f5b54610fa3569589a1690144414c7ecc579815de419ef0941b4937da5977957a745d6796ad2aa1383c3e2efec4365cc356b9041a12b290c5d43a3f3b1d77473d597d8a20f23190c05952000000905ba55db35d62212a6e561944103eed603ce9c61a94f386114da015a7d1b89e44aad3a53166f650e9c0dd8587de37c999d8a156b9e17e75d24e0ab4dc413ce6d32c62cd6e4e6290d2242f416c7120b4501f5ed62312005fdf126f018799a41816ff5d0f2a7d572b3af4b6b1d7e7b675931c4eb811312060cd88a5f00013e1b4a3d76e5eb6b433b7decd9525b6ac310678000001bc000000909c5a60a7ea583c9914b81f31779c244ebd687884e42d9f434375722df9f47688056b354b5f02d3130b311b15fde7e71c1d0f7b69135a465394e219e1b0f462b8344e9ce29b417141b88b358a52dede49157da2437df6eb92eebe8edfc1098faa7508c414e5e237ff9c15bfe6d54eee2e1379a4cc167231e2594e62363d1fd43b809995da5720160806ebcad8476c302000000090791a797d26384790a3b36b6dfd89684f28427ca87c8ac83c136294e62cc7cb7a0e2ee61c1c018fb9f78b843380e12c204d4c682289c156895077350ddfcf62fc6e2ebba789d75a571ada468b288e1ae325d5b798db527e7c154acff67a5aa52b91de9983e3c2babda6abf48826ed16be069fb8d5f43234514971c56160f0eaa805feaa5ab8b4b7d58938ac565f95ebc400000090b491cb9ff91c3aadb441623a1b327ec20de34e448ba16d5da4d6fccb99ca54d5c80a8e12ea9d9e81b94363e7ba45b400cfe959dd46886dbb8bd09088761f5b757b33f2449a59b691c5e43b83a89199780696c2991cd1ee09b637fd8958c78579f96f410cd08acc37882ae9bbeb01a78a1f8ce2cb9c1c44496e26f1d5eafcc825b6e36e060aeb33721ca8254c18c3f679000001bc000000907da33c299d26e34eeea01f006a110d5eccb3bc6ee359078ba7db61822c4d330f15fa724fd856f7c52fc1a1b159e48854fc4acc31e2441a8166c09f41a36e28ec4d28fa82d26b0df515cb44877d025b4e11b074afdbdf6ac54b501156d075c5cd2e335143b697d8569bc3f1649971c5ae1765b97b1f3110f32c247593b11f0c469a3eb837b01acc06cb42e7931a81c8f900000090a30179aa3af06f3d0af1256b70daf420df531fd45f1e5b60e30ca87df4a566a56cb04df18e8dc75c574c6159d1f0f1d16a3099cd70523df46ca4edd3af1700bd81b12d34570d92c895ac8e950af5358824981da13cbf6d40b1e6cb7f6ed01acdb38a2e1f8289ccce83fc22f98cdcedef16d7c75f6015cbde52df1f8a398883df68f7f9b83f6ca7db9225d10642d7ae55000000905973c0c6d830bea7f2109523b3a3f0e8b3a0805103f755cc55508a06e6ef0fc44848d1a6cf36ec4457b2579d800c7431ef9822db5565036654354475ef6dc5a4cd3cdc5b0b594dfdad56a2a0c7dc59162955f7e27e655fad747e137f81280b1491cc7d54cace55f4cb97c60e7187d43d1b304492a7615c8d2acff874287f7fbcfc083ef81c5c85e4805b0ffcc2c8cab3000033a000000ce40000012800000090d1905502bfdda3ae7a7ad5b8b4f2f0eeb59cc1752d40934520c727ca05a2572c2a79837c6fa647a2b0fccb5220ae8d669b56bd4a829b9c0378969a2de759580adb811b9a2f86eb5dc40eae174b3cef972ce9bdb652ead9df39d088644e4a8333c50ba5fbef3db0539f062a293a583a7424e214b300e6d33957cb37a88d766ca117901e7bf696bd7a60fc37e380818b88000000908a835e9e543b4d3dc26b5fe41a104021f8cc76a76dd6561a548208afee29332100a35d0b84337985b2fc71aa91c1dad221e06bb0bb66101d07e6751a1e6386a6929bd87e97c762dcb3a9813276337489018cfb72c40a18958c16531796042877664fe5967b33b990051f4fca9f81941f18d2191edf8b4de25881f851e771443597f13d2f6178afe3153201fc53e56e300000012800000090c80e2c8ad9f0df4dff2b3cb6b1cb64ba731bbac16c1afde6a8ed0d80f2065d89bd5c35323ef4289e6d946469dd2135c7afc8d2468e2f31531d4fb75e069e8bb47c40cd63642a6ded6a1f459c161d399f03217510b4e322e452aa0eb0b2e1bb5308b66d500a96d95ea206242f55c2d7910b72005d5c29786648b9909e5dd36fe31f33f04a1fb8ecb5a8020ca9b147d7e600000090b7bc70b9b15248819fb334bb519ca71b94961df9498d1bbabc1c4c6469ae6b9bdf953134a2ac9f49a77f599c80524b1fc19f09fc843bd99d52a0c33f0ef8052c6a6dde62a1d0488e02d3b32831f5184c27050dbb6e761e1a8df2d604278b19fb23bdfe9c178d2c7c076d804852e463db1b60fa77e817d9eb5e847941748a284750e9207abe6e05b5a50431c8bd6884f700000128000000905f665b3b5faff4c044ff5ed2a885d0bc4f22e6af15c3fa75e1516ae0a9b1105ae7e12c261118fbadd5923d5dadc6dcef42785069f58d10fa0355d690fe8a4b558add1498cb1085e6cf6f80cd22ee2c781dbadff6377db9efa8a5c3ca7594f4dcce4b7244e8d9597d4ec442e3b24466c2286ad94eaf7a5716277fa3c981ed52c41ea5e92220055d44b8d18bb37d410d85000000902c7bd784116cff39b2adcd15762380929ad0e311e8365944633b0c3b4256e22f12563f51cf6e7060b40a36ffcce0272451c19b5aa6acc6f59e422beafc3d835ad508bd46d6214382211a4f939a2828271c90ae7f1ac9db3e576b965e53d5269cb929a6cf72113430eb8dfc4718acd6ae03b44eccc4a1778e75156ef832914dd19e87fbf6308ddbde7be1d66a6e050050000001280000009079abf20bd2d8f39a4a63f3d567e7d90fc09feae46719f58811c4f23bf8daab3b8e203a8798e48ee553e517c1dc62bb7ae71de60d12b7aa26721a991d93d8c50eced62dcea7fea4cf7579f72c124ae23a2b9a9151b716671aa2523847c60e117137238181b391927c4b7ebf690c040f8d1302e5b280eb51b772bac3f1374c5cf0ba3a4cde90381af01f713e5f74a2988300000090d0e251b71d84b164fc2a5e92423d28a1fb8790716823ba4a81370d1bf80858e853be3ceb93c8ccd4159a1ce68aefcf40bc6a08978007e8720e37b8aa46326a818c4dcd5b45024a9899cd6f83cc74e61c195bba4b7c8f0f8ad74603c97fb144a2dcecbcf3646087fe1ac79354fa6ad92607b2879cedac1f78ec1f294370e26a2d3c99ccebe2aa6cbc11cc76bfdd99510c00000128000000906cffc8d66ecc763d1f9bdaab61abc993574ed1980e688551a1f473c3bae409ab6bff793f77c5c6243b8836035548c2152116b672a63f55681121fb0598f7f34b42348bdcf9f36e590dc13e39f75d81001f6e603a0e6d781a1aa6ff2e99e983e2929c8faeb88735a911d9a2760d28560e16ecfef2d1bb9f2ba04e5e6b3fd7c2c55fe03b3482bf4bcd253f9cdd882ba97400000090f83c9f1275aca4c32c8d8cbecaccaf943fcd9dc2ed6214c6d30139622e9a4ac84e3a83b18072fcf6b43606375622527e275ed31914205cdb2e547719a8f3a38f734e31d1a0321098613ac9ad847730090fb5c8a755c78ce7801a217c95529fc2f27b12032629ba5d6dad5f84391e150613b8f2305df4b0ad9f80d62f383d76ca5c380c371f688f9009e1e18785ec63e60000012800000090129dd7c39bc4e543b4228ff3cda6d81602edcfcef4a76d785d675661da95dd6c5b6aa104d9c396cad8052dd8e2b0af4d9fd666a9df0cf18a71495704943e84768bd1536ecff3b070d774e25d8abba0ac118f9a46a272f0a052925512be95f59604198c76999f730f75489194f0ee50620a1da9159d2c2fec13f4889ff2504f1e7de758a6706b82430bb66f3df68d73e3000000905aac7a384a7eba4c579bdbece9546dae1d26c942d4539e00df3cf77b69b9ee876b91d63b196c6c4b4ba1bc9396a1d8c48dfcc98bc701d4c0618ef54d3e1ed188447ccdcd8d733cd051863976a2b5e74112f08274aee099890d0575139403bebbae791efaa456c5fbc66485add46880c92fa6ff5005ff848b61d2e09fb25d81d9e08563dd63740af23d49f41035a43d5f0000012800000090af9a4e40e8e108a8cdc3d51fa0a64f553948d41472a33c9466a401f8738fa4e8a2ae87075b434030a1e55bc88f6873f3eb61556c755008d7d00867ac7aa2a8041042c16d36cdf4965ee358af7c2e8c73224490fbbf16e53d62c2ccd7b1d63bd8302fa03838f25210693ca227678d458b13f4567ce36ea57348b0272a9145dac30b3ec73b71dfffb64e7112a68ecbabd80000009031ddbb3923caca21f9baeab0d4ec4b93efbd3374553474fc72beeb1f442fd2b5a67b020ffbf783587bbeb6bae515862f13699961ebbb671dbdf9ad5e5d899d74eb50800e72e41e26adcbf02b7ecc3e9e18f6d051a7d618e7a3648ee7e30a78033e9ecfb4ff8de40608780cd31820e0e6001da3eed13df55b1d49aa277a94e02a49ea6443ab81f04dee97d81762c9e5d300000128000000901fbf647989be185f76f8cb2576048070b5203f324130e5a2a4047c8ba5ce9f3ed3ad818d5b893bb4fe722d3316561e880518a6869b8726022f3bb75a1a3e4b87cb52ced27e8392d4bb5052f94adac58816f385c34702ec0280952432fe6446601176af2bc8bdf457c5bd3fa42839935801d0afd78d27fa50c09d735270053dcf43d26a76e7603dbc7016dfb03d29da4900000090fbd06a73bac0c4b1821816265b032d2b116b124a562628409313c3b0fe21651cb6d73be44ea7ce6cec081137274c91cd92c06f255870a549544f790c1ba7b9146d498c69526a08a5d21ba8d6b25d067e181ce6e311139c9f402f6998d3765a4c7c7ec592ecee5b0e0b9355dd012b96042d81a176d087d0237db9861f7ede02c1f07adadbeef2f419eaff709ca3f95c850000012800000090d7c2bcf98fec6893a4b74c68ad3a0309a5f71211c8e891e6b535eea780dc673c2781a48323f8ade10024be2601a81d0671032e74823f2f55d5b25ab4ca3bada178b7a981c9d1a856354c745b4afc2726255099142c0e31eb2a5da9d98adfcb46d1917b7d84e1e2e77d326987f7cec355112bf6c26d4ba0395ead9f0dce334a0de4efc64a71809810918934bbcb6a461c000000908d7516bbbaea081bb212451b528b8cc86bbce048db2d8c5772ed87ea9d4e728aa7b61c87c57bdd141c6ff39b05b503738d1d28dadf5371b4b060bda65ba3ecbd41be6ef111cf57b6548da2032f0a191a0bdfe1b27d90ceb6b23f04f8a5863e126d0853747b9b082b487198a4920872622af67ae94b4f3179cd5469b1c0bafd8c02b42bc8799e6ae4afb79ea72cde4f86000001280000009019b7e77c5be67c435c76291404bfd10b5b18466c1dd37f8a52fc0977a7bc31f7ea0173215fc5a448a2d24248a18fc60ffa2fbad7d8475951d6e1ec4462bd9b9319c40dfc3790342da046c6a010a64445226f2fdec5819a1fa19020cee7ff19b68b52e988fad1bca1c3ce88a74effe63b2269c7f78fd7d11a7cb61676199fc26ed50acb3bcf72666385bc6dd6da8d07cf000000909adf698c4100086a212716abd6261b4aa923bbf41c554afb8aae3198f79902d4776a3d75a20439ce0799cdaad64a568ff3aa4a057cdea09d83b552488c55c4d634f0da5d5e63cdffe3cc903cc59c80e90b17fca95c2cef6319e776d6ace7695299805c4f888d32edb5202a3f50fce54408244857ba5f6d9e700c2c297451d0ef54e0bfe991e713157d8e305aca7bea27000001280000009092e0543de57e6e227efcdc03e8082029df983f760b71e48e080644b0762ef393426c17c75b79b19eb2d987e60427498a2f56b3d71ebed4a80dce9b312f85db8b05bf9c3b1aaa38518115f75edb89ce3f0a5f1684b6f8543c30faaaa4cbf2c2b27c1769a0a0037f908652f979184d15042b209b37841e256d093ce675fe2447c12c71c9c1484a1bdf489438bf4f1baba0000000902cfd837a912d0bb6d432ab447303d975d1bd04938a49a0c7c64e5ef58fbd6107a46f190dd80404e5788c51979b300f162d1f7ebe4f8cdde34303cdab18fc449cc3dbb3ab5f4d4949eaa49f3749ef0b0a0a1ad2cab1db5b5ef6aac87ccfbc70ea6ee97aab13016f0bcaef27378c4b39040b64ab2ec04016197e4e9f022caa51e9669167200d6da163e5c2300e8c2d1cf400000ce40000012800000090dc587aa4332202c6cb7166c034697783e03233d9ee1f3ee7e1c6602ca72390d529effd755655c207151e09c767522f354e091210eeaaab36f6998df78cf65c65cb3621b310c6b6505789a52beb235e7e029d00de64046fb9ad323d2f31a6910ac78f3d69b3ad2764288711682745395013073a18139125a385b39ab54f8374c6ee1c3a75961eb01724041da6505c2bc600000090bd5aec0b649106c5b0b81a92f71e7f5eeb670ff3d283b008543ea0724c552eb415087e0d6c6f62f722f070fbe94813c5bef249f71e83f71d73760f7e5031b2b8750a949a00a8f9e342eea1e7ead9b8b11330cf4ea7d3dcb98d64b51c884b40530f9c27878169fa4e33a98ec717b24f9a2f668ccfa8b130e6eed8849c5d32fdbb945187c2b24c7bbb269370eda993061a000001280000009019a2be31c8796821dd876846233d0f72d8d55722d08d6300005ba90da68fe75f9937194533834ece95eb25b6dee9e6567b4b80daa63b358a785cb86c8f850cc669ce6d7d30a472e6fe8f37976740444a237232482c8055548f97b72df3ed625f0a4d0695bca06183965300db8badbf6126f2ebc128889d1bca33a6bf88e4806cc26e5966190374f94bfafbef0d21ac7700000090358babb9cb8691971aae68609d38b10feb1d2a8190910d7422a5bfe0aa58f0bc6783ed56287ef8ea4741bc1def75219b838094bbeb8c21476fcc69256ef36b84c3a9d79395aac2d19d4669b1641d3cc721eb517e6e92fc0e0236e950cecbf17d9dd8a8e9670d2b89d2ddb1b6bf65397e2bd643ee46aa88398e566c55e109086ecad8d1d56fdcf79034f6431ab924ec36000001280000009029aeafc335fa8e95ae74da73f71bcc7007c8c33b37711c8214e447120c37746dc97e9c65d7960f7c5e7320e75f79087692feae942b353a54f1165a16d120c271e3e5af74a1e0b9e0f1cd2c5d31971c6e1385483cdb8dd34906ce5d4cabf56deb0e276587c32de7c85e15e5bcad7f2a6e2940acd0f5fef55a9bc98c8aa09014379d83345635bcd48d908bc883c18b7a5800000090881a9e6f7e94e86575c91600d2abbe813a36c564df6b2ca8ec27b51e6f35a0bc4f8d68d5c4075d0e3e87a5550ad353dec40eec028ee1f5b42a520e1b139998f992df29f03daf9d3bac5297de8099d0530bf2c0036b5033120264a9502338f229edcb96a01f1ec2c924062fa313f6cbb02ac0914620a0d5a97e6ce1e9cf0eb7c48c7543a298759b4afb437d2a1dbc48e10000012800000090e5091f2fef0eb8df60f95f8444f9f7745dfa5d699d306ef4836c64e2b98268a7c6fc399564d4d49d1ef7ea4a3d6a7df458a3e257bd1393be9e84cdf4bad769a6f3c5f3c2150a019b0b1c4aa305f04dcf0fe6c8650f71f014dc1e381be69eea2f1e4fc0d308a81489492eb186a6ea3bc31e3b360147677cbce8597942a4dc305a1c485469a7e7920dc1a74500b62b819f000000908cfd83bf0d0ad99129f802f98bf4370798eb4215dd86510f6db1b8ff8c09f3581d2ca57cbe44d237277b457e605a67b76f8da1c39d06bf41b904bf8416481acb03da65940038a83f6ac45d792f2902d1207f03055150bb78d277e49122464c205b4d4f7241ba15ea532aa8cfa65024f40785127305a1449eac0603659300119487f5ef065d8fb4932caedc4c7221503800000128000000904654a6046603b6cc049242caa630c290a5f236bd2d8117f2bf709457025220fd94aed67dc69920ae0241d674e5fb16bfaf405a151c3753fad8f015000da5d3b0c6d4488ab3b2cdcb3cd53bc2c6619c6212e94f10e7b4c7b6ae798d3a04a2babef49dd2d2973facc3ab135dd446b124312471e6a515f341cbf69b4daee6ef8dbab575ce788c1334d57ac0ab27421811dd000000904a95ea082c55c5903663995a454090cddbae42a173c3e14a3e9466f1d4f3b0506b5f4e32c4ad9adb958e2cec97f906733205b216c3206986a66b55770876ead0bad7ef67b620af8399486e235ba7be572f3e3f38f9fef355f6a30c1ca79e2f079239077524bbb3965f19c9a608ad1bb00c6d5ed4acabe3703e614ee07d63f66be71c2602f5d292563a3f9375547b768f0000012800000090c9a80869eb7414055e9aa60e96f1426c1b26926be0fb1e5096140b52e3d9a33367e26f6ee80748faa5c7c8604e0d428b2af4650ac06e5054ed70bfebafe027c1742177bfbbf147042efa25bc3f4b0f882f4104e4968239e13bae19c0a2cf12b1516ef7d95598ccce1e7f894af04196a41f90e78c56e396e36b56d6ce04195c666002f970c065136b7e8380e6b3e9a42e00000090384c10ece0a90d1b7c7ae0fbc69549d807ee6d9e6639ea43192eeeaf9ffada9178b8f3539a0b5dda6ed1ffd3841f3c9227c46288aca019c1c78749a335b596bf13fbaef22250a906482065607bb0b8a72a5ba7f0a2ab4776669acfb5f68a5c09a9664a076b05cd6f46b31552fef89b242d893e40a89ce617bd3e798cd75923f34eede2f2d004b755a3fc0ae4cf811b140000012800000090f07b110e3bb4dd56f549b2e01aedb0b50bc6c1a46fbcb0276d3b680fc2d0a3ba6d07eedf092c2fad2b5ae450b2dab4d613f80a51160f3fdf345396456d13aa6bcaf2c0f81af8423681a92a5ade27d5e12a8391d3905270565eeb55eb99fd39011ee40586cb5b8916ebb2327a7f74228a1a5768b6748494cc156fc28bdb52d9ff1a396e8651c9da2c109175a460751d4f000000905c3bf40c68346b39d431671ada024f4a21e96d7a110953ab1683e79f49fb8ad7ca1b4a4471d163b128b70b6c1e2f7220e03eced83cb2b9a4c50e891e9c4d71700ceb04182913ad2c4b80c566592b501d1e49d7474a65b36dd1f024ba26e16ee454588b8aeecbdf4364019c0a781d121a04b1066d2e035738dcc00d28952630943a12abc1f9d4d1a680901544efebccd70000012800000090fc4a6fc3d816ba0a3885d6a7a901279f62af6dfe8526ef236a4ba9d60149099cae6b220da594b763964d15c366ae002c8316d367f909cc0033d132d4f22eff1b8a11b03c60557808da6cb21cab9d65cb2c1b4a28540767020a55bc55081c5227a5e6f949644f7c86c58b080d8ec4b99e0f4538bd25e6f274978b2f466f009d74e3376f76c026ca8e1bedda1f350da157000000901456cf4dd8e308692b2f994b1942bbf8796aaf378ff14a25903446fa8f070df54c78c017bc78c03aa89115f28f9780743aa738c99a0a150901ce43fd25fcf66ecb1efb1ebb56350b7cc4b86bb6c2388319532180d1c6eaaa938edd4a86916d7b89f43743bd9df883b58efdf9f52e1e350c553c60cb3b671365bde8451bac3f042d25f2c828a8c923ca3e05ce4e8492e200000128000000902903d864ee728289e1f7bf2ae5c9c2949b37d4baca2574a25d380863967a41d73889662558670596e5d322b22061e70cad78bcabd5c17daa5da2d530c8724c1170fe843d83a4869ff8ffe1d6bcb0f2a62c7b8b3e650cb59f6ec647609994e2bb9e96f03965b90f7f89e03f2724391750019e9e76541ec54f958c27fe8b037e99c7481630a92579716879ac717faf758900000090cdf542f37ff778bd9a658de2cf9d49e04f7648ed16f0de2a7c1a64c3b2785649b08baff74fa6cf69cc43acd4a7dd06db48c354c1c4b1431d69a1b55ee89688142245baf3425b88f0f693221ff0ac1272272417b00cd9ed69a300f5f7bf216dc6728865eaee008ee7813b28c75287a74b104cc6b8b7cc79451783d94c59038c61321b6f502b3d0ef71729cb4d54ea1c9e00000128000000902d8a00b5ccfcfb3a4fe9b255e32d5271b8509c43c65aa456e4f4f339cf7154d3fec1b33c295789586216369ff1f949018f880d539bceaa2c7dffe06a886a6aa98d441644292eb57624eaae712a9e30cc0f27bce54b31f47e72ccbb8065093379a245509991c1eca28e60a1bd80317f971964ca59e07bc005f19f438998fdf646aebc6d50fc9806afc8e5f53dd67eef1400000090e7c284f83939609ddc5034139cb7427f2749af0ceda579468f9f12f479d7635c42ae47924ba8d3ab720843b3965e8538bb4d3f5eec343185ab072852a202a1fcc6c29931b249290af29f909b1fd905772f21bc9db8b7e15704662ab924263420dac87f6596d3bc4e71a46a1cf88d4f130485fae93bc967dc32857b8e01d99ebebe50fd7fcb2dd92faa1fe760bd9b117900000128000000908d7ce67b739022c93cf68de7f4152edc7e66e6f3143d1a44eea1b64ec04df99a9d771b30c172a41107d84200910bad13432b7671508aa27af24c750e64002630619a0b65e54108c7cc30ddd12d069e940d114eb6ab90ee9be749a7bcb9d3295d5089b897b7293f24e7fb0973ad1f27cc180fd990f7821070841668a1c06d990c938af7a09aff5a53d7bf728d41bcfd7500000090dff4bf92d32b8b2e3a7371871e4f4d65727e6fb33ed9e2ea1e2422deefe49edf5ef2c295a6bf68ff112ef4e095753b60502bb42147723ec52452ab4a37d4f570ca86fc00d9502f948a5c5fa82eef730406dbc1727dc7284df5eb15541c0d030768979f802a46bbe2e7344d675e2e46431e7346c318f763c8dc24f4c50801e33ce39ff804cf65ce6a686e00d6ab5fb5a500000ce400000128000000907c05563341c4d959bb1ec9f9fc41d77f23142b298c4a1eed904d69a7157b0c3a50189d5c5955bf5d0435d27ac263bd4b211220165c7fafffa2bb9509b22fd06d3980a31d6dc535d8348a7fdb18111578097d8593f94d803409b86b58dde71104bd3db6805e1210826662237a8cd46b7a287d0da7441f6e16bca0c7cb632935fd5200946348a0a63b545772b8423e9b0e0000009029f26d7c01fa7cafab88f9c071037f4c37d2410658cdca53b9fd841e3edd61eefc8b447820c16b64dc580c87d2ee3bd86d980184853c62051086ade474138865436b54fcda93feb678ebb58693b3b14711b516c7b47b506e1e395cc1256b24e2c395e41c5a73a71bab2b04106a9984a50d8e80bf0a83ac05f25a327444f3db4d7475e579de9d471b09f10e483b1d2cc6000001280000009070eadeebee733c4c21a01360efc1e965a2e81f0178035b0b7ec4caa6679b944780d48c11ad55c38a024ebf4a0fae56e705f7a00b0add5e3a5cae06134d0b92771242fe98d4712a3a1c696734edfe95e62c60fcf93377e6e5090f9dd5566a389604e8d7dad82361b9f08688c78fcd524716b361cf210f134447905df5f58684aaf92d1f2fccd3faec8257844c590b155500000090c3a22867a8620f0e9cfffe28abac99b5449612bb6fd54c64303404077ff93221b0a6bbafb6dc1853121a38e8c41ceb201a4f72df30772822d0b0bf66fc5dd591fa7aab4dfd97eeefebf334097310658d0b1835b434bc3c7f4d3eba6051adbe7c0a56fbe6b7c99a3d6bb819b99b0646b710c09af243e9832dab652c0c777fb31c637aa7990452cedbbe5bf99fce564c1a00000128000000905cd7fd8043ebaf521a9cbd850967d37102d09f6578502cff586e78e552fb106abb60f660939c2a3a3425b9124b497d6e6da586baa74107df8af0dce982ce18eedaf56291a4578ee8d1fd147f90dcc8d60c0bfab51bafd8a24ec632ae09d3c9a69be585ce4e2ccae10be1fbd4a9fd76901e434cc1de5dc161de968aca244423a3a0d210d9d85c4518392b51aae13ff5bf00000090048a99423dd6dc09bc6ef055ccaaca0c591ad76d5dd5ee848580b5d183ea8d161b8ce35ca9dda3062b1919d347cfbc77c010a9a05a570f66bafac197419623b391d9cdad6621d9d9231537da704053b228d75d4f7f81682b8d581a30341a1bfd728965b622ff550008bcc73449d31f98098c20a8cb29424f1e69839742c2f17dbdf6a281d2f5fd28fd7182c77a9bed44000001280000009062a63d4cf8d7e88a831a4b2349f029df81f36572692d59e4a00a832fc78ac0c7d51aba71d7c5214c15806414e7c67b80fd6b87f0f5b7fdf255ec1794892d916eace9d91a8c6e4b0a90f009757b7261e8117d0f9c42a7e9b8b32ec9a46ec5fdd90e1ecd316dcda61c20e3c6eb9a8c850b15b0cdb0f70fef21bbef0ca1e514a28b1cb31871c75544235aecbf71a21c545900000090071d96e7f10252ddfef08711ab174fb56815d2886d3cb0ff770d8f271ecb28b52c7538cbe64f64a2062338df714fefb0dda0d2c3bd84bc961f7c78ca64e0dc0fc14aa1461a3cbf46c7a37970035fe98228c639c8b16c7b7a8fa6da42025581728142ca87773a67db46c28d7010a37be02948daaa6e9337189af4e0a7e16bb81c2476fa89bf00293017e757bfc1cb61310000012800000090305a5f090659bc284517b422b4073f2e32dc2ef731975ba67b96b4fcc6c952a52ec5cae273e7baf8885dd09d34cbc26a1ee3ea3498e3b5afe3f6e1aaa16bb544361a14f28cfae1a432e6b9ead74e18c12ef26791a8be4f0f7fd1959c0adaf46aa248fcf9c8cc776a54e188a4359fcb5d20faa413d68296ef1cb4ef274d42fd14aa5a92f37da51a0a6ed70ee12ab729df00000090f2395c0f619282673828c1636b1ea89a24302c610aa201824597322290193f759bdd5fba022e8545ca4e2edf05a40e97a5f41c18c06922a6a51dad573c0b7ee8c86cb0d290cbf2911e85a6813d7e11a20113f2dbceda944ff9308864ddbaa44d3f4c973e8ffb2feb80ff262a90773de82d90b97f239e92bbe51daa611577e7106038b7ceee0653fdfb71fe139effa92f0000012800000090f7312fc5ca7141f83996c597a01d9a0804913e7ef437b745189b553fe644b8ca9feeda938cb44eba925da1e7013fe33dee342cbe9e0b2788b7ae84ceaf235b71f94d9739b3227aea90a9d5405c0842d20c176184b55a38c7b0b8796ba90b07d1c6025fde1202f338cb3823898f23bdbb068c8dd7bb497a495e16ca21540e5f666d72f81f84943458256f1752121363cb00000090cd285bcaae2aaeac2d03b8c6956c3d34a00713d06965c991537134b6e893b5a3883390755fc103d92d3aa86c12f5b4442996d90dea03f021b806587046527c81b2e9f29e9187981dbacf20c462f6d9fb24ea5ae8a3060d7086221c3ab203624d5ffd1f0c5471d39d8abb1cf97db3faf30903520eadaabc77bd632031901e332f9f59eeb827ca7c2ac4cb3fff1cffea7400000128000000902fa51fbf4061a5c510008fc8f50dd7bea7e307c536d6ac7a1be04f63e350854dc001038d15c85f02046cb4ba99cddc1d0854f732c3bbd6c1a2ce3b9539b09ed75cc6799b3e3f7ea1906cb3e19b680978172d5e3a17d534611558b0974f27eeb80f11777d5c318b41e6844a205d90fd101e89e3a3ae05e2e9d335f38993d1ce40886900f317fefd077ba81368619d3f720000009082b1c27b7a64487bbf9d21871c878d04d6ea2d2a2a02373731e778750c81b8c89cd49b77f4af23ceae879f455029fcd1cf1dd56e1bee390dd3ec7c4e442c8a3607aebd50588621cae5b2e8e39b595f0c08a2a2f9fd73e7ce1bcdb28aaaa2a69bb3e85c20b58c861c3e158d4e106c785b0d65a543d817766a0496b91a90177b11a021181890c57d1bbbdc24f889cf1b62000001280000009001486e187b12186066c262477a0c9b4d03da45d3fd17af3487d985c03e46b03827b85622a2d8d00a1d8d2d07a84334cbf46c2ad6237afc95777824fa36a6049a568928d6a44f95f56ce61ea7457676b808c5acb1048ffa52e82ab9c059105deb84d041e13b132aa83142025293d9ee5607d19c7ca42e4ad037fffc86912010ca66386ef730cca4fabf41f7c6f5d13d3c00000090b7b2e46bd11fa912cbb171373688e4dbbbbe2b1b1ad04b37ceed2d53383919ecb1ec5690b91e1b30580453e59ba400bcdb76196d7c9d4927b00729e83ece424027a00e3276a93a61e84f520cc2f9b22209ad7cdd9fc875574302af75edc79983ec50596913c818961ad536298a310bc9183c3356971710818f06d0f260bd55d281087c8443058caaff394fd5a16a591000000128000000907a02b1a361c9e424797122d88f4883f61f09782cf351770c7d5577ad63d8291cca761a30d0a12cd1907a3c5f49470ee3839fc53d553db7bcf7978f5618007f4ea5c8ef5e230de4dd58a41c44a37fd9d129390c2ce362eb410da7ced607affbc53b841f31b58b6c0390d0dfa2b40e523817e47d9632e8e99d4a790f4f1476b47f63d6b90af6afe874347831f17e09820b00000090dfb3da723599fc52984084adc867d5b131624fb3a245e28097259b2ab9b5b60150fa80d7ff242fd0fdfda863778237e27d806cf7cae596e4f7c740689a7841b29c9a42d91eeeb3f3855d3da4d0d6694a1dcd9883ba8e205afe4e4712ef9113b129f648b6d3565fddee1d9202ef11d943145d3d6be489fd048d4626d2bc2ebc67ffdaf751ddb2cfa80f208aebf82aa3ad0000012800000090031c03dea41e91646208787581d5f4e1fb17302c08af4cd0668bc69dcfca307c928f6882dfaefa3f63793669c2168840617186da887e243c32a81d832a7070909d36021d76e58e001b74741e8cf37caa2662b915209192553f3a8171d57594d6bd4fcc3f41a8b27c16b7235ab08e317d1e953df7144645d59c657ccbe4b62ee8d64b3296548d7bbf1563093e87d7af1e00000090607f885db8abe4abde918c437fc0081506c5e8c1f25572fe375e43360c6c1013c597cb2b8a240d62864c00c17ef60005efb0fa59a155efb45fd62f17f862b53635ebe15728533820c500fd561abddf461d242081b026fb75401170bd90373cde8c5ba92a46caa46921dc6e6b71a91b2d2a94d77336cf9aeef2625fe24fd6e30a38a4ab63d1487c217fede88a5da38c17000001280000009086150a0013518186b565e0a6194b5ed3735e8fe2dbffffe3d4f7ed2281729dfa1a3334ecee8ddcebc91b11297ca7faa95d33f42e04e0e504e8f5fab8cd765a62ebd6e207658293914365809ec1497fd2298ad1cfc963aa5be4f2d86833961589ed49aea8df5f799a050918839cb1f4122978dce47fb40af8652e272155161c817cbb6278132d83265032d0f827c175ac00000090ee0452ea31f58cfbfe6862d55fb398794f3a199f3246b25dc4c8e4c61bfdab38f24e55749090130ada3eb60a284a88e294fa3b2e53890cc04849fb7588e10e3c3e4004c852db076c35de46c80a77260e1485f3e68ae14a08291158119ce92e1daeeadf640d5200b1b1db5c0ac2eb06632a83c101c86519295e058572e190e60275aa6a48d510ecdffae2095c6762300b00000ce400000128000000902c803df8807403369c656432cbdce60e1d926579bbba600313a8d722004e1ce464c3497551481be9f557671cffef62cf33348341244dcc7a00192f577d9f6fce776bd7b1529c625dcbdb80c61f2052e607086554e7057fb4303431adaaaf418167ff9fdd6d368d483713bae6a36f271e2bd77291619445eadf6363ef91ab37c95471f15b645264038c8b96b2dcfc8a3d00000090f59f02cfbb765e4a792754cc77ade007c2092e7130b95df0372803afbaf98ed2c5358375a5ee56e7f7e8bbc1dc7cb9243e8266c5361549fd869e956bd4618ed69c66bba2f1ce02f1ff77be776a59581d242876eafda24466264bdc6ac348b1ebe8d441181bde9aa6a534ffd7b446ec6c2bc6cfe5da9ff2c0e01153ad2f16611e830fb986e0aeb74c6c63d47c0c11410800000128000000905567fd5df02f911fca4e64532ef338fbc78f51e0711d133520c87a53dc004d5123b21333da8b8a92f0c02b4cefd1a3b74eedb56197983bfc0782c22d0595ae7bf6fbf909f6d240f412adab0e7330e5f1037eefb93404ec11e5ab0786b4c26da0150d51823dd51a5e9357febdad38f762240b1c7df5f5243248a7697e42b37fd714431b773d88fe2e7053976d4c773d1a00000090acbe7b8b2ff927a57e136525fdcdddd5fc9fec566fdf556f36fb87a2357035fb2e9f1c42a1ac92435a8cc14f17b73a87b1a0a3a6cabd1cb1fb4fc5190a6fe82113a0185071cd5f4c2e744e90ce435ae30ccdd0febe82f66fb54c36568b047519a96a18ebc54166ce442cfea254468de70c9513735ae8838bbc9cf0fe268d9f531bcafcb435e050a753a870466a16345900000128000000909dc9ccaaa169fe8f19996407f90983d83d1c6f297cb95066d7f8ec4313f5511cbc17ecbb4f0174606f923241ffdccb87467cdb5ea0c109e0425538e919ffcfc59591b30b2243bd8d04678a7bf7e5865a01b2ddcc608a28726322ecdfe1a3acf5c78844eb23207c21cc5694371725bcba053ec047b8790e19db88aafad5fa2849dfee7518644406873caa13ff0d0a855900000090348d0b1171214af22f5a822da37c072a2746c5884260dfcbc603c9ed223be74bede40529a01381808b1722f6d5b92f31a3dd0a8a89b2f25c32cac9a0e67e26c3f1566d52b1bbb081363eb3fc5bcd96872ab570861949126649e9d01ca995f837f673925eed0e23f70fcf0d1701b3875f143b10a44e6762968dcd217361d1466acb824d61175b08ca34d9a9374011d7d80000012800000090f48952a0956883a34c401a10c9f97ec53efae1c9ec4c7b5230c864ae0ca7c0fc218729bdbaf89b347614e766d51aa170680688118afe46c5cb2a817b4f1cdcb412e598765d460463398d286e893ba96527fa6cc20569bc654a8cf1e76df5e41520450f3e9646674910a7cc5f2f6ad6cb07b03a6ed5e7670e4494fb13f7d5a75e72cd728d0363d7aa08b7761abef4b3da00000090db2897a0437ec2ba9f366e88ece23670290ff06e269eaafc1eecb43b41aa7f53a96fa2933f28022938dc4d4d7e397844e4a9bcd7f79968ab01e05277e7f8d820aed271e6198e5ee96f6a70bb0c1cbdb929a9c306aeab9c7afbfe3b2c9558798659aef641daefc0a1801b4aa613faba162dc55de1173652dea99a971823c29032661767bd75f24dc53aaf995f98cdc6890000012800000090c7a4aca8720eb3649eac8eb7419ecae0725206544f9f14c135f867014c33595ab494a94226c3fba20a3b6dd078cec20d7032c0478533261815d5c6f34c7490910af1acbf60dfa203a974b3526e0d6f170853c20b3dd2891391e32c4e5e6dae96aae97bf3a0c483a33d2bfed18b518dd60a43da0389df5659213258d86506493a11c476c6173346943409877f3f1eb8280000009044cd6d5591321c78d3ad1ae1bf3920701d1cc0c6a73b5b5d9034c05466de6a3b7c9dcfa0bbca612a895d7a418e1b1513413160f9e6a343415f57b3e9cc3865c966586d3b70c285048326cfd317ee6b9f250307f80b904bbcaae1cf998bab4d7e0c3c9d6067e16993e186577841c0bcc42a7732ed26e008b9e9a8ec5db481cb59cf3533dfc6200ef3ebf40a40c4dff644000001280000009005acab802e3f5f7d14a97db5dc83caa849d21005335eb64ee3f7d7890913e47c41935942c6492765d1683f3e58618210b938eadbca1972fb3ca6f933e13eb53cc28a8cd4bb551016e8e6da5f43bbe527212154a463316eeafe582bae589ec21dc4a3f04ce8be15fa7574cc8f85297a7519d803802bb93115202731de6c949bfdc7b897c2c20e55699a45b639e74197f700000090db8755368a5883f4c8fe4f1bab8967d086a2c03cddbe926a6b89d2193ef0e497f2082b9a924618d54e483ea64081ae51a51c10602447801112189d25e238ca3f40e2c1b0fd34aca316716b7bd3294e4413457e9893aa9397a1d8ef44dd4fce4e51426d55377084185406aa294c6c05e82202efcb16b1d3d895622c79efaf7de68f35c641bc19758cf04bff359e492efd000001280000009087ac7014e5e07bff87399657ee1763c71b8999148890bec2db8c429b1f90bbd42d17eb24235c38a58e5fc5731d4817ac467a3cc83c85940cabee34021c15207429514ff47a00c8b2064f38ed9513daa827655841b9ec89ae70fd3322615750c4e254c912b65a0e47da5e9d887dd6066c14c97dd4139a5e24272d10c6c8af9e008326ffc35057b8e61b56b89dd7026c48000000908f003eda2f032f79d6daa0afae9e777d8395e8b99a14c184826924c613f2c2cfd771420c41e34335484310ae29eb2f42354ce93093db217cd73f1ad1d7c82751c9840f009bf99fae72f6499e5aabe4e7303b2e67e46729ccb482876659117e12fbea701f7f693c686690f16037629e3f2e4afd1cd9ba7c7792e0f75312d43121d679cb3700ba52bb99bf7163175f39340000012800000090fcb668f4eee987dcf91f02506c4e276cbda61f718d249c1b146908ae48773bf119357acb0d33d981d04fa30e254b74786b8af9d6231aed0d2ab609a427aa1cd7269d05a908be3edff62849db15916753094633d30c8e1e1824d63a471510520a61500be387faced8d8f2397897a79b9100b2c3749f0cdb1b89a4635ac91966fef5328f7a51d75f6a64c5cf262929d0ea00000090e1fd1913250e3383ece01108e3676dbf45b6af7cd54328a1a6a9e032b3acd5c84c7330714433f147691a15dde1097a246a54c59aac1547f291930e5fd3994c71eea3b96288c1c2444609b675711a615608fedc92c08b028e141a647c4c6240e10e01a1b517bc9b1fbfffedeaaa84939d108fb5b48bcce4a6403fb3a6297a864177d35ec2f56b2f41c1a5c18fa77c78000000012800000090246b9ef39b4c1f688e2a9bd94cd7886aba49dd6c2d7a994a55b3b210fa54d50b1d94c7314b1dd66727a04194461377f021887f0bf08d7132952ac4fefb34a22382487b2819ff3f689c191ec33cd639fc0354c3c1f82acb0665b97f78cf4d7ea6edbc09645d6fc091fbdda38ab51d614206ed1eb6712031a70239dba48af173cc72ce5c8dbd4b2f2ead260eaf139fc76c00000090c47bca9d4280b30fdd30ff309d250754b715513d9b7d45b38690e683cb07c2aaaeb63b0f0400b0116a77e295240d94e39c7682a0f1ec9e1396aafcb5ba80053a5ffb4cdc262aee196781d2c3c92e5ec31abe900aae102106925359f393e17163def75522a8363506ff77b008dfb3598f15cd1ad0f1cd2c9940d6e35a85fa4aff06b2fca127af77cf85b7ecf2134c127200000128000000901efcd448119223b36296649ae27271c8ce44425c2257bb3b4d322767bbcc93df4e3405b9d57b89cf3a321725617ccd1718e3c2b485bb72e40a5b661e7c6674522447171d2d600265fd1068307f5eddbc031b050c27fc1f6035e51fc86890af02b773a7bf6a2b79151cdefe58e55c368405fbc782501d3ec15e509d762b578fee3711ec85afcbe3ca31714291ff4e84210000009020105be65d60c582c38af508ff84d115ba0be30df8b55ba5b2644bbb15c4dc9dfb46399a7bedc1e12e57530f8d2fdba47e9f59062a9384c5eb496795964f33e222a91ee413495921cd45f18ec0bef4a013d91373d3e7c6b40cb9eab782d295c6bfc1fefe73de88e8ae380363827204bb2fd4f44899b714ae567340e9d2b75ce56290389379b01521fc01b1ca40fd7eb40000012800000090221861a7da93d0ea2098a2dfd72369f097f2390e73e14b94284bddb6aa412027cd015bd818e966516ad0808b28e95ba99b04271cd979480ba3a70513df67c7d10adbbebf39059d48bd90d70fad88a11b15a453727995b3da07902ea4ec062384240e406e45222bc6fd8b85c2a97bf1d2282e381e70d50ed6a430be46b27ae56fde68dfc666c7301c37cb7109283cdee60000009020e262f5717b624c3dc1b984830aeb3377f9952d1efcd31851ea323cd10d6502da352474fbb82c370582a685612f768d4591761d67d3923c697222229eb6e39aa40e9103d896d9085969a6e250ac170826e9d5dd40287b9c06c538743a402ed9c7d4c84429afa70fc4a308caa453ce4919a295d209efe58669e9f8b23280e245ee5c5295c434be404440831f44d4bd63", - "calldataHash": "0x484df1f693f6fe8712cc9129413652b277db358ece78850f1073d963c1258286", + "archive": "0x0dd1272ee1ed846392f68a239f16091869ed0a82d4bc8c4d73cfe55bd61049a0", + "body": "0x000001000000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000024100000000000000000000000000000000000000000000000000000000000002420000000000000000000000000000000000000000000000000000000000000243000000000000000000000000000000000000000000000000000000000000024400000000000000000000000000000000000000000000000000000000000002450000000000000000000000000000000000000000000000000000000000000246000000000000000000000000000000000000000000000000000000000000024700000000000000000000000000000000000000000000000000000000000002480000000000000000000000000000000000000000000000000000000000000249000000000000000000000000000000000000000000000000000000000000024a000000000000000000000000000000000000000000000000000000000000024b000000000000000000000000000000000000000000000000000000000000024c000000000000000000000000000000000000000000000000000000000000024d000000000000000000000000000000000000000000000000000000000000024e000000000000000000000000000000000000000000000000000000000000024f0000000000000000000000000000000000000000000000000000000000000250000000000000000000000000000000000000000000000000000000000000025100000000000000000000000000000000000000000000000000000000000002520000000000000000000000000000000000000000000000000000000000000253000000000000000000000000000000000000000000000000000000000000025400000000000000000000000000000000000000000000000000000000000002550000000000000000000000000000000000000000000000000000000000000256000000000000000000000000000000000000000000000000000000000000025700000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000000259000000000000000000000000000000000000000000000000000000000000025a000000000000000000000000000000000000000000000000000000000000025b000000000000000000000000000000000000000000000000000000000000025c000000000000000000000000000000000000000000000000000000000000025d000000000000000000000000000000000000000000000000000000000000025e000000000000000000000000000000000000000000000000000000000000025f0000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000026100000000000000000000000000000000000000000000000000000000000002620000000000000000000000000000000000000000000000000000000000000263000000000000000000000000000000000000000000000000000000000000026400000000000000000000000000000000000000000000000000000000000002650000000000000000000000000000000000000000000000000000000000000266000000000000000000000000000000000000000000000000000000000000026700000000000000000000000000000000000000000000000000000000000002680000000000000000000000000000000000000000000000000000000000000269000000000000000000000000000000000000000000000000000000000000026a000000000000000000000000000000000000000000000000000000000000026b000000000000000000000000000000000000000000000000000000000000026c000000000000000000000000000000000000000000000000000000000000026d000000000000000000000000000000000000000000000000000000000000026e000000000000000000000000000000000000000000000000000000000000026f0000000000000000000000000000000000000000000000000000000000000270000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000002720000000000000000000000000000000000000000000000000000000000000273000000000000000000000000000000000000000000000000000000000000027400000000000000000000000000000000000000000000000000000000000002750000000000000000000000000000000000000000000000000000000000000276000000000000000000000000000000000000000000000000000000000000027700000000000000000000000000000000000000000000000000000000000002780000000000000000000000000000000000000000000000000000000000000279000000000000000000000000000000000000000000000000000000000000027a000000000000000000000000000000000000000000000000000000000000027b000000000000000000000000000000000000000000000000000000000000027c000000000000000000000000000000000000000000000000000000000000027d000000000000000000000000000000000000000000000000000000000000027e000000000000000000000000000000000000000000000000000000000000027f0000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000028100000000000000000000000000000000000000000000000000000000000002820000000000000000000000000000000000000000000000000000000000000283000000000000000000000000000000000000000000000000000000000000028400000000000000000000000000000000000000000000000000000000000002850000000000000000000000000000000000000000000000000000000000000286000000000000000000000000000000000000000000000000000000000000028700000000000000000000000000000000000000000000000000000000000002880000000000000000000000000000000000000000000000000000000000000289000000000000000000000000000000000000000000000000000000000000028a000000000000000000000000000000000000000000000000000000000000028b000000000000000000000000000000000000000000000000000000000000028c000000000000000000000000000000000000000000000000000000000000028d000000000000000000000000000000000000000000000000000000000000028e000000000000000000000000000000000000000000000000000000000000028f0000000000000000000000000000000000000000000000000000000000000290000000000000000000000000000000000000000000000000000000000000029100000000000000000000000000000000000000000000000000000000000002920000000000000000000000000000000000000000000000000000000000000293000000000000000000000000000000000000000000000000000000000000029400000000000000000000000000000000000000000000000000000000000002950000000000000000000000000000000000000000000000000000000000000296000000000000000000000000000000000000000000000000000000000000029700000000000000000000000000000000000000000000000000000000000002980000000000000000000000000000000000000000000000000000000000000299000000000000000000000000000000000000000000000000000000000000029a000000000000000000000000000000000000000000000000000000000000029b000000000000000000000000000000000000000000000000000000000000029c000000000000000000000000000000000000000000000000000000000000029d000000000000000000000000000000000000000000000000000000000000029e000000000000000000000000000000000000000000000000000000000000029f00000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002a100000000000000000000000000000000000000000000000000000000000002a200000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000002a400000000000000000000000000000000000000000000000000000000000002a500000000000000000000000000000000000000000000000000000000000002a600000000000000000000000000000000000000000000000000000000000002a700000000000000000000000000000000000000000000000000000000000002a800000000000000000000000000000000000000000000000000000000000002a900000000000000000000000000000000000000000000000000000000000002aa00000000000000000000000000000000000000000000000000000000000002ab00000000000000000000000000000000000000000000000000000000000002ac00000000000000000000000000000000000000000000000000000000000002ad00000000000000000000000000000000000000000000000000000000000002ae00000000000000000000000000000000000000000000000000000000000002af00000000000000000000000000000000000000000000000000000000000002b000000000000000000000000000000000000000000000000000000000000002b100000000000000000000000000000000000000000000000000000000000002b200000000000000000000000000000000000000000000000000000000000002b300000000000000000000000000000000000000000000000000000000000002b400000000000000000000000000000000000000000000000000000000000002b500000000000000000000000000000000000000000000000000000000000002b600000000000000000000000000000000000000000000000000000000000002b700000000000000000000000000000000000000000000000000000000000002b800000000000000000000000000000000000000000000000000000000000002b900000000000000000000000000000000000000000000000000000000000002ba00000000000000000000000000000000000000000000000000000000000002bb00000000000000000000000000000000000000000000000000000000000002bc00000000000000000000000000000000000000000000000000000000000002bd00000000000000000000000000000000000000000000000000000000000002be00000000000000000000000000000000000000000000000000000000000002bf00000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002c100000000000000000000000000000000000000000000000000000000000002c200000000000000000000000000000000000000000000000000000000000002c300000000000000000000000000000000000000000000000000000000000002c400000000000000000000000000000000000000000000000000000000000002c500000000000000000000000000000000000000000000000000000000000002c600000000000000000000000000000000000000000000000000000000000002c700000000000000000000000000000000000000000000000000000000000002c800000000000000000000000000000000000000000000000000000000000002c900000000000000000000000000000000000000000000000000000000000002ca00000000000000000000000000000000000000000000000000000000000002cb00000000000000000000000000000000000000000000000000000000000002cc00000000000000000000000000000000000000000000000000000000000002cd00000000000000000000000000000000000000000000000000000000000002ce00000000000000000000000000000000000000000000000000000000000002cf00000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000002d100000000000000000000000000000000000000000000000000000000000002d200000000000000000000000000000000000000000000000000000000000002d300000000000000000000000000000000000000000000000000000000000002d400000000000000000000000000000000000000000000000000000000000002d500000000000000000000000000000000000000000000000000000000000002d600000000000000000000000000000000000000000000000000000000000002d700000000000000000000000000000000000000000000000000000000000002d800000000000000000000000000000000000000000000000000000000000002d900000000000000000000000000000000000000000000000000000000000002da00000000000000000000000000000000000000000000000000000000000002db00000000000000000000000000000000000000000000000000000000000002dc00000000000000000000000000000000000000000000000000000000000002dd00000000000000000000000000000000000000000000000000000000000002de00000000000000000000000000000000000000000000000000000000000002df00000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000002e100000000000000000000000000000000000000000000000000000000000002e200000000000000000000000000000000000000000000000000000000000002e300000000000000000000000000000000000000000000000000000000000002e400000000000000000000000000000000000000000000000000000000000002e500000000000000000000000000000000000000000000000000000000000002e600000000000000000000000000000000000000000000000000000000000002e700000000000000000000000000000000000000000000000000000000000002e800000000000000000000000000000000000000000000000000000000000002e900000000000000000000000000000000000000000000000000000000000002ea00000000000000000000000000000000000000000000000000000000000002eb00000000000000000000000000000000000000000000000000000000000002ec00000000000000000000000000000000000000000000000000000000000002ed00000000000000000000000000000000000000000000000000000000000002ee00000000000000000000000000000000000000000000000000000000000002ef00000000000000000000000000000000000000000000000000000000000002f000000000000000000000000000000000000000000000000000000000000002f100000000000000000000000000000000000000000000000000000000000002f200000000000000000000000000000000000000000000000000000000000002f300000000000000000000000000000000000000000000000000000000000002f400000000000000000000000000000000000000000000000000000000000002f500000000000000000000000000000000000000000000000000000000000002f600000000000000000000000000000000000000000000000000000000000002f700000000000000000000000000000000000000000000000000000000000002f800000000000000000000000000000000000000000000000000000000000002f900000000000000000000000000000000000000000000000000000000000002fa00000000000000000000000000000000000000000000000000000000000002fb00000000000000000000000000000000000000000000000000000000000002fc00000000000000000000000000000000000000000000000000000000000002fd00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000002ff0000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030100000000000000000000000000000000000000000000000000000000000003020000000000000000000000000000000000000000000000000000000000000303000000000000000000000000000000000000000000000000000000000000030400000000000000000000000000000000000000000000000000000000000003050000000000000000000000000000000000000000000000000000000000000306000000000000000000000000000000000000000000000000000000000000030700000000000000000000000000000000000000000000000000000000000003080000000000000000000000000000000000000000000000000000000000000309000000000000000000000000000000000000000000000000000000000000030a000000000000000000000000000000000000000000000000000000000000030b000000000000000000000000000000000000000000000000000000000000030c000000000000000000000000000000000000000000000000000000000000030d000000000000000000000000000000000000000000000000000000000000030e000000000000000000000000000000000000000000000000000000000000030f0000000000000000000000000000000000000000000000000000000000000310000000000000000000000000000000000000000000000000000000000000031100000000000000000000000000000000000000000000000000000000000003120000000000000000000000000000000000000000000000000000000000000313000000000000000000000000000000000000000000000000000000000000031400000000000000000000000000000000000000000000000000000000000003150000000000000000000000000000000000000000000000000000000000000316000000000000000000000000000000000000000000000000000000000000031700000000000000000000000000000000000000000000000000000000000003180000000000000000000000000000000000000000000000000000000000000319000000000000000000000000000000000000000000000000000000000000031a000000000000000000000000000000000000000000000000000000000000031b000000000000000000000000000000000000000000000000000000000000031c000000000000000000000000000000000000000000000000000000000000031d000000000000000000000000000000000000000000000000000000000000031e000000000000000000000000000000000000000000000000000000000000031f0000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000032100000000000000000000000000000000000000000000000000000000000003220000000000000000000000000000000000000000000000000000000000000323000000000000000000000000000000000000000000000000000000000000032400000000000000000000000000000000000000000000000000000000000003250000000000000000000000000000000000000000000000000000000000000326000000000000000000000000000000000000000000000000000000000000032700000000000000000000000000000000000000000000000000000000000003280000000000000000000000000000000000000000000000000000000000000329000000000000000000000000000000000000000000000000000000000000032a000000000000000000000000000000000000000000000000000000000000032b000000000000000000000000000000000000000000000000000000000000032c000000000000000000000000000000000000000000000000000000000000032d000000000000000000000000000000000000000000000000000000000000032e000000000000000000000000000000000000000000000000000000000000032f0000000000000000000000000000000000000000000000000000000000000330000000000000000000000000000000000000000000000000000000000000033100000000000000000000000000000000000000000000000000000000000003320000000000000000000000000000000000000000000000000000000000000333000000000000000000000000000000000000000000000000000000000000033400000000000000000000000000000000000000000000000000000000000003350000000000000000000000000000000000000000000000000000000000000336000000000000000000000000000000000000000000000000000000000000033700000000000000000000000000000000000000000000000000000000000003380000000000000000000000000000000000000000000000000000000000000339000000000000000000000000000000000000000000000000000000000000033a000000000000000000000000000000000000000000000000000000000000033b000000000000000000000000000000000000000000000000000000000000033c000000000000000000000000000000000000000000000000000000000000033d000000000000000000000000000000000000000000000000000000000000033e000000000000000000000000000000000000000000000000000000000000033f000001000000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000003420000000000000000000000000000000000000000000000000000000000000343000000000000000000000000000000000000000000000000000000000000034400000000000000000000000000000000000000000000000000000000000003450000000000000000000000000000000000000000000000000000000000000346000000000000000000000000000000000000000000000000000000000000034700000000000000000000000000000000000000000000000000000000000003480000000000000000000000000000000000000000000000000000000000000349000000000000000000000000000000000000000000000000000000000000034a000000000000000000000000000000000000000000000000000000000000034b000000000000000000000000000000000000000000000000000000000000034c000000000000000000000000000000000000000000000000000000000000034d000000000000000000000000000000000000000000000000000000000000034e000000000000000000000000000000000000000000000000000000000000034f0000000000000000000000000000000000000000000000000000000000000350000000000000000000000000000000000000000000000000000000000000035100000000000000000000000000000000000000000000000000000000000003520000000000000000000000000000000000000000000000000000000000000353000000000000000000000000000000000000000000000000000000000000035400000000000000000000000000000000000000000000000000000000000003550000000000000000000000000000000000000000000000000000000000000356000000000000000000000000000000000000000000000000000000000000035700000000000000000000000000000000000000000000000000000000000003580000000000000000000000000000000000000000000000000000000000000359000000000000000000000000000000000000000000000000000000000000035a000000000000000000000000000000000000000000000000000000000000035b000000000000000000000000000000000000000000000000000000000000035c000000000000000000000000000000000000000000000000000000000000035d000000000000000000000000000000000000000000000000000000000000035e000000000000000000000000000000000000000000000000000000000000035f0000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000036100000000000000000000000000000000000000000000000000000000000003620000000000000000000000000000000000000000000000000000000000000363000000000000000000000000000000000000000000000000000000000000036400000000000000000000000000000000000000000000000000000000000003650000000000000000000000000000000000000000000000000000000000000366000000000000000000000000000000000000000000000000000000000000036700000000000000000000000000000000000000000000000000000000000003680000000000000000000000000000000000000000000000000000000000000369000000000000000000000000000000000000000000000000000000000000036a000000000000000000000000000000000000000000000000000000000000036b000000000000000000000000000000000000000000000000000000000000036c000000000000000000000000000000000000000000000000000000000000036d000000000000000000000000000000000000000000000000000000000000036e000000000000000000000000000000000000000000000000000000000000036f0000000000000000000000000000000000000000000000000000000000000370000000000000000000000000000000000000000000000000000000000000037100000000000000000000000000000000000000000000000000000000000003720000000000000000000000000000000000000000000000000000000000000373000000000000000000000000000000000000000000000000000000000000037400000000000000000000000000000000000000000000000000000000000003750000000000000000000000000000000000000000000000000000000000000376000000000000000000000000000000000000000000000000000000000000037700000000000000000000000000000000000000000000000000000000000003780000000000000000000000000000000000000000000000000000000000000379000000000000000000000000000000000000000000000000000000000000037a000000000000000000000000000000000000000000000000000000000000037b000000000000000000000000000000000000000000000000000000000000037c000000000000000000000000000000000000000000000000000000000000037d000000000000000000000000000000000000000000000000000000000000037e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000038100000000000000000000000000000000000000000000000000000000000003820000000000000000000000000000000000000000000000000000000000000383000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000003850000000000000000000000000000000000000000000000000000000000000386000000000000000000000000000000000000000000000000000000000000038700000000000000000000000000000000000000000000000000000000000003880000000000000000000000000000000000000000000000000000000000000389000000000000000000000000000000000000000000000000000000000000038a000000000000000000000000000000000000000000000000000000000000038b000000000000000000000000000000000000000000000000000000000000038c000000000000000000000000000000000000000000000000000000000000038d000000000000000000000000000000000000000000000000000000000000038e000000000000000000000000000000000000000000000000000000000000038f0000000000000000000000000000000000000000000000000000000000000390000000000000000000000000000000000000000000000000000000000000039100000000000000000000000000000000000000000000000000000000000003920000000000000000000000000000000000000000000000000000000000000393000000000000000000000000000000000000000000000000000000000000039400000000000000000000000000000000000000000000000000000000000003950000000000000000000000000000000000000000000000000000000000000396000000000000000000000000000000000000000000000000000000000000039700000000000000000000000000000000000000000000000000000000000003980000000000000000000000000000000000000000000000000000000000000399000000000000000000000000000000000000000000000000000000000000039a000000000000000000000000000000000000000000000000000000000000039b000000000000000000000000000000000000000000000000000000000000039c000000000000000000000000000000000000000000000000000000000000039d000000000000000000000000000000000000000000000000000000000000039e000000000000000000000000000000000000000000000000000000000000039f00000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000003a100000000000000000000000000000000000000000000000000000000000003a200000000000000000000000000000000000000000000000000000000000003a300000000000000000000000000000000000000000000000000000000000003a400000000000000000000000000000000000000000000000000000000000003a500000000000000000000000000000000000000000000000000000000000003a600000000000000000000000000000000000000000000000000000000000003a700000000000000000000000000000000000000000000000000000000000003a800000000000000000000000000000000000000000000000000000000000003a900000000000000000000000000000000000000000000000000000000000003aa00000000000000000000000000000000000000000000000000000000000003ab00000000000000000000000000000000000000000000000000000000000003ac00000000000000000000000000000000000000000000000000000000000003ad00000000000000000000000000000000000000000000000000000000000003ae00000000000000000000000000000000000000000000000000000000000003af00000000000000000000000000000000000000000000000000000000000003b000000000000000000000000000000000000000000000000000000000000003b100000000000000000000000000000000000000000000000000000000000003b200000000000000000000000000000000000000000000000000000000000003b300000000000000000000000000000000000000000000000000000000000003b400000000000000000000000000000000000000000000000000000000000003b500000000000000000000000000000000000000000000000000000000000003b600000000000000000000000000000000000000000000000000000000000003b700000000000000000000000000000000000000000000000000000000000003b800000000000000000000000000000000000000000000000000000000000003b900000000000000000000000000000000000000000000000000000000000003ba00000000000000000000000000000000000000000000000000000000000003bb00000000000000000000000000000000000000000000000000000000000003bc00000000000000000000000000000000000000000000000000000000000003bd00000000000000000000000000000000000000000000000000000000000003be000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003c100000000000000000000000000000000000000000000000000000000000003c200000000000000000000000000000000000000000000000000000000000003c300000000000000000000000000000000000000000000000000000000000003c400000000000000000000000000000000000000000000000000000000000003c500000000000000000000000000000000000000000000000000000000000003c600000000000000000000000000000000000000000000000000000000000003c700000000000000000000000000000000000000000000000000000000000003c800000000000000000000000000000000000000000000000000000000000003c900000000000000000000000000000000000000000000000000000000000003ca00000000000000000000000000000000000000000000000000000000000003cb00000000000000000000000000000000000000000000000000000000000003cc00000000000000000000000000000000000000000000000000000000000003cd00000000000000000000000000000000000000000000000000000000000003ce00000000000000000000000000000000000000000000000000000000000003cf00000000000000000000000000000000000000000000000000000000000003d000000000000000000000000000000000000000000000000000000000000003d100000000000000000000000000000000000000000000000000000000000003d200000000000000000000000000000000000000000000000000000000000003d300000000000000000000000000000000000000000000000000000000000003d400000000000000000000000000000000000000000000000000000000000003d500000000000000000000000000000000000000000000000000000000000003d600000000000000000000000000000000000000000000000000000000000003d700000000000000000000000000000000000000000000000000000000000003d800000000000000000000000000000000000000000000000000000000000003d900000000000000000000000000000000000000000000000000000000000003da00000000000000000000000000000000000000000000000000000000000003db00000000000000000000000000000000000000000000000000000000000003dc00000000000000000000000000000000000000000000000000000000000003dd00000000000000000000000000000000000000000000000000000000000003de00000000000000000000000000000000000000000000000000000000000003df00000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000003e100000000000000000000000000000000000000000000000000000000000003e200000000000000000000000000000000000000000000000000000000000003e300000000000000000000000000000000000000000000000000000000000003e400000000000000000000000000000000000000000000000000000000000003e500000000000000000000000000000000000000000000000000000000000003e600000000000000000000000000000000000000000000000000000000000003e700000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003e900000000000000000000000000000000000000000000000000000000000003ea00000000000000000000000000000000000000000000000000000000000003eb00000000000000000000000000000000000000000000000000000000000003ec00000000000000000000000000000000000000000000000000000000000003ed00000000000000000000000000000000000000000000000000000000000003ee00000000000000000000000000000000000000000000000000000000000003ef00000000000000000000000000000000000000000000000000000000000003f000000000000000000000000000000000000000000000000000000000000003f100000000000000000000000000000000000000000000000000000000000003f200000000000000000000000000000000000000000000000000000000000003f300000000000000000000000000000000000000000000000000000000000003f400000000000000000000000000000000000000000000000000000000000003f500000000000000000000000000000000000000000000000000000000000003f600000000000000000000000000000000000000000000000000000000000003f700000000000000000000000000000000000000000000000000000000000003f800000000000000000000000000000000000000000000000000000000000003f900000000000000000000000000000000000000000000000000000000000003fa00000000000000000000000000000000000000000000000000000000000003fb00000000000000000000000000000000000000000000000000000000000003fc00000000000000000000000000000000000000000000000000000000000003fd00000000000000000000000000000000000000000000000000000000000003fe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040100000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000403000000000000000000000000000000000000000000000000000000000000040400000000000000000000000000000000000000000000000000000000000004050000000000000000000000000000000000000000000000000000000000000406000000000000000000000000000000000000000000000000000000000000040700000000000000000000000000000000000000000000000000000000000004080000000000000000000000000000000000000000000000000000000000000409000000000000000000000000000000000000000000000000000000000000040a000000000000000000000000000000000000000000000000000000000000040b000000000000000000000000000000000000000000000000000000000000040c000000000000000000000000000000000000000000000000000000000000040d000000000000000000000000000000000000000000000000000000000000040e000000000000000000000000000000000000000000000000000000000000040f0000000000000000000000000000000000000000000000000000000000000410000000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004120000000000000000000000000000000000000000000000000000000000000413000000000000000000000000000000000000000000000000000000000000041400000000000000000000000000000000000000000000000000000000000004150000000000000000000000000000000000000000000000000000000000000416000000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004180000000000000000000000000000000000000000000000000000000000000419000000000000000000000000000000000000000000000000000000000000041a000000000000000000000000000000000000000000000000000000000000041b000000000000000000000000000000000000000000000000000000000000041c000000000000000000000000000000000000000000000000000000000000041d000000000000000000000000000000000000000000000000000000000000041e000000000000000000000000000000000000000000000000000000000000041f0000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000000042100000000000000000000000000000000000000000000000000000000000004220000000000000000000000000000000000000000000000000000000000000423000000000000000000000000000000000000000000000000000000000000042400000000000000000000000000000000000000000000000000000000000004250000000000000000000000000000000000000000000000000000000000000426000000000000000000000000000000000000000000000000000000000000042700000000000000000000000000000000000000000000000000000000000004280000000000000000000000000000000000000000000000000000000000000429000000000000000000000000000000000000000000000000000000000000042a000000000000000000000000000000000000000000000000000000000000042b000000000000000000000000000000000000000000000000000000000000042c000000000000000000000000000000000000000000000000000000000000042d000000000000000000000000000000000000000000000000000000000000042e000000000000000000000000000000000000000000000000000000000000042f0000000000000000000000000000000000000000000000000000000000000430000000000000000000000000000000000000000000000000000000000000043100000000000000000000000000000000000000000000000000000000000004320000000000000000000000000000000000000000000000000000000000000433000000000000000000000000000000000000000000000000000000000000043400000000000000000000000000000000000000000000000000000000000004350000000000000000000000000000000000000000000000000000000000000436000000000000000000000000000000000000000000000000000000000000043700000000000000000000000000000000000000000000000000000000000004380000000000000000000000000000000000000000000000000000000000000439000000000000000000000000000000000000000000000000000000000000043a000000000000000000000000000000000000000000000000000000000000043b000000000000000000000000000000000000000000000000000000000000043c000000000000000000000000000000000000000000000000000000000000043d000000000000000000000000000000000000000000000000000000000000043e0000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064a0000000000000000000000000000000000000000000000000000000000000641000000000000000000000000000000000000000000000000000000000000064b0000000000000000000000000000000000000000000000000000000000000642000000000000000000000000000000000000000000000000000000000000064c0000000000000000000000000000000000000000000000000000000000000643000000000000000000000000000000000000000000000000000000000000064d0000000000000000000000000000000000000000000000000000000000000644000000000000000000000000000000000000000000000000000000000000064e0000000000000000000000000000000000000000000000000000000000000645000000000000000000000000000000000000000000000000000000000000064f00000000000000000000000000000000000000000000000000000000000006460000000000000000000000000000000000000000000000000000000000000650000000000000000000000000000000000000000000000000000000000000064700000000000000000000000000000000000000000000000000000000000006510000000000000000000000000000000000000000000000000000000000000648000000000000000000000000000000000000000000000000000000000000065200000000000000000000000000000000000000000000000000000000000006490000000000000000000000000000000000000000000000000000000000000653000000000000000000000000000000000000000000000000000000000000064a0000000000000000000000000000000000000000000000000000000000000654000000000000000000000000000000000000000000000000000000000000064b0000000000000000000000000000000000000000000000000000000000000655000000000000000000000000000000000000000000000000000000000000064c0000000000000000000000000000000000000000000000000000000000000656000000000000000000000000000000000000000000000000000000000000064d0000000000000000000000000000000000000000000000000000000000000657000000000000000000000000000000000000000000000000000000000000064e0000000000000000000000000000000000000000000000000000000000000658000000000000000000000000000000000000000000000000000000000000064f00000000000000000000000000000000000000000000000000000000000006590000000000000000000000000000000000000000000000000000000000000680000000000000000000000000000000000000000000000000000000000000068a0000000000000000000000000000000000000000000000000000000000000681000000000000000000000000000000000000000000000000000000000000068b0000000000000000000000000000000000000000000000000000000000000682000000000000000000000000000000000000000000000000000000000000068c0000000000000000000000000000000000000000000000000000000000000683000000000000000000000000000000000000000000000000000000000000068d0000000000000000000000000000000000000000000000000000000000000684000000000000000000000000000000000000000000000000000000000000068e0000000000000000000000000000000000000000000000000000000000000685000000000000000000000000000000000000000000000000000000000000068f00000000000000000000000000000000000000000000000000000000000006860000000000000000000000000000000000000000000000000000000000000690000000000000000000000000000000000000000000000000000000000000068700000000000000000000000000000000000000000000000000000000000006910000000000000000000000000000000000000000000000000000000000000688000000000000000000000000000000000000000000000000000000000000069200000000000000000000000000000000000000000000000000000000000006890000000000000000000000000000000000000000000000000000000000000693000000000000000000000000000000000000000000000000000000000000068a0000000000000000000000000000000000000000000000000000000000000694000000000000000000000000000000000000000000000000000000000000068b0000000000000000000000000000000000000000000000000000000000000695000000000000000000000000000000000000000000000000000000000000068c0000000000000000000000000000000000000000000000000000000000000696000000000000000000000000000000000000000000000000000000000000068d0000000000000000000000000000000000000000000000000000000000000697000000000000000000000000000000000000000000000000000000000000068e0000000000000000000000000000000000000000000000000000000000000698000000000000000000000000000000000000000000000000000000000000068f000000000000000000000000000000000000000000000000000000000000069900000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000006ca00000000000000000000000000000000000000000000000000000000000006c100000000000000000000000000000000000000000000000000000000000006cb00000000000000000000000000000000000000000000000000000000000006c200000000000000000000000000000000000000000000000000000000000006cc00000000000000000000000000000000000000000000000000000000000006c300000000000000000000000000000000000000000000000000000000000006cd00000000000000000000000000000000000000000000000000000000000006c400000000000000000000000000000000000000000000000000000000000006ce00000000000000000000000000000000000000000000000000000000000006c500000000000000000000000000000000000000000000000000000000000006cf00000000000000000000000000000000000000000000000000000000000006c600000000000000000000000000000000000000000000000000000000000006d000000000000000000000000000000000000000000000000000000000000006c700000000000000000000000000000000000000000000000000000000000006d100000000000000000000000000000000000000000000000000000000000006c800000000000000000000000000000000000000000000000000000000000006d200000000000000000000000000000000000000000000000000000000000006c900000000000000000000000000000000000000000000000000000000000006d300000000000000000000000000000000000000000000000000000000000006ca00000000000000000000000000000000000000000000000000000000000006d400000000000000000000000000000000000000000000000000000000000006cb00000000000000000000000000000000000000000000000000000000000006d500000000000000000000000000000000000000000000000000000000000006cc00000000000000000000000000000000000000000000000000000000000006d600000000000000000000000000000000000000000000000000000000000006cd00000000000000000000000000000000000000000000000000000000000006d700000000000000000000000000000000000000000000000000000000000006ce00000000000000000000000000000000000000000000000000000000000006d800000000000000000000000000000000000000000000000000000000000006cf00000000000000000000000000000000000000000000000000000000000006d90000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000070a0000000000000000000000000000000000000000000000000000000000000701000000000000000000000000000000000000000000000000000000000000070b0000000000000000000000000000000000000000000000000000000000000702000000000000000000000000000000000000000000000000000000000000070c0000000000000000000000000000000000000000000000000000000000000703000000000000000000000000000000000000000000000000000000000000070d0000000000000000000000000000000000000000000000000000000000000704000000000000000000000000000000000000000000000000000000000000070e0000000000000000000000000000000000000000000000000000000000000705000000000000000000000000000000000000000000000000000000000000070f00000000000000000000000000000000000000000000000000000000000007060000000000000000000000000000000000000000000000000000000000000710000000000000000000000000000000000000000000000000000000000000070700000000000000000000000000000000000000000000000000000000000007110000000000000000000000000000000000000000000000000000000000000708000000000000000000000000000000000000000000000000000000000000071200000000000000000000000000000000000000000000000000000000000007090000000000000000000000000000000000000000000000000000000000000713000000000000000000000000000000000000000000000000000000000000070a0000000000000000000000000000000000000000000000000000000000000714000000000000000000000000000000000000000000000000000000000000070b0000000000000000000000000000000000000000000000000000000000000715000000000000000000000000000000000000000000000000000000000000070c0000000000000000000000000000000000000000000000000000000000000716000000000000000000000000000000000000000000000000000000000000070d0000000000000000000000000000000000000000000000000000000000000717000000000000000000000000000000000000000000000000000000000000070e0000000000000000000000000000000000000000000000000000000000000718000000000000000000000000000000000000000000000000000000000000070f000000000000000000000000000000000000000000000000000000000000071900000008000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000004410000000000000000000000000000000000000000000000000000000000000480000000000000000000000000000000000000000000000000000000000000048100000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004c100000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000501000000042ea6fe02855d8c72905f35f08604467117c037962e324c9a793505138558b3700c94efd9afe573212f9bf596ca3a4b42ae57f59e670a7cb5b9440c54bd8ea2961856bc4892b0b3f156ed2aa87463c389bfce0fd675a37cec77ae5d753fcf593c12f9d3f397c2edc9e4a6a5e485641163525ca802e3bd93994af997a9b9a44f98000000000000000000000000000000000000000000000000000000000000114041414141414141414141414141414141414141410000000000000000000000000000000000000000000000000000000000001180818181818181818181818181818181818181818100000000000000000000000000000000000000000000000000000000000011c0c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1000000000000000000000000000000000000000000000000000000000000120001010101010101010101010101010101010101010000001012e5643e26da426570dd999e0e044e5f83d60f3cd813c55059bc0ea0f4a7c9d413b2d2cea949fa0876265cd8eee3a4dce1e243783562ea07e2de537f469f7bf627abb3d4560e786bafd52f77ac52dea36c50419f32386567bd969b0c38e1bd7405d339cecb99fa74bfd631917f965357f0341d8c4dfe6a8f4b621d8df54c82941d560ac24523012499eeca2594f20ce238b7d21b98ad5c638767d70ee05532c2183e6d64e69b005709dfc4771c7ca5981adc54f3e8bd1b00222461ae90e44eda2f1d4572fe0b0b23100a7ea6d4780b25e826e41ca9e71897e010bcb218887b3d036d44eb30a430b5cfc6660270eb5fb7f274689ac73dfa53ba9d0739fe38637f01f7130af8c5888d4c65ea68109a1d58fe8d7d1ae62098857b0a3a3dcd393ef80ed8bcba6eb5e3b4887a32c51c5853b97a5eb59c87c520f36423c6d7be06071821ca1719330de5e3c51a521778b49cbbc1d53f8ed42e0562bf21ed72e8cb9a410b0e82ef5f7276df41353faef675fb408aeb246b6e2f704cab99bf28d1427e7b0fec7b9929c6effdcd045d3fdcec1d1b73faed495444699fab936630d69b519f0bf4f1453db36439419dbfba703b849d1aa5774fe9a5325e5bf3e7cdda9d1f7f2a9c2a035c72fd4a3e383306aff03448f9accc08a2c665837560cec8675fe2512bfaef35a8fb7df08a81001a7fd4903849c0371dedd87f31295f46269c5205dd0000381000000e00000001bc00000090763d50695e296c417e7fd7bd6cf35a97ed1c708eefc8aaa1eda67ab2228b0bb6025789d764664b14c7d42eb0319d854194cdbee51deb0563354060f57f1d6336a2287923e302267e448421bd61859645152c7c6279530f5590f906e48b214958cad0a6bf18d1dec692ffa633f0e15c7427b5b507673696541e6c11d47bc47ef1a690a955eb66c105f410816d0d4995310000009044fb92123e56ad325099bb495bebf9220fec34b76972b7e5c425ac8cf8e911c6b8c4fb114e2cbb7981772f08c4d3335c3a0d7b763ea5c862dc37c78be7aa73207e8cf37bd2beb95c1843df17fd9e166d01e3f5972023917febe7d45797e3467dab35174b74e9072f8e3327814e2462131668658ccd3cab395ae6a7329333afdcfa15ce428718b15e1d0828392dd3d1650000009048e647e2915e58393481cdb94298db3677d4a86451a6f1985d75ea4188018e1a1999da6ca5cb24184bbe203348b5f4bfeeb2814238522b1b342dfaf799754f3663fa2321057091d38e76dc91afb3888123cb25f01090bfaf75e0f66095472286307669ebd902e0ef21563b89fea6129f24c1fa29776d82b8a75f01e793e61f8f994e0fb88e6f235ad2ad23c0450d4d99000001bc0000009074c50abc096a04c33ef18260b70b4fe0bc416903654b57a846c863aff5900df9af981e747c227c6321971bf4b04e34d75206ef71f7e4bcb9e7c995db9217da78f4614b2019394a49430c4670bb80a5690eee7f95aca6ed7bd9089f6e1af6a6b602056ca4ec01ebc815db4d1cf3e7334816ca76ede99ad9537b38c464926ad6a444390c99f6365d4384c68c9c49a3ef3e00000090d8e6a5ff78b39975f9b787c3898073a5d5b467aa880690bc258ea8d01aa7e0e314753d30bb24b1428e651f7813a9d43e94be79addbe33c515b70f93d59729e5db8d839aa35fb47bf7a2eb43acac8e96021e4360608a938dd512d2af37132ff4bb836382a131c7faf79334db4a493840f0d1911c9e2ce77e80185cae63e22322ff557b3856d41c9836cb3bc49c030d9b00000009043a97d2138947f8b624baadc0d70adfc36f0074a2bba147929022ed08e419354626d1905f77ed8863474a11487677c71de53e3825d352c949f5ad0fc3c7c6405b4475f7130ce5cda31d60070d5f8a5701fb110fe1f02a7999d7bd7e891becdedbdbd55740403a060f260383e564905bc1d76ee41ad7a3636b6a317dee3383353cf3ecbb391ff997ac57e2723c838d227000001bc00000090a1eda4b31f5dbdc7d490f6adb65f37af25912d9bacd84e2cf08123d1516c1e7cdeaa783bcf70cf6cb81085b55e1d3fa3a79f312230284e3a3aebdb6c524d760de89b78d577116dcb4619642634e6484f27ae1f3bb36b21124d715234d0d30539486f4b31a1629b681fb566224a9724e21b2a7c8ee676cf5ae59fd39a4e880ae9505b80d2ce4f52337df36f0da1a557ce00000090d84345024f840c9deae3eb2512996076edc7b67e8e999b837abfe0cba5bfdb2c8d3e649bae2b374a7f59ba0c4c9a30d3f3de2690c76e931c2826b6d00a77ae36f8d617610cf9577a14a78a24e3370b8e0f50e469dbb82a50dbab7e405320d9a4938850b2384b32fa00420a5a87c8db2b20f958bf653773c16b7aa50cd6aa62ce1e673c46b251aaf725bc8130ea7dc7cf000000903d439668457140675a615d948392c621295b37712cd411763918e820321d014f9301fca09b9ec926feed5aa39498ed2f0ec949794488fc3f0aa5f1abf41567e823c02b4d7c1606c03604672e0a3304620d50ebb0806fb724f8ba63221747225ebd6471a2e945297714a61fca26ba4116017e40f0db29a18996b258be5a619e920f0f4b1b793f9a143551d9ad057e2487000001bc00000090ba197708a8430e941d6fc334823136c5d78f07317c64b919ec51902d22140f5d77b76bca8c5eef5de25df8ac826d3a18c7bc43ff1e897163a34d561540edbe97748f8a1c5902e02d95c492bdc6d3f60a072ab6d2071e376a281da7db68438c9ac8b45e61d02ce39141bc2c79cbbb1a6b07aa51e94edecde313e3474fbc65046df06620ccb2304a80acee864837f871340000009099ac3bd891b57979c5687b217223ecf32685cf0cd003710ac8bf4ebc88037b776a7d5ab2d0281cdc6ac859d1d0560428f8682a8e403e02f0c2bbe8d53b41cbe28bb5f3218376588769b0d2de4d1aad3b29d161c362da86ef6f3ca92a2afaa20097dde8a136704acc7380b72943d491060ebd503953b3d1b64692638e63240a5f712f2233722c608d3c38516fb64cb802000000906b142088a1cb930048cab2bd11032414af2b0a5cbe0e44290cdf2f4e0b714b3fbfa636e7ebfb880fc4d23d700115a4fdfb97dd5d6fcb3f2adb7a356f81d61065c579196a26e26db6274859656ed8acd70f05b208f5ee7712feb240bb3d4ccab50901dac74ba9409741d69accd55f56801371fb09728d8551d83c2a0cb726a80a77f4762038d65a56eef9b5d26cded3e1000001bc000000909e1e346175e0ba4104d7ef04d02ddaaf31817c6d63abe809bf94023e79a0b4908206c7f663044f3c8766a7b36b2851ef747711ff208bd6e5ea909f3612454149bede0f33a7c3943c023621f9dfb248831b13ec114d25adb818aae0b5f4b07409d2266578513262909a85d9ee780fd231131f7190eaa1a62d0ba9809c20c60b73e11683ef8c057aa86230490ffe72c22e00000090a57f8e248345363587d16eb57dba9a0ff778ad28fa0fdf6753409955e99ea2a4fbc30af5a961b74a7fd676dc6c14b6e5d4d16726f82c2d896253373c312d2fb99dca327fe959db1371b4832de1596591142e090599a78535ed2ad9efa32830c806ee871582b1e9d4a6314367aa0848a90279582932c58afbcc70cf7c844aafe01cee7787e4cca3244c99f9fb214adc4000000090e70521e850fc0fa00f700acfa53526c18e8ac1bd823fcc67819bb43a4c0727155287dfa63ddeedfa4e45a321707168b9853001d03d418fdc099d78c313d9130fed5e5267dcf19d424b5b33fd910da37a0cbb73aa4538b883f92e2c79ce0f68230b5c43e5c2bc4a3b97064f57bcc467300039f0eb1b9f860a8a6cdd0b95c37651cee8c8e94772664de4a3ff2a889a029f000001bc000000902f60c46c672de108b2bfb94dd48eb2d446d51ed71f51ac32f8324f464c8c9d74a4cfacd8c264e7d815d47d412a034d8669c23c185a4e2e47bc785d5b96476d24efbbb945c5ea287dd135562768234bcf300a3dd5e0f92884ff0fb194903f449b738639e232e4ed3cd5098fe883ada9b4215bf8b600006131f0b8d80d60e449a50336a4597a841e94f1d9e3602af980f7000000903d6ba074fc2f9cac04fdcad76b25443abd2cc75182b277d01b134cd5f62d2e1a4bcea7faecb667c40b72ce6d4b03a07fa828040bc7f397933f42a4edc3ac37fd2a1754481f95e5219480c7a060923ad11dc720a6ef999568615ba8b6465d275f83229f738110cf12f9ffdeac538694c8301f7bdbf2bf08f5d7618f580d745bbb0db93c6e26842ed4fd329f2f45e49cd200000090c4675df001b04b6722c98c8f0b71a6a871410d8eea06d9dfc5fd25ee14a9a2db910e8e459909f0e07f104fd0ef81587f6da7a39580f673ce0fcb597650dff615040dd90ae9394918dc25e7b6e9f3194f12e2702727f54a9742703232baf98c6ea5a00260a0c2c83bf24c353c1bea2caf240d56d18b1d6183c3e008c0ca266ff63ea5bc24b521fde209dcc3d57defae79000001bc00000090dd6fae0197b221d9c23f83e20d52ca769588924cf4653a351ace27fbc854cfd4665143f2fda8b2d8568ea21490f3e3c830f1f4a0c17eb3f7193d24785472a986fd507b3eb1fe7b12867071a3866704ed16b07a4e4392502310a4024f70b5450fa4693976b96221f750d0f5e6854db70801217ef19948f21763e933bb02ca129d4ed61ff2e7cf57d390d0604a0db181460000009071d1cc239cd677ba31a331d98980b15330662f194209efc80ab996fbdd86dcfd4de8f82a9044d706ff24ff7c58b0066d6d80d1eab3a7d293ebe28c84afb6e35521d25b37cc7507fefbda4ac5f5f40ee912702e69a02f2b5f9e8ae58934896636e90bf39bb26a3ba30c7d0cd97ddf10a71dabdde2997f3541303610d6f880f9427bd0018b682bc2db24d7ee76f4dbf04800000090426b92420322bc520f6011901ec3df631dccc4c935784d353f1f749d4579aef2b1dbdb222b5774d7c133c8bf75abaa704cec8a52cfd8a51c3e173dcf20d9399e31a39c32e8ee9ce528e3a99852b31f330660ea8007d64c83b010806068d417fb794dafbe802fe2a723b92ed7540c6a28222ce102a7829b72854ada78da595c3aa8d561c37e8eb1faecad2a924665ac78000001bc00000090f01c43e42a166dec160ea8dc2db69e783bb40309a56c0f8af717b7428b6d4ebd1808d4fe6dfd09aa0559671180473c9431c7959bd542a3fd6b6fb3976843ee5a6a7782dcd4c2e8f66ae22f4fb0f0106924a9e2601bde6a63c0e30bbc24a8bde969177ef97b73256261369b9722f355980603910bbbc02ade9ebcd9e6200a35e40cf4fbad8976bfb0260c604cdc87921800000090ff22e481f51f0efc4832bbfd52a93d87933faa5e34278f0812301c07ab0a5fdffaeab49256d615d0230025f9ef2a293cbd9fa13d5ff1048735f911af3a8611bc69e352a6255ed8f57974a78f9bcb81ec08a8ddfb42a2ddfca1f5ddfd4dddd5fc1156b603cef903afdb2cd262ec7bad3f258bc1e2317227b132414e55ab299b11acd98f45cccbc769832a6cc7586c903c00000090cfc8b9d4ce1a042a79c0e01cda17fe0b128d1725f40260107a49da748b391b4b34c36413f001b4e8837a8a34ce2a678c822611014a39a6e5814708f6b1a5b55d7867c4f914b0976fe7e531a5ebcc2e481dab21d620393af6ea11162207b0bf08bcfa1bacfeca15f17440a5d0021341c429bc28a183c7be042dfe6fb245cbed15fea5f56d93236706f1cc68b090ca02f500000e00000001bc000000900bfafc78763bd2a8f902a0d60eb0e378333f28de1b91568c13810c252bacde67a1556d0bc493cfb86b31b73aac7c1cb441ff7b160fc65e368a4253d561321010100a8b168806978d6d6f964902711e89094eebf594cced9ad6e5596f9c0b4cf2393517517666a3a37f8152fa41fe6f2c2fe4e146dab6f660828bace0b4fa4552abcfbf98c4bac67b67729364a8eb22510000009040a490560cacc094f2ecbc9c41ee17a6eb726bb404aba77c47b24a94e55a178f802774a37f6d755a239167b9dc772177e09619e152acc1edf62dfd99b9c9c2ef59de018e0757fb3fd26366647c85ce6e0e4778efc3d7f67e0a3a4d1eb9cb7d70c51e3173b4d4ad55f95eba265001921d0521475c14403376403c31690c756da4f8056555ed007b0cb1a599d1ecaa074300000090f221a293e28b099c0a3b308fb73e367aff92d41421eccc00cec77b66015fe0a793333e90d54954ac451f648dc1e85bb4e6fcc787bd7aae5b6cc08f3e7a25576373bf6317efa211d4460be2d9c20933a41a22a03a72a23d5d216ced7447a874bcdff8ce0bcced3c402c7c89894b6f2499115ef06e48712bcbc32e30a008f9faa45533595e8a9d95c6ac49c77b2ef08059000001bc000000908a23ac574583e150f9b8112e17c080a32ce3a87fd737b8adffcc7486b1f2436e58d74c0d4f2534f9e8bd2d297aa0067a36e8ebc1fb4b8294525e97ab4b148e23adab5c0f48101e38cf3dceaddd8f2a380e85c85a632a3243a4fc4d9f046788232f668f3c2c919641ba238fefe1e9597a2a1cce9bda441298ce6207b321592c2c85adb8a009e4562ee14f4c6ff0c6b4a8000000905aa5ed698bb707982b0a3da5b5a8eb24178599c26043bc2b87ca5978264a49f5dac911abc7e78f05c7f99c8f124661d334467938bcbab875c4fc1142feaef450b81b60e5ccb4ba006573e57095aede14035fce412301c18ce231870cd5a6919329dca9dd959091490032b98b074242910ec68df86c4c2d1ed8cdbb2272dbbff13b78555db8a574651e08f1c66e7238fd0000009036c84b56b7dd028cb0fe48ea83c27e511d07ddf50d49322b8d5a1a68ef76326d4bd00d36189bb48dbea8a16a88d7cfc14a22523490c581d50610632f447f4e5962372a4e1a4ad24fa7dfe72c3183756e0dfdd3015da3bd5aefb2e688d8c50f804d0144ffc6ba05889a462607f3c16bda1e19daf0beefde473e16205694deb54e889134ad30f21acec6e6898dfb1ed820000001bc00000090fa99627d94a5d06efd1ee7489a61f01e2f3aaac340c07ed059469c1821d9041c972e02c1700d8d18b0191a7d87794b2da4ea2783ac6e318f2241af9ab57fae342e930b55d1b77d470d0b049a6ea47c5a151f6096b09c4ec8da6ba3fce1c73e2728c685ff6f185b43b6f3465ade0a34d319a2ea8f61dd9e9ce733056dedd30229e807aac3040340a497c93eca3052434a000000900769e4b0ac448fa876790db9e379a711d65db6771de98fec4d961106ab327573703a65a8db1598c5d39f87daee34e6d6b72eb5f6739e5106cf1f114d5aafa87a6b0b113139051695eda21ae94c0bc0941b86323f953272774fa6f40affe14173e832d7e0059da92dcc7f5372c1d8e7811afafec9b1ca1cbbbfc140fab62c3d400bf69c279cb32aefddea52dae4a982b20000009088307aaf1a93dd6300e0ee7e2d2d9d5001646944421e6d265abb6e9f19d488114a89096ad40bd95b2e0de01271d3651b34a751a821a92020dc942c32a03362f9eafaf70da45a4aea4e5b6d1b2ae6abbe0688e326b7fa26bb49e3b3ac51d1da99f3f92fe96d304e03230cc8a21e03913a0da00ed9e36ed447a5b38a6a1921822f8ba23ad116d69b387dcc9af1add3847b000001bc000000905dc09b50a3c2dcab81aaa93cb23aedea31caf6d350416910f921185580cfd22f735673aaea2881d8fb931f0d772ee589383d79c82419df81529e1395ead7f98dce13cdabad35945fa27f2e060e5dac0a0a2bbe9cca07639260e1d614af08f268384c55c71e59c764f2666205926f150e2402ad6b4f736f37699bbd8b691f1aff60401347adfe84d406cbb32ebcbcb6200000009016fe91f3ed58bd25fef5b4c03adea05da87faa50fa8588fb888da09127ee6d840e04f7fcfa77fa5a4d440ae0245108aaa366e29115781974a259a73d21652c7c15ecbd7867268ed8a569767d09b7e4f406a69eb1773a067f262d64abd856d357ea4cd76eb3efd8c94213309355b26b5b275aa54488a85bfa8273a73d39416f77c7b00de54f9d852bb32ef2455cbf3388000000902119a8c1a1e6b28efdd96b2b5fbc04e52d4f2668d14ee7b6cc81666fcb09342a0882e4427465384530e472833f0a5915b05b56cbdfdb0a2220f41b78508e85ab588d38e3d60c8f1948ab3b304989821b105c627ec62bc99223bde0d762cd9190e79036906cbdd4a7abf361fa91c506042deb4ed5d6df6158ff658370499e2d7bf3e7a2d464b1c0b47243274656fa5eb4000001bc000000905ea0e7632d388358eb5741c3f11f29920d98612924941aab993e5096f8ae869c1ed474efdb5ecc21fcd6fba2b47a68eaf580fb2a845ab483f9872f5ebe05ec0c186ece38867579693d3663e97665f1c907fadcc49b56041bdd358b38b9533ac08faa9c5071c32eee487b9b36928afef72ad3cc3179fa8cf6cab2d77933343d974cde39653b0fc09736f242cf314f85c000000090ae07f491119611c7e3622fcfaa0588693a6ecc5952c396e3284ac9baa9488bf0492a4d9a88d48edce36c21c19afe2fe59331012c59a25347d847066fd7e4cdcbe337575c40189dc2d795c302ee8bc03821a9489ae8b0d23e8253b42fcb2983fdbd5e0f5e56c7d5caff8ceb292ecee9a91fc78414869981f5616e1b240ab637ef6091f19e53aa025d1d4acae2fadf2d340000009073a88bb8d03ab5e51cad71edd9e2255c5fa2a3c49eb88f011ac59a0ee1ab49b3742febbf476bc9fe81cf33a028ce9cdd920ff0c23e648efa9841a3d196463d73b1117b5ad38a813ed78e5f814cbeec580f87df878c2934a571cf207e83a90b15cacac1d5026c979a392fec601056d5960e4fff47533af34f45361cb424e20b89cff5f10a8b88c684b32b226936290cf8000001bc000000901557bbc9bd0249e9cf9737ee312c3ef00917e84808dcea51fbd874bfa5ee6d0dc8bec75ad8a46e5a4fe45fc30ff2824420cb32e23c9388791f211bbbd841475fb3dac3f9e21ca4e8d0227746ed299e14212163716215ad400c0fabff0e933605c76a770820a7c13712ba4a43900a7c2000123cde32f0c07be5525fd7b94b5c23919d0078213b52b1a267890edc2a19200000009092ffdccc79cae5fe9feb40789ede8c0a9789b0a0820e62305607e4a7cddff8d721e73747e7e86473f8ba61f51178a45d8a74dfede66a5c1595ee647ae7199beb98db6d947218636ac37e0658d00f6eb008a5ac9fcf97ffd6b98039ac47038f8ca7ced9d35adede2649da16b207f0fafd29ab94c4cd8e9caa2835673254a58cd97d276245829379f63c1235da64f6584c000000908c1747c37cea18f4bbc1c87e5b7e3566a9aaa31dcdf4eba7e12c93709f6be785e978a2ca75d64436f1062df234d1e3b233f3efd46175f8c0cfbc790fe3028017b1fc84400a82ea5e00946829328ca5c91be7aa3f24d9deca33d405c57a4efe58256b031c9176e3f5d8aba6e71b31500d1dbf7fcc2f8f5d95b3d4e8c6b83c6b8528e0c5c1a658870fee822539e53c2dee000001bc00000090dfe7b85078f4fcedffaef62e4ae8bf7c221af1fde439e6b81fedd1869bfe7382f8c0b40bf527f697a86f50a04762625a15f2ff4c0be720f3c9a199dd06b946b7302aa6efd2795908cf941a4fdb125dac300cb43ccd3076c073c1b4063e778395656ee95cb22974265fa31d2afa20727f1f0e9133c4536e905c0677c2c7cbfea8611b26b14874299508a432dfd11e644500000090cbf58b5c2ef4162cceed53b21c63876f76213c416ac9b020a09d3ca993f436bc522bf1b3adfd0a0c444f40f5cc00cf5aea2596704fd66ac1b4e2826a494f8db7360175d9e52abbb1bfc66910769bc5d72c67d582d612c27a322db2eab7c531e248e0c18850f85cdfbd295b41fae387c224f89f1bad0eaf8b6b27343057b854a380a54773ac0c6717f8c9bf1d869b4d030000009058ae3b96035fa7521c1433aeec1fbd6b744e6e7a7e67572be908b6ed420f7edc02df40318493fc2593f5596d15b700e4fb2bcadcf37348ee696896ee9b2816497ebf32e3e494bfdafc03a58fd39b39780ab79f545030d4c678efdde173f6e6ba467b0202158b297df15f2d00ada1e9c30b6038be376960677491f0afcbef90e2f3b984bdeacb54871e6a59babff6c031000001bc0000009088119de326bb7d8c037e565e344a50c4a60db5ee2e8ec9710fa6cbaa6adc03534cba0bca180cb3714cd79959055debde0027c7d5f5c26ba5d4b99ebf2a73876e20eb62e37ca1e58986b618af3670cc612f018869055163832bbfed4f5f3bfcbcb386e7d2b9fd08188991d9bee09ecd8e18a4bdd16c0c409f2b08bfdbd1b0031edb27aa0e2efa56850cf19b2f53118142000000909cf0e84e6125fc0c0db99ebf50354f52ecb93d3596b239d2aa08de8ca9eba3cb9ec2b406c74d05b55aaee882c9b1a5dc6b60d2a12b617b3571972c29600b6dfbfa800392da80a175890c65909496dbde1f95734fe70daa65601d380b8ce7417606cc0a36b4faece4d228522ac4c53127213535b6ebad2b38b83adab9ed3fe3ad6d07b8cf105cb26efd9ab6b07a5c53d700000090e6f14e47548dac22b102a5cd8291220e9ce398773878f3e65a9fd80abdbf77ae337353c5d93492651e67ca6bc325616b7af2bd8a8f5b8160b3bafeb6728b2549867f2a71d62d0a3a393ae887035ab9d51d7268f69310baa2a8bd9262ce6f7f751bd63f916e553b409e3ab77d671587a80db81c189cbc1f2696ff8f40fea8411ceb142e7f40c090e1553cf3ec3f9ddce700000e00000001bc00000090df1f25b4df5205023034c076464967c815526d2c301527f07cfeaab7535b9cfd601f09c8d0ab90eb5cebc4c33bb1e3f92341c395bf6d7d05002738c562f721d09720533594baf1cd4a31e1aba4c4d82803f1e601fbc042266f5700ec96da8a44485d9f00bd0b08db95a46afbbdc379b41eb94ca103e2dfbf9fbaa94260614a9771c9df3372f93d025afa43d0b2fa833700000090c157d4d7bf3fd500cc77cf617905220cbd0e0d368d7179fd04ce5fbfe725e94929709f9aeacd9e9dc63dadb4fd6425399cb3b1cf03f27688271db4fbf531954f31f5048d8154e56a8da108735b136ae01a434bafff9163f9c3bafa8fe1a3f5d135dcd6ac7db20a9bf417130bd1eda5652409af9464fa831afc5e114a1ce0ded66ffe7ba0a328472dd4dae2f5ff500417000000908174b8de9e15991d019bac67acc2bbc565d69de05bc54c8f7578962e5b47a7518a5d99c4696eb692ecdf203e3002181cb13a5bcb9e9570b14451b045cd7f563775220ae9be6f7efe83f3c31bf55db2b908901c7bb4fac4a8719093081a0ec314bb1607255a357f4e36f93b4b62b44f2317f1926eb6c60efcd230577414a9ef7e6158dc2a2e3aef11c5756d829106e38e000001bc00000090c9fcfd80e746da04dff53ae85f0c8381df0ac2a45ca0d3c1a886508dc268ad3f666195ea8e909cc4a85f776aed72a28d5458dec897b37c92aa63cd526f43a63ef228b26d7a43e6e7ae00e0d9539b08a71bc505c1e5d4c7d329def19c3808eb50db2dbcdcdf2b1c5464e6f17a762f6ba110235cd5f34b7ac6adfed5928b47dd7b973b0c19026537bc21f0c15a4e29218d00000090b5d02214dbee0b9613fb5b14913f781298eea7f3ad83caf1de8b8c4a22483328d070b86ed9b800b468daa35de98b0e43bd16c3b152452f70d6c97884a40b11792b5aec2724e23b064c63721d4320668d11f3671445dd8dd294e337486e90d1cd88a84e74c83c6e48168926ed23be50ad16a2ffb4d841ee30f85ec6a9cfc77f54911ffea299b7874e2ba14d766308473d000000906d3c1841bb53a06f4cea06716bc3dc36d7743762fd24c50b36f25bdf2dd04b5f3c1549463c9940154e706b1a2f7062a10a6fabc17deb4de8500e984bf7c1e36ee3ad23eba101514c9243e45656a757c11a790640f9e0665d4f77ff2f02fd8c21a7eaf4a04963a992c0fc4f7e7d864a872621a218118a1a6b8b084c0c11f0964d2f61e09840ebf5885262f90903aa8fb3000001bc0000009078c483de56a5fe007dd924d9bde35773d1273877406e585ca0da518bfb00bce72cce915ad78d914699cf6d1621acfeacc5b86dc733d461659579a1d0b5f741a021d2712bec2c01710a3dc3f46c30a30f2f2ddd61c05df74269f8af178fc93b09ba6b6609d50720caa387df8b018898d604a85a0fb4b8e3dfd40ab9d0976bb928a1757fa864d67b62d0854511f1217c3b000000906bfbcbaa9a14eb965f5e89a2c153a84e8f802cbff83426439c07db028248a8a4fddd0c19f23c3f4bb4cbeca377b2734b2a3b4f468beec2dbefe9b632d678e57810a855bfded64f501b83cea74f5cd8ea1532b5e5a5441d5d4ecbedf31018eb003c2e7d88537d6513d89e1824f73913292f335508fe82c1366f98f3a9b90da8c3da18ae5edabf8f6fcc68d743a25a87eb000000901c8caa4f1c37d1a136b7bc0b8e13b016e1dcea12dbdd27256e8715a1e16aa4ce313d2a4dbab609e93c8a9b68adbf25c6ad3d33ecb8d9daea91ebc8854fdaf50357e14135f3cb0f5cb25ea4de27390c9018c7e2c87771400fb2288f6423e342630b2ac308e6068b0c421cef97b22bfeeb283090a6af6fe697e2856c8c0ae45b7f4f52d557c618291e40b0ef659c0d04d5000001bc00000090fd738aa0a0c555109d8e11da6f37480a6c6c92eb2d6334afac323d3b7ae4e5699bedf884dd7f6e3f0ac31e0e047729bc37d3cdc9a5be9c10bd9876c311fed97bf1180b35d841b1289ff874eec382bdcd2e1aa6c7c7933cb938cf7e906bfc504adf175db490c942d23a00b282a804eb00059f677fb45bbe69a7d6a4cc6c6ecbb7c7a52eb69e8c9660eecbc8bcf07aeb3900000090175bc40de1192a2a3b53fe5dc340e8075e8a5a4d6048df5ad52977135b1ef51ad111f75cc1d6e96e1346fcfab7dd934d3afb5f507dc3b22253079e73ba7fba5bce841bfe231c2904abe80db209bcebd11ae9715b2f8f5964c9eee1b06814d8de9656f7cfae38d358b8260b2888ee59552616c0e32548b5c249f0838690ee6e293b872ca10ddfb30443549e2ec90c9ddd000000909b4d6e989fedc93c28f7c2992f41c07a8159146c313970571ea7f0821dbe2c67306d5f8667557b3fa38975d211ef5cff59bcff19989c32098a669ed9b18ed0de9574c48c571124493c0fecc94daded3b07b15948557da6f9a2c59a5efc437143405618649a96990da9b97a2dd97fefe51b7c812a884cadc3a7ecb7acc4500d8b5138930c352c8c1e7c4559db5c148a3e000001bc000000902737fdacae8d489010fe776a0481492ddfd3a9182b6f525af0acb54f14bfde2c46f20e46c30dd05000b7c430f61c86a0c3cb3140ce7f9a4536463204878da0c09ff2c559ede10058761bcd7325b6d352102039bbe94b1ea192118564418d78019957460391ba04b9c24c3c6db4e91e1f2fa44610a1bec61d5d6d00b5881f8c4b1072caea6b3804126b5954f924fa2ced0000009005d091016fa90a33b6eee575e955da343c3887e0723147dfe417f8ce6dfe3ac2d46f4e1d28b11249d541ff7784b7dcd48b1bfa4b70a05ab932adaae462a1be1881eb7fc794886135cb810e5bb3d44e5610076648772e980167da0f3f04cc1d9f433bff4b2e7dd24b974784e480e158902c1ad65d8303a16e056c6062bf3f5853cb2aea8232e8698cedf266b572fd797a00000090d435a1dd85325b5c9360e52d2dcc8b855450d64e6d8a508ccd4984bfff3267015267f48255e133d0211ab4b534389828f88abba8128cb0249f2014d3c54cbbefc800e1185381a52369171fd2d6192cc60354328ae0173508e0da9f65d8d4b14033932442b7a104358040f80c591df9bc078c246b48923dde2f454191960738585c438d95e22915aa0a92260cdcfe2a17000001bc00000090012596244767dfe475acb366fb896b00c7ee18f46c42845b8f45f05846e8e8077031b31f26314b553667f2dc363c59304712e849e00a6aa947ecba07ad7d6e2a4b7f01b4aae9514b4edfb16df50338ff11c774aa66e0493346dceabecc379510ed422d5320bfaece0ee64be002daede3061065e76768d636fc1f3c29b19b134c5ecbceac685231c804f7727924dcb435000000909e6dd34defa51afb09251352ae526ce86fb73f7f2cb033ee9f01c8299c556a274da4332dc47ffecea096b72d1650256c4c04266ceb77143de6ed7419ecf74048de3be77389b322cef6c5c544e40fcb1703e97bec2715556918d4746bedc5da448ee3731cf38e6407eb2ac412cdf4ef7f2c7ef4f6b2a70549ff3a477960ac08ca125affc4cb9f2cafeb3b0ca8e6130398000000902d3aa7ec7a5d6ca8614e8d0838759e739814c344f44f44aaffb8b378ecde2298a837c61ec10adfca6259bbb2d502c4957706915486722ffd4b221630c6c0d4ce5844e89531d9c1b49287976c8f308a8f0379146abe38c432bd5982b1acbae3c6b052c24aa7228184ded594de74bf725226d1fb3dc9e6fdf7e6276b2cff3578f03b9b211c9827e2c8523217e1e0168b99000001bc00000090d2759afbc27e026ced7b92aef1a1c21a3fae3efecaadc7e348daf893f7cc920a9aad5e8d5de0849d054074b20b8571d3f0de776d480cb95cdb66bba67b489d34f3314b23f638f00a7d3e3b9f03969417045c1fedc109bd874ce80e5b2c90ba133d3a3ea5cba9e18f5fce03dbbee736a812aaaba41b5780b82bbe2adc929f36cd461f0a0b619e607c314fecbe5b17e36e00000090d96a2f548ea1c1ee8a0d5a5ab0d0ae42c3bdffb6712eda43e56eea46c2e9ba63634a5ce1c07439d8a62fa3b37a1d051a98666342e7340b8a9df77a88a6aa8df4c1642ba23338ebeb69e68d6fd82451c802e328fa55190a09325ef1405a69825e9e4d9a3481f232e31d1fba4bafe2e8b91641f752c037c9eb5d1b3590a681b51d73ef5207a45073a474c6ffeda8d813280000009077b2345bd8fac14ed97f3fe03f83c15e72c71c1b5708be403cda582aea707460e4e87f1db60e1fd1eb396af8b5db488b884dd826798a8ac1b5b673641a7dcc7d649603482b93f4e882c251c16e1932340a802c3931f46c21beef46c9d65edab51de453032d3f923bebea061846e761531e7758045496f471193da24b203c7dc80a2ebade189457c3bbe16e9cbd463b5c000001bc00000090ebf939e3c875e4cf86612db9daf9af16b3a7262f2ecfa092817a3003542e8d4acdcefd7b3707cb1e50595c0261f97627d0db381a5a68abafd2423b9d06db28de879ac63416d88d332f7b4ac1a7a3920a2824ed2e4d88e65d681f0760767e9a4fdb87bada2ed34f46ff75cf5aa44592240ee7a507c357c4d1d284a2c9715d6a2b806568b3968c31db87e169f71bf373760000009088adbe8fd897d14ea24e12fc5971d006ea4e2a94610e9e9a296241831a806d64accbc6e6b31a0fa9f26cf1db413a4158d201f1b7cede1057f762bd8e0b38d95c994058193445385bf6344871f408de2215269a797c685ede92b2c0c2908bac69aeee48638ed91cc099b18a4602fac0d62480617aa0d152b5d89ce4e4136a3e97746338f59761a758767b7ab02123fb04000000903314fee7070b11a4cc12e4cb2ea0ea148efe941e4d87cd1fe0a05b5e2292d56bb0aefe9dd003c71dae74258fa7955af63dbbe76e39c620a509b514844a9de831982122914c5339966babea425c17f6102d1075d228e120780edf0d6a101205d8a82c5b74d5e819e9b1e39ce3ad1bb44811e82eff3755c38efa9363ec7f9f1685ddf1bc01c9aca155a8bf6f9ba7124db900000e00000001bc000000905d9e901434425344cf75db31be67109ec6002e3141caaf49c4449640b7d0000eb2a1d494216af78f37ad68404d639fabb0f609e11e1a76a21f0a6dfe75146dcb659890fb97c54810d76e030ea8998ec80154fe78ddaee7db321407fdcccd504ca7142a1d932a22771c67bfd3a930d134096e940b4478e0e37a9a851ddc8c40ffdbc86a79b4d7bbe59c846a4ad079c9ef0000009062858953192263e0ade35140b03a2868a1f68c8a93f50c296de994466b4fe0a6225f4bf9f0b9e027152a4a2bd6842930352e4e59f6134d0f4f14a6bc43cc9cb96021b5285b2ec198bce333be36aa8945048b03d089168344fe271820014be4f869786dee42cbf5a7c8d7b3effa5b4ab40ed9a89e205ef8e61be31ff68185c7b3f7d5496c33f332988def3c7585e2bfa40000009055a58fdb0c20271cd82f9addb17d5fd7e5a74bf34ad731b06714dcf6313b4809dd4390706c399f4582da45c90b1c26b5678141d82285394330d96de61214c3978c596908a41c7cc30d45631d24c49ea5118d6c04e09e9d095f1b7df21776996905a446667587b3df36549e05db9167a21dce80d122d933f7fd67a069c5bbf5143fe9277db320e3824862fbb1c3f04019000001bc0000009033ce0c97917c719d1141edd08615882d63060c6201017b42817ff3347e835ba1e63388f4759821af18e3c9d13ae55a45ee2d365225019b970118f64bb6b6431d28a7433b196f1e1235d234f97e656c3e053a343bfd928d3ba4defee235338d9700cb04e328f059966f4e18d3c0a872311569ded9ce842e279452f6326c8fbc4e055216e47ebcf2797271a57856e6874c00000090b633997bb23968421c7331ee0b6b7a84c24ec9dc033cae28e2e6c1c62a38b2cf174d0871cf5a84359b5cbdf7a41ea26c7ae1cb809faf43468551de4364cab995ed1b6a5d85d3e74d38a2bcd5cbace567096897e74cfbffa2d1246d70bdeb53118d51d8997479f8e56661f72355001f270d3e730ff09c1c8dab25031df8c062ead31b70c0f09440eedb450ab746f47a8400000090a41b0ce13c6521a36164b3bac101b3925fde557c9804fea41b20580e930faeb088e68210d27870eff7fd1f796650587ddefbaf7ad940aa63bfe9068e6600de648a78754fb7113d3b903cedaccd702ba228ad48a75e6fda7fd47c8e42ff9be4a8d83422dd2db2d088c2a01d54053c48f72712323da98a1bcb5d0f3d0c2742addecffc9f94c5f564ff724ecfd9b8aba1d4000001bc00000090bb81822e8be18dfac6e1654c5b0e83435164d9b84aeba59df89842487ff21a7eb58a435d0c20e5bf5737aa8e36d9ed7aca4d62dd70a71113ccd18bb02e507526b0a7c93c46fa73dc73fb277f8fcb16980074e020fc7790ea6eb9922786c4bfc3c3e242a772e4da2c83afb2b686ac31db1f68386f85b12298da0964f2bd9482e003d96f5e52330c61da84dc48259df572000000909a5633a1a5ffa95b0bb0cfb8fe13a2f856bf3f0b1e1ef6c067a7c01d95e231ee3c1f51d71b7d7bd46b4e95cf4329ab557a323183a5ea4b36fd19011a8856650a63f554c2cc0caa13cbfef616980ff0ad08fc1e8d5ac268f4489c87e4e5eb4b4e6b25dd55719ec530dd1d685b1a5ea80618c00ff1786fd872d172df99618f92aea71fe00e7f021a071a9b9dbfce47c4c2000000900d2017cc70254c6e8c8dedf5fa11494d9489fcd858c4a3fd1119b87b32a56d01cdeeed4e6c6651688e29952d287dca916ea4216aa4b354808bfa8f2b2594a4dd1a397aa29343a4fa9bbeb6f043a0c8022336363d3200be9aa3d2fbad0f583ebf957a94cb2ddd67dc750f1c4667cea844088fdbbb7b9b032de9cc4dec596fa0f38154b3ff3198e98a60df575183615025000001bc00000090463d84e1371d6fcd32b29c1051adce0b15d690c6ba46d4aeb3f96502cf51ddbe96b5b94869a757a867b62863b59b881e064bce9fe875d08cadc57e15a830d156ec32971c75ad2d2940ce37c35c90a745005103288ea6aa57e4363f750b5299b9ee6d3319f5b00bbda34cceed25a3196010bb67c780eb08a16dd5e25b91880bd95f62db19bae2b8bd3a40743a019e14a40000009080bcda014da3d2516f539b71a9292e4ea2844649953288ce59d6c2164a3673ce301313da3085576409f086a60eb22c51193e891a8fbb22520a05c8a90d9d3dcc81f405d0c8b7327536f2a1126d6454ab108357b27251c481edd9abf8a14102dc0eb04bca540d26158ee09dfca3cd0d3d124a901f37c9a8417cc06d972b16cf4bb0b4a1054c33e1d6659e5a49b7908c9300000090bd0d69b106e418895e633fb3f89c57cd47784ddff6b12a6b1e17a451845c2df2e9abc10e2dbca4476ed4f8abef9f735c29b0224a5cacc49d55ec69720cb3d7ed299f9a1ff8b1f192a6d2df714db8d9b90cbb626586423d899f309ab8bf7fa9e52473d2df9b586d1fb361e250c2869f0a09e9232339982d7f6e6a08518c47840d6bd3afec0a2ccaeeb9e9500e66f18a38000001bc000000906ed83ccab5a3915cc7ecc3d9e887eff4bce78e4bb750f06f2161a464a9549932d05b981e5c1b803d83e3a2f49e5b46a33a90abcfa1ebd05540aa1675fa770c4549c6f1e6be824af2924e82c9315172691ed2134e7e181973b1f4de5a7a668db095c1febe9cdf8c96e121b5008e5e51ed29c88b1cd9851cf084d5447ec622dc0dc9b83fb987176ab3097eeacaa1605d52000000906dbcfb91dd198999bcfedf2b615973d4db1fa60325ce7a103aa85d338bf051d76af1ca95c503d6ae8b61bd77b738b6b069296002e7f6373c8c66b4e45ad46c0ddd294aaf7a4d8a0d8177ee3f821e00bd257eda42fc73ee24c008beb62220eb0062a06481c0b517201c044c86c209ad5f0f103be0d8ae501501b7d2670b7fe234d3d6cf8ab505c94ed1e60198920730c4000000901e7e803aabcb23929ccc0da5bbf48b8a3c4f29ae13272e4f6f9b899b90792c6177a6b62650a1fe2bc649ca227d59237ab930cb39e1607c80a82341eba7e8c55aca892f2ae5ad9a303e68f0ccae8906bd1f3f99fa2cbed22666e954be4ce635654bc0d8a9c248fac9d349ed816f25cb372b45d23bd9794aeb9ef6b92adee251ccc690035597167b8ae1511ea2934bc1d1000001bc00000090e4f47239ba5ac245a637723b5616eeea22b678689eebb5d64f85983163743001bd01612e600c4c1daf4ca22aa561418817c8b4037d4ddfa1e42cc0bc388a36e8cefea61210aa834ae4f4d783825b7bce03c6ff9b1d0cf55270f0ebc197c96661e147b3b7378438f9066f3b2466713f720a2e4105ebcbabae6c68ae5c00dfb6891a20f612e4b4f09b03f203b79177fac200000090db6ccc8768f59553cb6ef372df5cfb1c3d1933498eb1ababb045c84601037774154e183639854efd1f522f829a3e4b2fed62f2d7c68d75a527d572551c1ff887010c031e1f69db22d08208b1b1a512e924593ae8478cd17161071eee8be70fbea6af109f9df7069eff7155232ea08e7c2683f71581306c5775a76c44ea487128fd02da4c98d0994adac12a06c340dc3500000090fe37d3a0b4971d7e232654b304e746f3e01dd6b9c52620610fa5fe41fc3be20a1b248f0fb76e176df3f65fbe82d952aaae626c25273138875e7edfafef2ecd59073749ab2783ecf7f2ea3b1fbc11572d1391a220d987a9efc6705464189a66ed96fbcd3285f31f8fed01e360f8db77ae12d063cf0229f9840c630a5cfa23b33aeaa9f4da5430093ace75d970adf9a307000001bc00000090bba25a65394066afaa0c05d288fc26f6be3d05a365423bd4ed025bc81e1a555b6829cb0ea4d829f526746789c541cf79698997b12b002d8a5be07d67b8bec7e1cab4ae54b0fb7f3e1391129a38f9a64a023864e4eaed14ed4248468e533224ad63d39c15e9639d6157979ec07558e9322ea995c8a27591a045db42869f0973ffb47838f34b936d84fadb7bdaace4839600000090050936a20b7d6d8ddd899ccdd496e6b92d021338e339a4712528b9a4983a05d46171b4fc90b8fd031e92ed34fb30aeab1b88cd8fb06fa9ff660fe511a88c8f64f62650844521ee3f63f04f06982010771175a4993b65d03fcfc0b6e708d9a5a60d4d8f45e4aed98b5d16889698741ea61f30875d64382160a24c17d3dfcda868765536314d7908f255a2ec0cb5b9b8bb000000906a43e92c73334db7673419e25849327aa02d5b39c2c4835868e1ec9ce524e1ec76299f91c389e69a68e42fb65c96b77c88febdffe38400e8ec1b53bf7cf8200aadad4958482af5181699f3a1e74aa6b02f7c5a28e905884065964b7b11aeace02f852a771c0d766c05f086880307d5ac1b71e4353de1f37012f0b18491c14baf02a3aa85a0ee6629e2c01108ea672d06000001bc000000904b4015762cef77f008a164afac9bbd3148261c9b19b49e7f27140a2c41bf7289002e6d1f0925fa2e5ea0aedd65adc4fa2956531bf2408d88d3f1fbab21f6ced820ef1ddd3b61a38b82e5989770b49de6276a7437c34721ee1c912a31f0cdea4c72223a52a355720a053ec32009d9f50d0e15b6fed525b528b4cef9e08db67c17e96b88c4816ab139e5981d3afeb64bee00000090a7790f310ef59dc17960ba9d90d4f9b1a720e20c86e6a17ce2eab102db72f4d5087fcdf70e812494bf860df38d28bb1c01d7d024a5989d433d5fd018c5adab79485e3661c504b7da54e8655faece106a0238d77410da7564d7aaa389f4799553a6f67bc5375da41efdf369a713973f321a62bdcd0b353dc94411aa30ad5649325e207425cb5040c11c56e2415536716400000090d0c1143a240d3ad23518a5d2742989b87fc99c81d337f6021e50cdddcced716e4e68cbd52038b666090a1c86ea13cb0c17bfe0a72b8070b5b33046388d34594123e671a7aacf3a919d66008f27ce0a871f61da257170e276e5f035beba17781ce12443bbc1f1e956458dd3c6ebc7e0db0a69f8e7a4ee1cebad51d7ed3be1d71ef3d5cf55c5468918825ce6e911260eda000033a000000ce40000012800000090c1184e7b0755c6ee0dc5f14b406042b8efb6339ad2c12f5cc5ed4061ca6fee9a4b8f79cefcd9df3d109fe6d39911f36369cbe704ad90f4a47be6d797f4172e0152396968ece6420a1b7786a309abde4a1a79cbe13db148d209db3525f1547d10bea97ecdf93393791d8a31a661b3866511b627360b72cb14be4e6882a5dc3123b2d5a1839dca6561db8bbfc7a9ffb749000000905b7a4c09dd1535dac6da83bfac0376fca09ad1b0034d3ce33b9c73c92b8520968074490340c4aff0b06e4b06a1abcb1eed1494fe5e1018d6e58901e59bc9ad2a0666898a294f417fa8bef5e3f8c3766009fef5510a2d265fcfc151e01b6f99e08c315c92b612204a40424ed07b5fecb60c0d0e487a527641365cca14f5c60e5b363270fc3127e0ffef9f47c2cade3ded000001280000009026e9ee78a7d701063e9cc7b36b687f8bff2ecddeef3c7e66045f394db6655da9253020bd876e8ae7f5cd909506ed4be56a9e00b28e46a7b8261ac8fa545316471a350997a47add04b109aacf57fea500047b7d4a43623a4a1e7b6b92588e92e95f87aa50d6ab75c6dea8d73f3853bdf82c4677dc721363a2eb6ddcd2dc88d227f97aeccf21e7f69e0308e1edbc54bbe7000000905eecfe3c64420f6828da34ceddf58a96bfabcc276d00499b18ff4f42211f4feffc3be4e34dff2bc3645709bfe78e08eb33c887f8e874f7e5e37eb57cdc56e28d2b33fdb5a1d252078d9918922ed291a12d633a12285117a113cf332aa84a01e042b13b05d1609886aeddd42f39e4393a27b91cf67bc50c841c7f293907290a86c9bf897e5ea3eaffa04e2294e4d4931400000128000000904d0af568910825d85e5bb2cac0851b244a451717495a63d98d5b1fcf86ffb6f9e2f7698fe1c399ee9ac779d04dced7db03925d946632a1cba2c7dd5dfc06e2f95dba2278bb8b726e19598146eb23d747090eb94573fb8cb904ea17f9d90e9fc18a02a300faac3d1111d4ac31a8febc610ace104a9da0f91322648d19dbb6b0e01a1897f89359ecf2fecfa572f0481d6a00000090c291969a1c6d35de42b362babca4b8d570f286535ae3bdd609dc5537d9e7d9b61d35befe4e6eeedf5f04931e57789a3db96d31f68efe8b196026fb73fbd9c0aa5276ed617eee1e4f6bfecd5a436ed2c52ab8fbaf33dd9a81a93a7e91128757c1c258b719cc30354dee8ca593146cc8730dd4df65f08f4571d0ce5b3bcb209d78a40a46bbd0c6a378fb7f090496e9d41b0000012800000090b1ade0021d2794a5e966b881cce4b0dda94c0affc33c2b1088b83920ff038aed333cdb095e126fd387ca4ffccbeeb7c40fd4ce9ca80d5e795269fc2b4df4a14a006efa0e221593e29c27aea7c5a843622035a9b9a9e9b129ee6e1e6c133586cf3014bd803bbe06b24751e7310ebc179b1d024f95ba503a1fc680c8a13eaea6d3a5c21d077b1e2bf0e7a2478e15e0f89c00000090d345f19fa6612568dae1484f72abc5cbb5945f3392101f6b728a9365835743f0fd4c7eeceaef6000c919718ea8ea0c2fe4de55441dc0c21633c146ffb6f99f0408a4023dfbd698bac17addc336f5034309a914583b10858a2140983516a298e13521eb51e55726c3518901c546fa9c35205b0343b9fa069e31bde3bae3519857fe9c70b157b17930cb2f593818374cae0000012800000090aed05149d934174794eb20441b13be36d09ce547ecb9de43c750b4d231254d00d268147308f9c26d1ea12f68035479692e36b02c18341e58232bb94aae2bd5495242254268f5f2dd201503be6a4da17123d7a666ec58db702fe384359b16e5e6fecf5791da00ef1e33247ba7acf66e6028d946333ec015df4e9ea7908b4eb2c1b832ff79ddad5c351c711f085dbbfc1d00000090ef35a2d551e37c6ae54d8c571338a10bc4599c2d372013bd3108a8245317168199e1c19e61553157e155c79fa33f1c74510731974bd982b3c92e3e05ea3a5ecfa5101588cde1431fdd447448677c2d192871faa6511912e2db6c1c35eb5b9fcd6c1411da102dbc22d5bfce7ae59b65f5296e84beb38b5e3c5df5091b5a9ab20a8a09a51402625b47e3c805a24f76c0790000012800000090589da53ff3baf70985a7b0621e9f80d895fc3eba5e706c89071f00489570947d0f98cec0c624e6ff313de46c29f56425faf01012e7c5cfd0d1a87f94e416e2ff961e0fab0a90cb120d0e67abe3e2a1b10c6ed2de76daf1527143306f1d898b0a70b98e4db4ff7aef55d61db43a01bc222ebed44d7c2379c55e9420799797982a7bffc9e38979d08fbafd78f5171ea01700000090a6afb0a259765cac6b666c6f034a882450d2b5e9369fec7be572fb36c213773fd6d10d4cd9f9dacb2d25e05eb6109ffc80a52861a7340a3bcb2836b2e29d56f26d9b25eca2d2200c902c045b2b9b2763032a5cf3806d466e74fe15b3133cf5a59899192c5e21f6027b17c6ec0372eecb2c9b75b6ebaf91e2c23e9faea95b9c2bf65c1b53b4ca892108bf67f624c8066e00000128000000904e28d89d1904e29ce2264ec4150901703392ca3cbd97aff99fc0808d12050f42ed9b0f744f6167b879b77942d5b0dd5de88d5897266792ef5ae8275e3623a995f1fd946fcc067a5bc551bbf50b31b2cd0b80ec94de2f2ef8c60deb916a66e102900adf85f14f7b2561cdaaddb27010a50f37e725d1f1d867024cafa82b0b8a5a4cb7a20569787e8e9b0d91c049cee8da00000090aed624ce834af128dc6db3845153382e89af1b073151b69cffd4eb17191e68616ae15f22c5bdfb092f3fed1e95b9277029ec240773b410f2b204aa467bb0d13f9fdb861ed194d95051027facd2a808b10541db15d98128621487ec9b6724c1c7db12f548aa9c5c915311125882d7c21205bd5073bda29ead5fa09d565a6d0229a159161f5278a79e013c741968f12c8f0000012800000090987cdb784f66d218379568f4421040cb5aee43825cbbdf88d6e4738907d3547c2fdb465b575bc2659105694cd8111710b8fcb52c0f921837488965f16f12081a0ec79e1971a406c1d8801bdfd08f80b70cc408527a9511b7b5ac5c6ee750f38df3d7191bab63623618c8b8ee32603cfd131cb32f36226efa7fc24c3bd414e47482640bdd4b80389569c51902e5d42b0900000090a6517056a78e45510559fd820dd603e29c873a2e82ce281bb75203ccac0b7bfb43a6d1477ce3a4fbbc129cc4c6edad75c27203495e5da5f6742e07a80adfa8750bf286596659d00c18623769c0670db3245c7b7c40fc43702b77ac652da19540986c9373115ec1b80f3be5aadae33c4102aeee8c3004348f31454278a0665a919ad30846fdc9e4a78a50587ee328a7140000012800000090429cae0a482159c4614f009808d4c5a947b0d6b7e1a88ca583029aa07911758244435b44f032eca054d8fcd001678d28ca6e75214be0b4a570d2169b2d9b7b473d49d24a7317acf805b9f56cf64440b611c20473f91c4a8a870b27eb47b4e8bf4afc2589345ad3161489313bedd168f817b7e3f6e3b4c21cf6dd6c0d8fe10277eef8d73e6fe9f817c292fc7e4ceb64b100000090a58756ec8cad8eb538e4f64e3f75ffcb3d0546fb20f68071c291d18f0de9def4698ef8f28a9fc97556752a9fc3b7c597eb38acdead62359487ba67f88896aa1ef2636d2d0af55b37f5537a15e773c929053a77479f6482891870e3528f4bb5ba1d2d1d2fa3b2f8b3ea56391a805c7c9c0d083c802cb66a0af353d5595366d03aa71f82a0eaef1f761b45a520c01e1e2d00000128000000907a57a7bed3fa0d54aa689280d74ebc76df1429c9720d2b0ff5be7ec8fb596d69101f337fda4cd588e30c0c2c1dbe89423c75c171275ada2c268369ddac2ef638f4067a6276397288e32947a4349bd19a25ee51ffeab4ce9ed6e39e493616b100c4cfb510dabe06c0d454107218e881b813e8f1f9a709af35fb433aad0d81433d68e27f2598e7d2b1188cbf479ea8c8720000009018a5679549bbb4669eb6178f6a72f976404fa0db21f5e9e42c13a88486b4cad2fc824bc192772707d1e581a99fd109747eb47fce647635bf28d5f9f05ce649159b348dc794b312356d162ed18090a3c428a602ff031a01ea69f36b9f927db0508625647fcb7ee81f68e9ba7ed361ae880d922d4e153f53218b70079854c19dec9f7940ce50237fe20183b268e48533b70000012800000090c92a11c6b4bc9ab5f60d77a08e9aa4ecda2348b783b5eda10742077f96a9b3c7d8cac2a72d5d97d9975d04fe4b813e2828a4ac02d87436bbdb9f2cf1f6ce643b6c6a6cc4d0056d80b6a7ef8670b0c5460d86f5801938fe7b25617160bae750623a8e443501ca7fccce5925b870a4a94a269a9f350f2575b04531e62e27ff5a34f931811d9aca21685e736eb28d8ec28b00000090e7e3038939ce40a8e9b47c818c462a2411bf8fb7bddbd3268254e7ee95903d9ade784cdef15dd1fa7944edc35718454d45552c13f8445e6ac34d0b44baac16d2693b309ffa5f41a5ee6d53fb06c81d2d2df1b9e2110e5ddd2e9421214bcc3353eedf6c65f14e69278bd583c4db265d332e3e6c582cd17ce49ae9f86c850fb7a8a59fc99874ee558974d00cb6f328e6ee00000ce400000128000000908401dcf6da9816268685fd337dbef7907a04b8e20c8980ee800970b949175ec2eab843589ccb5d7dce27d265bb8ffb9f7e79b759df627d1303ccef833bc6bc6ff11052a610b59a4d24bd5f13e12f17d8034757bc55d80d42b79a753e1ff54ecf0e93c057e41ab9cca9703623516ba3e521a66cdf1d6f1b98cfb16cbbd8b8fd14247ab449eb37ff3b4cac3b1672249df1000000903974d49fe587239c2817b4ca777b1dee58cd813b7d6f100961c1cba7b8a351f54c8c8e28383b94791a4218c586848290e3e6d64a5a9ab06a3d3d986c24757a1a49b82236144ffd4ee4e10460a1f30d4b1979dd8b881befd6f0858fded225ddc9159899f07dea2ff37c2f1c3ae27a7f301b95ca34ef39ab2ae4a4deeeb7a8a8b2a9596fe1fb41592998344ecba54403340000012800000090f1edd02f1bd63304a932a027779c61466d37b914e0ecaf0b2f286d3d5dc5e2861dadfbcb589d77217beab81952c8f0ddb93bb28facf7c5f5e31ab4be6d896210a499655f77f3ceff5c716ad1297bb3210294688ee98a7df3d311959075d50357c119c6dabd4c2a410fa0af38eb3ac3e41710882ed59f01d113367751ec5dec8b4330537833184a2145b90cce77b45d45000000900750852f50a3e7b313cc098d678be62586579d65c9bb2e80d1f7b32fdc5745fd7a2f5b651c0bffaceffa8261e0f16befafea6bcd4b5966f3438b9b6c8e76289f1ec3d92711ca82050be2d9e8e546120f1c2b4b753f505d42e55f2e6eae8414a0a2b2a7baf14e2d096302ca9db5396f8b1cbb2340c078fa1b5d6c9fc297b63bd52db343be13e81bce5c71d4aa6133b79b0000012800000090ba594b38e0d1ac56d7fe3fd05800f290f87fcf4e6a352d1362cd615b45bf9e298657e4f7c5dd76cc44c278bbbc85ab85ec834f4958bdb040aecad06ccbea6ce0ea919693d48c21bed882c02c9caf02a00bd51f921165e33cf40ff13a82131e2787581e6061d3bdbfe96545678fd35b942455f8ef85598fd284608aded3a61d0da42ada53b00867a8e3e0383a0345973f0000009096253c8c1b2bee2a8cef78871dd035aefaf17ad75ecca21fa4f68bc4d816eee4cfc67f036904059b0ebf3e5322eea2a5ba833ce7946f09330475c23e04285b2908be25e6b5a6c63f01a3d5ecd56a3ec02fecbd9cfd67fb4d34106c01220263580c5b37787b50ddb50363484172c7d7fa0c5690d3969b9db328dd83df2634278afa2b831d8087c915cd8214c91865c7780000012800000090c32c08f4f14e0afe5c5634bd2fe6afd1ba063adece33d45d9e6163cbfe1ff2a6d8afb96c24bdb3219c6a0ce72c6202ebb7b6254d870f4b1775fab44ec5613bbc1d96f05c1eba25bfca5d61f53dbc100216ee0ca74194ae6e09c4aed74c527346602293501634572f008e77881d79ae871a9885922afc1f9248c833478dc5fc8a8348bcd19b9bba09b3ea2d533641ac300000009034003611a5b03bedb91b1425798339d79c0c6f14d1805c7bacc9d345b759e23a0308e253c1484da8d41f81f426afeed305bd02dac577d1f7739abe5c39a58bc55cb334b89cc7ff792dd71cf65dd17bd91b75958d3bd4c6ab88fe8bf8e9bfa60d4aef216eef37a44c4f29ffeefc37617911d3f7eb33f7070cc6edfa403074ddf6d3c29e77e1fd234208bf18a8d608ce9c000001280000009048b356e4dc8108fd6ae59f920c456c473b64baac459f879f18a816c25a1c8ff20eaed4d523cc6c502a0c1791b4432b292c15c8b4037f05d8d64e2396f4ec96e4158dd517b7965fc58ef9b9b99c3add0624f4681af0c175ec471dc6c72e3b139474426111564320a0b6507d60736e9ed50f824ed3cdf06143ad155087622ae67ff04d6703ba5bba340034ff280d885e0a00000090342514486b0cb38c39efa4038f06924343027311710297789923b882a9b126151ae9e56a8835c7769e252bf5918b547d27bf193174a1c383998853151201f9b8a6de722c872e1ecf30b24bf071136c8919346d14cfd311becd47643bf7f0da5075f01884b7c0d00ba4e8bcca29f01a8720ab944609dd2a606a963c5dbfc9207eb66f167e861fea8b430051bde7781ac100000128000000901ed36592c402a8327f7b12837bfc300e127ca0e52e19da57ba3129b2801551f897e34fc6eaa74c8376f55f40214471b68213bcce2629361bbeb895fc67664179bad65c2be68f44c065c55ebc5e6f09b02e2a714c756c0545c67c30a999400c6b64839bad523ae7e9d8691a4de12f7db9101b26dc18a1bc511a1a2c985f37a9feb286638988c33c62cf645e46179de1200000009084276d9916dc21791751b9ffab9cfae5d1aaf850411b0637fb7e68c0fd89b5da75146d29335a4695955d0875261afd59d3f9b0ca89cde21307e565c93cafeb1df31bb788223fbfcabc410017020595e818658a7d4c583ff78a5648b8324ab7bf881dfe15e7d36b5488b4c246d94be83c095a7edce57ec7db60012d39614708f4635eb9f50a93e2446cf6c36d539720ad0000012800000090695d9f7cd58ef8c49f943a818db09d07021cdd83b261af2c0913997f9dd439b2e194dac6d278a7308785b9529df1821715f62a8da850a115efd64fd82679632788154c12d41235cb31e46c8fbfc3507b151da8f80ab1837781012e066a466579af1dc6d4719979e63dff27dfa260197717902118e98cbdd2a0e6af4575e39cff0972c4899454806512bb4b8eb8f7224f00000090ec488d954847bee731e022a6ef11a90c2268bb1b7d984a9d59d66eb88c591fe05e0c87b0af02e1a88e20dd548168a6743f3f63c1107676a0d6f3e7ea2a1497a4ebeb37a739c54bdc59e04b9a188f6e4d058c64f9ae251d48ebe64646f3b07e840e0dd9107f61859ec547517a197fbfd42f848d63ba7d426ebe4ad3a72223160b2b78125f4f983d73bc2215e9f93bd3dc0000012800000090fa087b3e33f8b6bd321688f22f77acd28e17cfcc0caec30bca355145b39d12bcf2d57a0593acfbd53f18f654f889e0e520a6274bc775cb19667b6ac53baa4f1fd9af5bb4f3dd5271651d2d11669093b20672298312f70d390c597ea8323e66e30fba50eb7bb810d59daa1d18b28bddc129d24c5396f383e850b3158335c7d5c3aef519c45bbea0e83d7923765320cf830000009090b243e964605ef74f622fbf4caaf20b7651378095efaf3842582d632b19a79d434daa769eee79a781c194da796429ccf0813b90f5c900c4928e227493a6ad9220247f9c255770d3945e36581f62810a25b0c77ff60a5d096218c0cc56420b40a23f48f3a063923d3d45a0b5597d3fe01beb2465059b7e4fc607386863bc0a6e246877ea25f879609092bdac7a5f53ae0000012800000090f2db3cedcf7511667838aa21f47fe46f2827e92117a1c0c365d21869b528487ab5140e056d3c9f8ef5e9735f50d221f7d1d9202da6aab0bca22c4098dbffe2b01db1c3694dca9cfcf18cd5922398a357285af6fb67a44b7ac699938eafe52163890bac147fd0fae70e24571fef610a6a2820eecb6df541e5dd0a2b194fd3cb45d49251b22292451fc34d3d06a0c29d2d0000009098e78c4a14dcbeb5b4000a9cc0752e0f814be7f200bbdd234c760a869ec69a17b1253bf26ed20a34d38baf6dd7db7c2a9abdc8cbcdc0c1d30118b15d1ba0f71a1835f5dddd3d42c297ec67612784e140037555182233fa5fe019034fa2564c9d4412652f5d1e3a7561fa118434a19b860704bd59ec6967496e96ab1c44bab88e82b1d7f664307a13c98a6546668ff00300000128000000905d07a9519d10207d59110cf39c1d080324e45f228535885f562fb3e14c6cca52eb8ae3bb49fbe3218dfe30aa1cd70ab5326e842283699ba8e5374ee9b14de819ccf10c97dffd5f7162b863ef1ce0fc3a12c7240a0851c213db71afb38f3ba5f1808b0d782c75284623f14a9485fd24cc1e396d48caed5164c302e10be75f95a2a3511fac0a250eaa7085ba4dec44fa9b000000904bd5ba92cab181da69af3fcfa96d8dd4ef89f7f8def21b17539fbd803d97702ac6839050a44cfaefd0909ba4377f01e153b005cd2b11b8b628accc5d16b61cf2a2eca36b988b95e956a15d3ff6f4a5b513ddae0a0e9d235cf87525f0c768d75e67f03a03045816749705e84ba7020c3304a39b4d12d5ad0fa8feec5d294e9de7fa850ab6fe1a2c61ee7c89a3d38d90e400000128000000904bd184043e931f32b0f991ecc7d0ce2bee0aec90777da5d576455e3116885e8d7077ab03e13eef2f1e7a4b16f91062a32f4b84e62c75b8a676565c755a767ff1c9087665b85d0a6f84f35eea9c3802ea2930720e52efe5779e259ea6b78a2ea6879812b82acbf9abf3e700a4dc87fe0f20d4bba5c57fc1d3f845567759854b1cc8d11604f2b78a09976218bad193001400000090973882eef74840f0ce0194f5bfa5fb01b50866a79c725744b3bf55c5734df3c2652b64bc04c8f07bec3d79d89359c895739765b34602e5cb7fea63b6cd511800847d1ffdbfc457da3d1c59731192bfe108799b01c776402379432c1dc41a12b84d3538ea6735e88721d2b3d5b6cdd524130ed309ee0705d5a02d3b0b68edc328f852afa06bd58f94c8ff271aaa289f2400000ce400000128000000903eac57414ea3bedcf1f2968f627508ee03d212cf5e899bf8d372bdbcfcbf2bf7587189bd7b887fecd0d939fb9ee75ce98fdfda026eb40ea3059c9b2ec74e692fdb100159b93475428298280d8ce98a0b0b932d29eef75e3c6569ee061cef7d90a513f74abfafb54f73a723153343b7be18d031023c416f22ff2d6c959de6c32458fcb265ac25b9d63c264c13dc5442fe000000904a6ea2e24e3834edfd8c5aaba55805110e2a68ada426d12a6b08074e5feac03451a4feb6c6fb4f0363d6e3924d8a37581596daa8a004a2046852ab2e079b56c668b02997125dcc6974899a1710243b4f048dcfb219f2753cda9a88b003cced65772cc2672a3657645e2d3e2c50df6f952bece5edb170e4cb61e62ecd58876db301a2d05f1e77b59b97d6983b3e4595f400000128000000901deb2afce84f901be6e439aaa55da208fd7ab557f57a4aa70691370957cc5bf118f18e83f5703cb6e7ffe31441643812f8bdc2ab892b446818ebbbfd500d1d2b12608bc8d6b044055fdd1977fe4c93732a43eb38369b703d33d4d751e397a3c0fcb33de1e30e512a2215347703635bb927528fc6ca0032e35c2ae24d52a2fa0b09368c63cfa5d8df26700b308c4f3e6c000000900284bef456b23bc7dc01e8a18ef5c05e3de5adf9ccf806c99ea1af491686782542fe8d1cfcbe871a30d0a1c5ca26b6a6a3672cd9d065ae4147acd4f022df63f16c2002bdbb6d6f365cc10aaa7b80d98528d6a4242a74bc444ca930f00cdc3a5f0d4349a4b5f5f773ae4b345901bdf5901ae9606353bb5470970356efa80edf6ab74676230bf85140d2b66aa7fd91815b0000012800000090655adb202f1c7f8e98496091660dc7e47e67a9875bb6c1231e96f5866a88d2000ec7289c81cf3321783af1518a15eccb22f7be81c99d023234faa51e8f6b193d43877dc36948bc6b092642b8ebd57f5322b149994b3c84c70e5e68a462b834c67fa0aa089b27c69488c6b397e1401eef2733e148e00585dcffd05c2b5e3aad0f7879e63336a9355877b8806382b5ce740000009033c23fd60e541cbe0fab4d1a9e641f941cf6f384101dbe37ef7261074815f77fe47d0af373d4e338cf03f986980e89e4fd5b1dbd52be8d4586db6a28d7817d39afb81e3bc528a5b901b342c9d8cbb3b10472f00da1ed3680da643cc1f70a2da2d227faf1982951fc82b75864d4898543271ac6350adc7dd228c585ed9e5a30a664a44f2272cc147d9bf29bbd219754d00000012800000090e3d557c8675ce12ce855fe78a0b1d37e7a209a46f6a616640098650109ee9a505a8ce710e1fbeb9000c08bafc7af67aa12ad3e6426ee599899ceee761ef037d04aff1aa82226b32150a0ea81d84e4dfa2d671ca57c63f9d4de3ba366641fb88542ef641fdaa34cd72e56d74a72f8973b06e72df10fc70c87e13f20e9c167ff64e038334e4557f5f139e72b21603e7e9f0000009061423b02328d89019cc10adb50f22b53972773a19f860aac9027560250e51f4b227576812c2d56620760266e20b96945947cc286cfa89fcfe611307f233b45c7f8aca23b9d9b968657ca31a6e6cb070a276b6534e90abc5283af72c2c05adf5a9fbd0dcc6b6db5e5f453f68bb97430fe1c0487ef65d84623ea34ace050cee02cfae3df4238efb8d110e0ee7e1124fab700000128000000902d78ab4ccc8f07c205e1314ac8872e21b3efaec89aadb71c581f2fe326c0e8ffb53a600e45da317b9d30c5e30186a5c46559ecb6f93e0f94be278b287ebbc47a0c93ea634939d7e7c6e8cbc5f58055132310adf5904cd2ed166f76ffcbc7c72e7d343a528d4073439b64f0e4455fd5d8079f4d63dc79933d303cd006e04235f022bb0a1c94f7929f2a52305d12ba505e00000090a9565c8751da83699debe390bc706b7b533a82de16a3d0c6d72a731c3eea7cb88e4e6d076b308f8526003b4704d4e60cd9c08342b7e0aa84912c2a4367623fdd17cd62c575b110b03743200936ae352d04536ca1cbbaa118a66c441b48071cb3fbb984fc5d7ce2d0c3f76c5a3b85298c0b1ddd5f6f0396e7d02aed44bcd18de5ae12c672783da24669e13c0ea617ee1a0000012800000090f3fba8f041cf4577b9e7162044b84aee21c70227f6d4ad7a26670e92e7800b8c31f1684d75beacae697bef2062d49ea0dd146ed675eba946a2eb29d81d2a844a3f922ddfbd49a00bb7213da733f4c66e0847c63d905417bc9861367e1a3795a9b62c26d4ccd14d556804bd149eec56e50427c858b08ae4c7058453196d4f8e22503f5d78d2fc4ca62f148b3392c9456400000090d1e58405a9c31ae318fb7b80abb5cf63f82c4932514e5b825f1be5fcf6c8c53ea74ad90dbe8e188826d2f1e9805b85f4b124f0c73d593cd2384e102c5b60f92cb7eaf01ad14a7da052cbe93698a123131403c61fd8527de051738091977b1a0f55d8f57a3169cd7639bfc7c12b76bfed1d181bb0f11703a856662ec9881c12d9161f6dcd2ee93944ffea91242d44fec60000012800000090a6cb4dd88ac92c6b5a4ae82cff87a044045c77a4e80de3f32ce26ba215af37a5920a6e79856482ebd39412f0d73b21e75f2574174551ef064542443ef442e1ddde8f12b68b7bc0e28b909fe9ca47d5f3073052dcf8f09ce065411cb8ba32f0926086fa4cbad904ff65e0da12786c75962f0c3c81a6944482ad6dd62325eb510876b2344cf716251d66823571f2e0274100000090da4265c0f5bfc4912d2f6f66050f31edf4a5f8ae595fe31ab51a35a3786f58cec20f6b97b1309f7101e61271d5eb76c3c8c8ebba1f7123f5a3ab04b8608dea8c3df4710c1786780a991f79abc53df3221ecb47d0e156cca39321e87aa4951b9a19af3e7985062804d04b5d16d1751412294bf8c83c6f5b3ac8eeeb0f6a4ca65d9bc3535d615f5f7182c68065bcc39fe50000012800000090fb469fd753fe55cbfd9ac2799ae0586fecc59bb64a6757807b0013891f789edbb40550a4b53daba336134b4c28d820e43b15d0eee58b4e2d7668246e43e085e091c1a7245d3a678cf3dc06c71bead785096fbd71e8b7703393f52ac5ab280dc887d79def6236fa83e9a54be8f9d556901106966b3796ae00aea8268bd341a46281c32c83b2d4efc8a4350e730e2ea3c900000090e4b3c0f78e9760ab8f74df524b55e7f78b11d938d0dd2752345c54fa0e74fc7e6e74e9d97183e155f86af071fe3dde95a3f19a890d72b70c8aba0a447e291877893d6dbba7530a166d124af687d2147d01977a67e131e722a2578799bfee53455b46cdc55ebd5bc8d566beab804c59f3210fc30f643d8e34ab4960a3baaa38b952c6c1dadda7b9b74322fbbaff936ab400000128000000906fd52dcb60a123a8ed6dd6f7a30a42dcbd065573c6ca3e98eea05d4e1b65fdbc40c0821edb433bc2d8655d5a08055902257b6445f8608de205a55a74400612c492358846019ce6c3af9634a800baf2f80cadf3fc72a45d8c3ee52d54f3df98a9298ce463756601e07997356e003742102d7b89fd272b55ff22078112f528c5868a9204e40af4c4d7fca3335792fcd53100000090ccf2297312528133d9f60d444b9b8b119078a2af1609486e807be9908d7061a0ccc7445301037ba20f54f3ec8ada23c0118a0465c6fbaad5c37a87080739b5286326fc1c63c5b5f5be4ffa005078fa2f24caa4bebf29cb5f2639f54f0a844b66ea43b1a1f2bb61ecffb8dd2e4f02d67b14582e7e31867805b3bcaa1fa4a576e9b95ed1b3539d0eeca3c790d5c6dd2ee80000012800000090081ece26e8f76b59a447c34becb1f732b580cc5a15a50b6a6426baa49d4fc2dc64f0d448747936770a17443af8c026b3286bf6b0c6c594725468202d699563b2754636a51822ee45cd65808f4d22a5800d7bd45cb173886ad46fc91ab0d69ccfe99a8ecf8503e9db0d26b0518b084fea01fc820b701c5299fe3f2a49f354fa3f8c5ccd9182ada3920237e3a9ed00ab4d0000009007282cc8ccd29a3ce10e7c15fc92904bb443eaac26a2aa2f0f680cebe5086b524ced8ffcc73973abddd916b5163a510e122d5900831d0e861f8103e9c10d599c1f7ca16371fbc216049c978f8950cf4804ef4d328b2a43be83812b29a16200492a03a15bfe3798400fd70cae8b6a73e90e56f6d2a7e67e3b2b2c50c9995d67e4fe82e3177829d2f6665311b4e4e5f84900000128000000902922be583917dbcd5588e6afefd4b7f0dbcf3965e2edb2dac9818ac51671fbd248590000bedf44a27d7a5c422487c24ca628ee01d54ff46530b1d32ed2f91f75edccebdf66799fcb1498d44549f22846044c84da9fb0768659f64c453dfd035aa3201bff0e6f3f1e6c962c8ac733865220b0ef797cc1298b54ebc1720fb1c33065567afc98c4aa83ca98ecfbbee52b8800000090a40a7b8173ecfd1ebb9019a5bf79b7a42401b155beb54b3b5ed4589304bffa9f88ef57a7c2c93692e1a12694c29d7b62ee4dbc186ea8f7c6a4d880968b825793987f492c6068dc5a3eeebf75c39366eb267741a2879fc1341a1f2d094e36cdf0c4ce17475b7154c724793fb3a7994755050d913e1fc6d7a8ccef65f8219976c1fcdcd752813cfe9e05abb092fe31fd7100000ce4000001280000009029f8f1801b08438bac7ac5ad3e41010ea0919347b78b2f5162eaea9f6bd5d6290e02e5ab66b8e9120e383b1d9fb3b2723278b144a677309765b73543b26fcbc3a1b870078585dca069cd21c03acc344b0d4e3ca66a292511d0c29410528808a1fe77af633f7fb12818aa63d6a948ea380dfe2555136860750e848afa63fb047fadf862af7ce143de5ba7146118fb608e000000907f3284a85b27b591aa3f1c2fb7f308ffe34991dcaae4fdb769ec9203f7bf158125113ebfe2e65bb92e87636bd5a0793de72aba6ea22bdc1dc4ae6f928299ce6349b266fd480613ff530bf0dd743920f206d7af03327f90b18aa1406b9ea33ca2c360773c5d470faeb666343abe11fa7e23557b7ed2dc1a7e22c5d68df018a76a582b988c1bcad30fc612ffb62228a44d00000128000000900b0bf3b70b7a7d2f881fa7add0e8d380f96cd7bcf262db94a01a7a42772b3ead87c9b8499e9ed4ce2a5eac89398554a2d2fd2570d2fdda66cedd4ef0bfce1868be6c2343ee8fa590fafdb0d9437ed4aa0d5898872d5d9b758b6e5bf7aa005e1d17161d05e0e3de3ba63ad7594c976b48125977eaef362062e9017a469d42783c7f277e062cb8d75f0689a259596d330d0000009089d61159fc62832abec43154658068ac119f084063ec2ccabbb8e426cb4cfaf1521de619429769d9ce4f43087a7e336cf8bfe6f17fe81d8f50a808edce08da742c169fcd4ebc8d438f649c281c95b7962cc69f1dce321e0e77e233b61d6e803d94440601bae7096ada998978fa149aac24c64006b7e3e5e430bf4414b7b2098f8e08bedaf2958442bc904bf443def19e00000128000000904821df25a9d5ab2a80347092baa117d3c44de780feb4cf4525839d25884401c089acdd90034ad633ee118ca180ab5effe53c57f184ed09373f1c5a54d66c91b1c677ec8f7623da96b3f48711f96daed204bdb25dc4b5ae50b0b39f71c18c4fba026a32989160f68a90e888ca876a01950392a8d3f18f27ce104cb30be5992107f6ce3887e3422f08d5b8e54338fa63d200000090d2d6f0ab132b230833a285db79c37146eefb31e6a42f109be1c97ddb15cdfbd55b210bfa5b69d7af8b441f718cec0665506ddb9ae0895b25bc80b3e0734367cf0eb7cbb43de244296ad7738f6388e3361b2442d8392e5131ff6651f2975640f461f0acb66f4e81c1a6f71bee32e747360899adb66ef52e2f7e10e927f79fb6e3cc14cc6c197e4e9a622cbd5a80a6dc010000012800000090c25f7b6097a0b3a4c46643aa5975f8e11fe29aae080c78426ca72a8aa619f9c03c8d63347c727b839e09a8e72d0ec75ba02cf9a5b409ada4efccc4725cc86d088ada592f8f1cdb988f26ca3dfba7cbec040ef0d79ce722f4151581d51b5a63b1a7343f4289eb3690f060927cd897e8f70913099077a87c9e160ff38eece4cef5d789ea0c00c26e3bb1a77587ce0338fa00000090825b7dd50fb89d8c6ba6326d596a5c06c5842d482cacc1c1d7a122c4ec3bd1c1cf180af508bd7bf33ae65342fdc3ad24f1ae4680836ed9de868a7597711073bddb5a9af6b58b5595d524f312ebac882c2f1edb96fa6e20f5b4b57944149d74bae8906265cdba49e7467c361022457030093c1b1af15b56ed2f5e05b61dde42826ef9ae231b0fe3e1e8fe6173c723684a00000128000000901031042419b5589176350e157c7ca4c35f2f56a9877aea2f6ae784a9389a6b22e0a9146c2fe513d361c5bd4b4c67b1acd3e3008df27ec2bdbc7babf2a44763e5c4aa6d4c0a67c1d2f838d1b8c80ded80068d561c2715dcdd9e64eb877d62cbe65fce422ba572143f1c60ec63cb7e266e10228516534d2ebb44a8c9d1580f7786979ef445bf14f99d303d62cd3bd82fe400000090457a32df3cdb8659103dfa373db347be0cda534b0caad190e22e39941f326568116005c076a7074958f1e830123ecd2fce7f13039917fb09e14d84cf1c9f91bebdf79ac7baf4f8fff44a1e7476c40b7e2e8390d4d4013327632c0ac84d795248238650c7825335cdeb6da45e67c0f290047dae6437e45190ea1f946a1ac6cb6d52531f3507c6dae6a49784178bc2ac2900000128000000901d9280e1a8a4b914c29221cc1c4941bc6b4453e7bcb63497882b9d3f0001527690057d786c35371f395a53d1e6b1b9b06d1276f949472dd31d3eae18cfbaa3ab69442c89e547f59640e790e1be821dec296f42b90457bdb1e4b721e81c8b514abaf3dc28e382e683d103bb11c1d513ba2eaa710297078adf24adebc75972b8045784a8c3c403316596840a4358b16db700000090eccbb7543f80e1e70bee5afa8086f659aa515db8b515cf8bddb306db56bcf9274092aa5d320d85a31d27208dfce834c3c9268e6239921824bdfbbd03f8024d42bc67b7eb2e7db7b8bc8bae88e210db0a0fb70ac9ef9838d8c4395cdf197a7eedfa0e860d7d3f310da091e918dcb77d4f1b89afbaa6eeb33b3a92764929a866c8ae994a5537b9ac7d4633d931b7957e070000012800000090c71cdcf61db3a86ea5eced6aca4ce9a1ffbb066daa2b50f2ca8a61f4732e2b7c96061e68c625600778fdcbd5bcb3beac95394a520e1ed8e033ca59f9210572fef01ba88c9b4d6545768633aee89ceff92b7f081e36cdaf87ce465ff682899579e9b5e6f44236856f3f59ccae77ab35c703008665a71bc22dce3ae6fbac421e347a57e30590816eb1d67124d2976eace8000000904ddf9ee90c64e88ce46b9a406ef7b6907e57512a430c8eb16b7a4ed676ff47800a4582f515773a800476a1198adb500671a953bd614e379f2f467d635e886cf8ddbd37532de8d7aeec2ebed7758d190c133cb01f06a6baf3e5dc38734994919309134af3f945f3adab99b8fff5f85efd1b2c64089fe9b25c2b42bf0068ad5a3cfa0c191b40bb7fe68966cdcf66e57c8d00000128000000901c86a2cdd1a95ce50d2f0f68b018c5b04f4e25f51611af0c8f963e8d35c812a26e38fa9cee19470fa4c54a925e4ff54d0dbb9eaeaf922dec84c4828815f39e86804a0d79739039653830b1e17d7e3305229d76b5c71a91c9644d9696322b6214213eb3451af86b0b593f535f8ba0d8ee0beb6bcc713d0b05a28c59aa10f0afb86940d708e3fa8176adda2adcc76f4527000000903da13163fe971c6fffdce5178025b41f068b33629e018751e71e15f2fb27dadef3eaba55a335c2ecc103a415379d8d900cf37b77e27821ca7c14afa7a3a789f125d5b09e2f2736e728653a97723467c524e4fef30f912f431960805f255743794fd1629fb6aaeeae22e987a4245f8dce1e46a9242e12e381bbfee1265301f2ca098b1bc64e0870c29b1fe6231ee1f1b40000012800000090a55ba558c0e0cde27b03fa4a8a134787406573e2807a5fc046ed34850471950442b984f0d3dea8c184b47bb8d84185135c15c165c4ff4af27dd288c8ba2f74a7331140285b79a0fa966aec4c37a6c1e5074a9f2812af9b5dd097bbe80e6a461b621d14ffba1d53eee9d2a1113d72bf881c834913596665572551b672fb3d6e4c4d0c0345b577d8ffc442e7014734961c0000009015b74fa91dadcd8c594fea88ef79e8cd490a08c24fa2817d074d44290fd49675918b21cafb38f20e220023df6e78a787437497746256eb236a2ac5d68197100d619743557dd878e300bc3a6d1d5f369807b6485806595efb40abf8c7764b1389b1d7bf301343a52213ab75f4370958252bfd6ac6b063da88cc12f79b6c1934f01606d8bcafbf28eeeec0eff0cc8c1a2b00000128000000905122ffbaef9c6215a621fcc6e934044dd1eeabb5e6c6b79b575f3a5ce9b36aa91b64d7c884ab712351bd86da2bcf038bb00ef678e9b93add069d3870c20c33f083e924589110bb165a7709ccc3b345912096b93e48f3e9235701b569cf5b98a2ed2304f7b53a4d76df686fa5d50b84442169bd2fc22498fd3c749c3dd6fce714cd6e4f716b33a0d7ea75125ce89971b700000090d6bf3663a143c50be87157b51a4ca02570269d188ee4b4659d1883b876c31738fb5c962ecf61989850d6811aaa6449282163d7507dece75518f2d775979825b5ec63e774ef9eb937d51329189c774ca42e597daeaa8167099320ea3bb56fd604c61d70b16f9caf1daeefed9e77d52abc1374e133c74323b3a1338c66841dc38edf47ec04d8051980a207dfcabd7bc3c200000128000000906d77b45867b311877cf71562af663ecb92898916ea2da7892f0c8abd85cd89566b7d43d907b04c89ece3fc6917bb33810749a9f48375c2000f59cb28511a0562ee5dbd60f593f41fbafe578d4953e9232870448c5d3da0fac9c2e187edab1e869200e6254de8c755667f719ac60c7ba82e41de397cbb95838f92bd34eec638e4ff0fa73dd00f53cab3f1e6a661d51b8d0000009046933696675840166383ebc5a6649df5f10c2197eb973216713c29d847df7949217c25078e45cbc4add112732f10f2cb999790e86eb321ec8e5e0fe69e56e2fc24cb72bd2ab6e7b3cebe194c52a3a1160c8dd38782749751358e6a6e9d4778e7b816cc3c12e806d91d88cea2d097b85e25e55c8b1fab1016ef494b775e6b4f0f1c92a9cfdffbea8f6f74feb460b613f3", + "calldataHash": "0x1b76574a5ac7ec6cae194cea8d01f60b739f2696b2a1b0e70d32d93eab527605", "decodedHeader": { - "bodyHash": "0x484df1f693f6fe8712cc9129413652b277db358ece78850f1073d963c1258286", + "bodyHash": "0x1b76574a5ac7ec6cae194cea8d01f60b739f2696b2a1b0e70d32d93eab527605", "globalVariables": { "blockNumber": 2, "chainId": 31337, - "timestamp": 1706272843, - "version": 1 + "timestamp": 1707224952, + "version": 1, + "coinbase": "0xdfbe2253407dbd0a152c036a2ed1237465c243c6", + "feeRecipient": "0x1cc1690e2bfa2c49ad640289205cb9547e1fdffff97848aab22d8a541ec3b9d8" }, "lastArchive": { "nextAvailableLeafIndex": 2, - "root": "0x1f1de772c009f5b1660876343eb57b7a676a84c695b0c526de2f238c41810907" + "root": "0x25363e47eb431704f0a4b33fae75effc7c34f2591315970bc9b3adaefd5780fc" }, "stateReference": { "l1ToL2MessageTree": { @@ -92,8 +94,8 @@ } } }, - "header": "0x1f1de772c009f5b1660876343eb57b7a676a84c695b0c526de2f238c4181090700000002484df1f693f6fe8712cc9129413652b277db358ece78850f1073d963c125828606c76caee115a61eeb6788977c68a3bea359061b678a1a4f5ffde13e0451717b0000002024c6dc6d357aad01e10fe1adb877bb28b1df97375b874116e488086ca76e5f9600000200268020a622156e2beac47431b0cd70e1c81fef9a6aa3c365bfcbed9aa7301c5e00000280022612683c6c4a0955c8248d409bc8ec8776d96a3bfe5b5a7e76e492a4f26cb000000008039e689049f104493f0e819b00d874663f0724639f854b8722e8ee829b0f136a000000a00000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000065b3a84b", + "header": "0x25363e47eb431704f0a4b33fae75effc7c34f2591315970bc9b3adaefd5780fc000000021b76574a5ac7ec6cae194cea8d01f60b739f2696b2a1b0e70d32d93eab52760506c76caee115a61eeb6788977c68a3bea359061b678a1a4f5ffde13e0451717b0000002024c6dc6d357aad01e10fe1adb877bb28b1df97375b874116e488086ca76e5f9600000200268020a622156e2beac47431b0cd70e1c81fef9a6aa3c365bfcbed9aa7301c5e00000280022612683c6c4a0955c8248d409bc8ec8776d96a3bfe5b5a7e76e492a4f26cb000000008039e689049f104493f0e819b00d874663f0724639f854b8722e8ee829b0f136a000000a00000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000065c22f78dfbe2253407dbd0a152c036a2ed1237465c243c61cc1690e2bfa2c49ad640289205cb9547e1fdffff97848aab22d8a541ec3b9d8", "l1ToL2MessagesHash": "0xa10cc8559615be5a44cfb608374b1f84fd11cdb5844ebffafd92a77c068350f1", - "publicInputsHash": "0x2cbde160e7af7c59ad9714ca77d07e5dca90aa6016d28e7939e201190b06740c" + "publicInputsHash": "0x10f0d0db33d66808e557ea29c2325e0154f8c75ce15dc93ed12799143b5c8720" } } \ No newline at end of file diff --git a/yarn-project/aztec-node/src/aztec-node/server.ts b/yarn-project/aztec-node/src/aztec-node/server.ts index a6a5fb16b41..f77bb26a27c 100644 --- a/yarn-project/aztec-node/src/aztec-node/server.ts +++ b/yarn-project/aztec-node/src/aztec-node/server.ts @@ -26,6 +26,7 @@ import { import { ARCHIVE_HEIGHT, CONTRACT_TREE_HEIGHT, + EthAddress, Fr, Header, L1_TO_L2_MSG_TREE_HEIGHT, @@ -550,7 +551,16 @@ export class AztecNodeService implements AztecNode { public async simulatePublicCalls(tx: Tx) { this.log.info(`Simulating tx ${await tx.getTxHash()}`); const blockNumber = (await this.blockSource.getBlockNumber()) + 1; - const newGlobalVariables = await this.globalVariableBuilder.buildGlobalVariables(new Fr(blockNumber)); + + // If sequencer is not initialized, we just set these values to zero for simulation. + const coinbase = this.sequencer?.coinbase || EthAddress.ZERO; + const feeRecipient = this.sequencer?.feeRecipient || AztecAddress.ZERO; + + const newGlobalVariables = await this.globalVariableBuilder.buildGlobalVariables( + new Fr(blockNumber), + coinbase, + feeRecipient, + ); const prevHeader = (await this.blockSource.getBlock(-1))?.header; // Instantiate merkle trees so uncommitted updates by this simulation are local to it. diff --git a/yarn-project/aztec-nr/aztec/src/abi.nr b/yarn-project/aztec-nr/aztec/src/abi.nr index 6e194584313..d9de304de0c 100644 --- a/yarn-project/aztec-nr/aztec/src/abi.nr +++ b/yarn-project/aztec-nr/aztec/src/abi.nr @@ -4,6 +4,7 @@ use dep::protocol_types::{ private_circuit_public_inputs::PrivateCircuitPublicInputs, public_circuit_public_inputs::PublicCircuitPublicInputs, }, + address::{AztecAddress, EthAddress}, contrakt::deployment_data::ContractDeploymentData, hash::hash_args, traits::{Hash, Serialize}, @@ -29,12 +30,21 @@ struct PublicGlobalVariables { version: Field, block_number: Field, timestamp: Field, + coinbase: EthAddress, + fee_recipient: AztecAddress, } // docs:end:public-global-variables -impl Serialize<4> for PublicGlobalVariables { - fn serialize(self) -> [Field; 4] { - [self.chain_id, self.version, self.block_number, self.timestamp] +impl Serialize<6> for PublicGlobalVariables { + fn serialize(self) -> [Field; 6] { + [ + self.chain_id, + self.version, + self.block_number, + self.timestamp, + self.coinbase.to_field(), + self.fee_recipient.to_field(), + ] } } diff --git a/yarn-project/aztec-nr/aztec/src/context/public.nr b/yarn-project/aztec-nr/aztec/src/context/public.nr index d7577654148..19bb51c6bb9 100644 --- a/yarn-project/aztec-nr/aztec/src/context/public.nr +++ b/yarn-project/aztec-nr/aztec/src/context/public.nr @@ -129,6 +129,14 @@ impl PublicContext { self.inputs.public_global_variables.timestamp } + pub fn coinbase(self) -> EthAddress { + self.inputs.public_global_variables.coinbase + } + + pub fn fee_recipient(self) -> AztecAddress { + self.inputs.public_global_variables.fee_recipient + } + pub fn finish(self) -> PublicCircuitPublicInputs { // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165) let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256]; diff --git a/yarn-project/aztec-nr/aztec/src/messaging.nr b/yarn-project/aztec-nr/aztec/src/messaging.nr index 78dc5d33eec..c75febd0a0e 100644 --- a/yarn-project/aztec-nr/aztec/src/messaging.nr +++ b/yarn-project/aztec-nr/aztec/src/messaging.nr @@ -3,7 +3,6 @@ mod l1_to_l2_message_getter_data; use l1_to_l2_message_getter_data::make_l1_to_l2_message_getter_data; -use crate::abi::PublicContextInputs; use crate::oracle::get_l1_to_l2_message::get_l1_to_l2_message_call; use dep::std::merkle::compute_merkle_root; diff --git a/yarn-project/aztec-nr/aztec/src/note/lifecycle.nr b/yarn-project/aztec-nr/aztec/src/note/lifecycle.nr index b94d8a146ce..84326f9ace6 100644 --- a/yarn-project/aztec-nr/aztec/src/note/lifecycle.nr +++ b/yarn-project/aztec-nr/aztec/src/note/lifecycle.nr @@ -1,4 +1,3 @@ -use crate::abi::PublicContextInputs; use crate::context::{ PrivateContext, PublicContext, @@ -35,11 +34,7 @@ pub fn create_note( } } -pub fn create_note_hash_from_public( - context: &mut PublicContext, - storage_slot: Field, - note: &mut Note -) where Note: NoteInterface { +pub fn create_note_hash_from_public(context: &mut PublicContext, storage_slot: Field, note: &mut Note) where Note: NoteInterface { let contract_address = (*context).this_address(); let header = NoteHeader { contract_address, storage_slot, nonce: 0, is_transient: true }; diff --git a/yarn-project/aztec-nr/aztec/src/state_vars/set.nr b/yarn-project/aztec-nr/aztec/src/state_vars/set.nr index 3b0dd845b6e..7144bbe3013 100644 --- a/yarn-project/aztec-nr/aztec/src/state_vars/set.nr +++ b/yarn-project/aztec-nr/aztec/src/state_vars/set.nr @@ -1,5 +1,4 @@ use dep::std::option::Option; -use crate::abi::PublicContextInputs; use dep::protocol_types::{ constants::{MAX_NOTES_PER_PAGE, MAX_READ_REQUESTS_PER_CALL}, abis::side_effect::{SideEffect, SideEffectLinkedToNoteHash}, diff --git a/yarn-project/circuit-types/src/interfaces/configs.ts b/yarn-project/circuit-types/src/interfaces/configs.ts index 82c6e10db16..24f8d467f13 100644 --- a/yarn-project/circuit-types/src/interfaces/configs.ts +++ b/yarn-project/circuit-types/src/interfaces/configs.ts @@ -1,17 +1,17 @@ +import { AztecAddress, EthAddress } from '@aztec/circuits.js'; + /** * The sequencer configuration. */ export interface SequencerConfig { - /** - * The number of ms to wait between polling for pending txs. - */ + /** The number of ms to wait between polling for pending txs. */ transactionPollingIntervalMS?: number; - /** - * The maximum number of txs to include in a block. - */ + /** The maximum number of txs to include in a block. */ maxTxsPerBlock?: number; - /** - * The minimum number of txs to include in a block. - */ + /** The minimum number of txs to include in a block. */ minTxsPerBlock?: number; + /** Recipient of block reward. */ + coinbase?: EthAddress; + /** Address to receive fees. */ + feeRecipient?: AztecAddress; } diff --git a/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap b/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap index 864ddea2d12..b169f23ce2b 100644 --- a/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap +++ b/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap @@ -1,8 +1,8 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`abis Computes a callstack item hash 1`] = `"0x037cb5ba672a7c461e23cf22ae618757ab4f1a912f3fdc93b2b2800cfe57bb91"`; +exports[`abis Computes a callstack item hash 1`] = `"0x17095bbb9e3e104dc520b6eec9338e9b6ce1fdc0f3a66b06d5ca90b15909ad0e"`; -exports[`abis Computes a callstack item request hash 1`] = `"0x2c36008a759d932a3a1986429aa295e2c2d4e62c33197a7d259750d29347bf30"`; +exports[`abis Computes a callstack item request hash 1`] = `"0x28cb4c264eb11e13c77a5e60b251a6b3edfb4cfed786c4f1ec5e1749fede9b78"`; exports[`abis Computes an empty nullifier hash 1`] = `"0x066e6cdc4a6ba5e4781deda650b0be6c12f975f064fc38df72c1060716759b17"`; @@ -10,41 +10,41 @@ exports[`abis Computes an empty sideeffect hash 1`] = `"0x27b1d0839a5b23baf12a8 exports[`abis compute public call stack item hash 1`] = ` Fr { - "asBigInt": 4942803204430729321299247114280769628204291639882373728884145897482860239103n, + "asBigInt": 6902726350534637945034037933577508446422215007904358955522461123516426791152n, "asBuffer": { "data": [ - 10, - 237, - 135, - 8, - 121, - 161, - 111, - 170, - 23, - 173, - 20, - 73, - 240, - 78, - 59, - 30, - 113, - 136, - 151, + 15, + 66, + 205, + 254, + 91, + 241, + 101, 117, - 250, - 42, - 35, - 186, - 162, - 159, - 250, - 242, - 152, - 210, + 214, + 154, + 136, + 128, + 223, + 11, + 120, + 249, + 245, + 174, + 102, + 132, + 69, + 153, + 88, + 179, + 36, + 144, + 98, + 110, 24, - 255, + 250, + 168, + 240, ], "type": "Buffer", }, diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 8b152bd43e1..ecc7dadc0d3 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -68,17 +68,17 @@ export const GET_NOTE_ORACLE_RETURN_LENGTH = 23; export const MAX_NOTES_PER_PAGE = 10; export const VIEW_NOTE_ORACLE_RETURN_LENGTH = 212; export const CALL_CONTEXT_LENGTH = 8; -export const GLOBAL_VARIABLES_LENGTH = 4; +export const GLOBAL_VARIABLES_LENGTH = 6; export const PARTIAL_STATE_REFERENCE_LENGTH = 8; export const STATE_REFERENCE_LENGTH = 10; -export const HEADER_LENGTH = 18; +export const HEADER_LENGTH = 20; export const FUNCTION_DATA_LENGTH = 4; export const CONTRACT_DEPLOYMENT_DATA_LENGTH = 6; -export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 205; -export const PRIVATE_CALL_STACK_ITEM_LENGTH = 210; +export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 207; +export const PRIVATE_CALL_STACK_ITEM_LENGTH = 212; export const CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH = 3; export const CONTRACT_STORAGE_READ_LENGTH = 2; -export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 201; +export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 203; export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; export const COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP = 2048; export const NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/header.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/header.test.ts.snap index 8a15a59ee84..035cc0c2eb6 100644 --- a/yarn-project/circuits.js/src/structs/__snapshots__/header.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/__snapshots__/header.test.ts.snap @@ -2,41 +2,41 @@ exports[`Header computes hash 1`] = ` Fr { - "asBigInt": 17991638921121681345555824161757346486368776085978982802127357651656088857262n, + "asBigInt": 17535834694933389587922737272908689289752880632518238306089028120587248314683n, "asBuffer": { "data": [ - 39, - 198, - 232, - 33, - 120, - 194, - 121, - 42, - 23, - 66, - 111, - 251, - 166, - 131, - 251, - 128, - 16, - 46, - 122, - 209, - 193, - 24, - 177, + 38, + 196, + 238, 67, - 172, - 91, - 198, - 153, - 236, - 93, + 20, + 47, + 99, + 167, + 32, + 178, + 243, + 109, + 29, + 247, 170, - 174, + 104, + 85, + 155, + 139, + 190, + 13, + 63, + 35, + 158, + 188, + 79, + 120, + 214, + 216, + 211, + 169, + 59, ], "type": "Buffer", }, diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap index 45e0e97a6c1..f62367ae0b2 100644 --- a/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap @@ -2,41 +2,41 @@ exports[`PrivateCallStackItem computes empty item hash 1`] = ` Fr { - "asBigInt": 2538825319674219123846958071590111740225106671201233263868844578355336664781n, + "asBigInt": 16401401954916832433283065433862370018073001873866502199869260036553314630448n, "asBuffer": { "data": [ - 5, - 156, - 236, + 36, + 66, + 221, + 82, + 28, + 89, + 152, + 122, + 66, + 145, + 190, + 15, + 209, + 17, 152, - 233, - 157, - 232, - 67, - 153, 229, - 27, - 168, - 75, + 164, + 216, + 124, + 139, 195, - 183, - 254, - 111, - 10, - 250, - 64, - 122, - 141, - 166, - 174, + 108, + 243, + 182, + 92, + 82, + 41, + 246, + 31, + 195, + 123, 48, - 176, - 125, - 64, - 205, - 67, - 86, - 205, ], "type": "Buffer", }, @@ -45,41 +45,41 @@ Fr { exports[`PrivateCallStackItem computes hash 1`] = ` Fr { - "asBigInt": 14128890724092381488704229567615295219923311195211320351016242351826479641614n, + "asBigInt": 8924010543578326968414877575305415789126162162868335105368505150715158785589n, "asBuffer": { "data": [ - 31, - 60, - 171, - 51, - 195, - 14, - 113, - 231, - 119, - 201, - 1, - 173, - 160, - 14, + 19, 186, - 38, - 104, - 235, - 90, - 76, - 0, + 207, + 155, + 248, + 108, + 56, + 16, + 128, + 141, + 109, + 87, + 227, + 142, + 122, + 152, + 115, 233, - 167, - 78, - 217, - 88, - 247, - 59, - 171, - 156, - 116, - 14, + 32, + 127, + 187, + 119, + 165, + 202, + 131, + 248, + 210, + 183, + 229, + 114, + 238, + 53, ], "type": "Buffer", }, diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap index e8483a05b8f..e007f7e33ba 100644 --- a/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap @@ -2,41 +2,41 @@ exports[`PrivateCircuitPublicInputs computes empty inputs hash 1`] = ` Fr { - "asBigInt": 6824057209889848950720806983702845586326390498491979749382334765343515317656n, + "asBigInt": 8602604202019666453463173528030293896439191623609170133298184805699713227441n, "asBuffer": { "data": [ - 15, - 22, - 71, - 141, - 193, - 115, - 28, - 148, - 11, + 19, 4, - 195, - 18, - 211, - 34, - 105, - 127, - 106, - 59, - 255, - 82, - 61, - 38, - 96, - 216, - 150, - 66, - 107, - 42, - 179, - 175, - 149, + 230, + 196, + 46, + 60, + 83, + 252, + 124, + 145, + 140, + 191, + 30, + 167, + 3, + 51, + 180, + 242, + 20, + 114, + 108, + 7, + 132, + 207, 152, + 120, + 205, + 100, + 25, + 103, + 218, + 177, ], "type": "Buffer", }, @@ -45,41 +45,41 @@ Fr { exports[`PrivateCircuitPublicInputs hash matches snapshot 1`] = ` Fr { - "asBigInt": 17965057432304162663609649222224826000756674060660466974194339783441351638025n, + "asBigInt": 19351089964096980494056318513856466386221181229656161151672216363848995383227n, "asBuffer": { "data": [ - 39, - 183, - 220, - 183, - 64, - 232, - 229, - 199, - 125, - 34, - 72, - 231, - 214, - 40, - 82, - 141, - 21, - 179, + 42, + 200, + 84, + 43, + 44, + 96, + 28, + 45, + 85, + 137, + 80, 158, - 65, - 218, - 196, - 233, - 228, - 61, - 55, - 62, - 71, - 106, - 218, - 252, - 9, + 101, + 170, + 198, + 188, + 188, + 85, + 139, + 179, + 189, + 19, + 207, + 145, + 180, + 105, + 57, + 5, + 241, + 123, + 39, + 187, ], "type": "Buffer", }, diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/public_call_stack_item.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/public_call_stack_item.test.ts.snap index 75ceefadf6b..24fe6a5e3f8 100644 --- a/yarn-project/circuits.js/src/structs/__snapshots__/public_call_stack_item.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/__snapshots__/public_call_stack_item.test.ts.snap @@ -2,41 +2,41 @@ exports[`PublicCallStackItem computes hash 1`] = ` Fr { - "asBigInt": 21083506383287217425295039971423278330073026042631744223709570040299661814284n, + "asBigInt": 19395696808724235586564354338261030411639537309350164360825567543448743585810n, "asBuffer": { "data": [ - 46, - 156, - 215, - 123, - 140, - 169, - 181, - 209, - 208, - 197, - 70, + 42, + 225, + 147, 74, - 61, - 112, - 87, - 194, - 89, - 68, - 53, - 181, - 239, - 169, - 58, - 168, - 66, + 255, + 117, + 70, + 214, + 242, + 250, 92, - 84, - 75, - 166, - 83, - 234, - 12, + 118, + 98, + 92, + 21, + 18, + 34, + 226, + 246, + 182, + 119, + 107, + 40, + 145, + 163, + 218, + 248, + 163, + 143, + 58, + 40, + 18, ], "type": "Buffer", }, diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/public_circuit_public_inputs.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/public_circuit_public_inputs.test.ts.snap index 574d36a8041..3c27ef02931 100644 --- a/yarn-project/circuits.js/src/structs/__snapshots__/public_circuit_public_inputs.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/__snapshots__/public_circuit_public_inputs.test.ts.snap @@ -2,41 +2,41 @@ exports[`PublicCircuitPublicInputs hash matches snapshot 1`] = ` Fr { - "asBigInt": 10987106036606499987406426170447920941391129891158672246363150499235953526428n, + "asBigInt": 18998488698478370909936348553101901315705060100426498604017308046889259543837n, "asBuffer": { "data": [ - 24, - 74, - 123, - 76, - 228, - 113, - 134, - 151, - 63, - 27, - 17, - 70, - 189, - 227, - 135, - 146, - 250, - 51, - 192, - 79, - 251, - 233, - 86, - 238, + 42, 0, - 176, - 100, - 200, - 210, - 134, - 70, - 156, + 195, + 119, + 87, + 116, + 9, + 251, + 84, + 111, + 49, + 221, + 110, + 21, + 211, + 9, + 191, + 82, + 247, + 169, + 39, + 25, + 140, + 78, + 50, + 138, + 231, + 209, + 33, + 158, + 173, + 29, ], "type": "Buffer", }, diff --git a/yarn-project/circuits.js/src/structs/global_variables.ts b/yarn-project/circuits.js/src/structs/global_variables.ts index fd33663ba6c..49ecf601b46 100644 --- a/yarn-project/circuits.js/src/structs/global_variables.ts +++ b/yarn-project/circuits.js/src/structs/global_variables.ts @@ -2,27 +2,25 @@ import { Fr } from '@aztec/foundation/fields'; import { BufferReader, FieldReader, serializeToBuffer, serializeToFields } from '@aztec/foundation/serialize'; import { FieldsOf } from '@aztec/foundation/types'; +import { AztecAddress, EthAddress } from './index.js'; + /** * Global variables of the L2 block. */ export class GlobalVariables { constructor( - /** - * ChainId for the L2 block. - */ + /** ChainId for the L2 block. */ public chainId: Fr, - /** - * version for the L2 block. - */ + /** Version for the L2 block. */ public version: Fr, - /** - * Block number of the L2 block. - */ + /** Block number of the L2 block. */ public blockNumber: Fr, - /** - * Timestamp of the L2 block. - */ + /** Timestamp of the L2 block. */ public timestamp: Fr, + /** Recipient of block reward. */ + public coinbase: EthAddress, + /** Address to receive fees. */ + public feeRecipient: AztecAddress, ) {} static from(fields: FieldsOf): GlobalVariables { @@ -30,7 +28,7 @@ export class GlobalVariables { } static empty(): GlobalVariables { - return new GlobalVariables(Fr.ZERO, Fr.ZERO, Fr.ZERO, Fr.ZERO); + return new GlobalVariables(Fr.ZERO, Fr.ZERO, Fr.ZERO, Fr.ZERO, EthAddress.ZERO, AztecAddress.ZERO); } static fromBuffer(buffer: Buffer | BufferReader): GlobalVariables { @@ -40,6 +38,8 @@ export class GlobalVariables { Fr.fromBuffer(reader), Fr.fromBuffer(reader), Fr.fromBuffer(reader), + reader.readObject(EthAddress), + reader.readObject(AztecAddress), ); } @@ -49,18 +49,34 @@ export class GlobalVariables { Fr.fromString(obj.version), Fr.fromString(obj.blockNumber), Fr.fromString(obj.timestamp), + EthAddress.fromString(obj.coinbase), + AztecAddress.fromString(obj.feeRecipient), ); } static fromFields(fields: Fr[] | FieldReader): GlobalVariables { const reader = FieldReader.asReader(fields); - return new GlobalVariables(reader.readField(), reader.readField(), reader.readField(), reader.readField()); + return new GlobalVariables( + reader.readField(), + reader.readField(), + reader.readField(), + reader.readField(), + EthAddress.fromField(reader.readField()), + AztecAddress.fromField(reader.readField()), + ); } static getFields(fields: FieldsOf) { // Note: The order here must match the order in the HeaderLib solidity library. - return [fields.chainId, fields.version, fields.blockNumber, fields.timestamp] as const; + return [ + fields.chainId, + fields.version, + fields.blockNumber, + fields.timestamp, + fields.coinbase, + fields.feeRecipient, + ] as const; } toBuffer() { @@ -77,10 +93,19 @@ export class GlobalVariables { version: this.version.toString(), blockNumber: this.blockNumber.toString(), timestamp: this.timestamp.toString(), + coinbase: this.coinbase.toString(), + feeRecipient: this.feeRecipient.toString(), }; } isEmpty(): boolean { - return this.chainId.isZero() && this.version.isZero() && this.blockNumber.isZero() && this.timestamp.isZero(); + return ( + this.chainId.isZero() && + this.version.isZero() && + this.blockNumber.isZero() && + this.timestamp.isZero() && + this.coinbase.isZero() && + this.feeRecipient.isZero() + ); } } diff --git a/yarn-project/circuits.js/src/tests/factories.ts b/yarn-project/circuits.js/src/tests/factories.ts index 88d5b7e2e13..6951e8ced19 100644 --- a/yarn-project/circuits.js/src/tests/factories.ts +++ b/yarn-project/circuits.js/src/tests/factories.ts @@ -766,9 +766,23 @@ export function makeContractDeploymentData(seed = 1) { */ export function makeGlobalVariables(seed = 1, blockNumber: number | undefined = undefined): GlobalVariables { if (blockNumber !== undefined) { - return new GlobalVariables(fr(seed), fr(seed + 1), fr(blockNumber), fr(seed + 3)); + return new GlobalVariables( + fr(seed), + fr(seed + 1), + fr(blockNumber), + fr(seed + 3), + EthAddress.fromField(fr(seed + 4)), + AztecAddress.fromField(fr(seed + 5)), + ); } - return new GlobalVariables(fr(seed), fr(seed + 1), fr(seed + 2), fr(seed + 3)); + return new GlobalVariables( + fr(seed), + fr(seed + 1), + fr(seed + 2), + fr(seed + 3), + EthAddress.fromField(fr(seed + 4)), + AztecAddress.fromField(fr(seed + 5)), + ); } /** diff --git a/yarn-project/end-to-end/src/integration_l1_publisher.test.ts b/yarn-project/end-to-end/src/integration_l1_publisher.test.ts index f147fccfd4b..ddac114d698 100644 --- a/yarn-project/end-to-end/src/integration_l1_publisher.test.ts +++ b/yarn-project/end-to-end/src/integration_l1_publisher.test.ts @@ -10,6 +10,7 @@ import { to2Fields, } from '@aztec/aztec.js'; import { + EthAddress, Header, KernelCircuitPublicInputs, MAX_NEW_COMMITMENTS_PER_TX, @@ -98,6 +99,9 @@ describe('L1Publisher integration', () => { const chainId = createEthereumChain(config.rpcUrl, config.apiKey).chainInfo.id; + let coinbase: EthAddress; + let feeRecipient: AztecAddress; + // To overwrite the test data, set this to true and run the tests. const OVERWRITE_TEST_DATA = false; @@ -149,6 +153,9 @@ describe('L1Publisher integration', () => { l1BlockPublishRetryIntervalMS: 100, }); + coinbase = config.coinbase || EthAddress.random(); + feeRecipient = config.feeRecipient || AztecAddress.random(); + prevHeader = await builderDb.buildInitialHeader(); }, 100_000); @@ -267,6 +274,8 @@ describe('L1Publisher integration', () => { chainId: Number(block.header.globalVariables.chainId.toBigInt()), timestamp: Number(block.header.globalVariables.timestamp.toBigInt()), version: Number(block.header.globalVariables.version.toBigInt()), + coinbase: `0x${block.header.globalVariables.coinbase.toBuffer().toString('hex').padStart(40, '0')}`, + feeRecipient: `0x${block.header.globalVariables.feeRecipient.toBuffer().toString('hex').padStart(64, '0')}`, }, lastArchive: { nextAvailableLeafIndex: block.header.lastArchive.nextAvailableLeafIndex, @@ -358,11 +367,14 @@ describe('L1Publisher integration', () => { await makeBloatedProcessedTx(totalNullifiersPerBlock * i + 3 * MAX_NEW_NULLIFIERS_PER_TX), await makeBloatedProcessedTx(totalNullifiersPerBlock * i + 4 * MAX_NEW_NULLIFIERS_PER_TX), ]; + const globalVariables = new GlobalVariables( new Fr(chainId), new Fr(config.version), new Fr(1 + i), new Fr(await rollup.read.lastBlockTs()), + coinbase, + feeRecipient, ); const [block] = await builder.buildL2Block(globalVariables, txs, l1ToL2Messages); prevHeader = block.header; @@ -440,11 +452,14 @@ describe('L1Publisher integration', () => { await makeEmptyProcessedTx(), await makeEmptyProcessedTx(), ]; + const globalVariables = new GlobalVariables( new Fr(chainId), new Fr(config.version), new Fr(1 + i), new Fr(await rollup.read.lastBlockTs()), + coinbase, + feeRecipient, ); const [block] = await builder.buildL2Block(globalVariables, txs, l1ToL2Messages); prevHeader = block.header; diff --git a/yarn-project/noir-contracts/contracts/test_contract/src/main.nr b/yarn-project/noir-contracts/contracts/test_contract/src/main.nr index 86bf71c1eb6..f2eaa8511c6 100644 --- a/yarn-project/noir-contracts/contracts/test_contract/src/main.nr +++ b/yarn-project/noir-contracts/contracts/test_contract/src/main.nr @@ -298,6 +298,16 @@ contract Test { storage.example_constant.initialize(&mut note, false); } + #[aztec(public)] + fn assert_coinbase(coinbase: EthAddress) { + assert(context.coinbase().eq(coinbase), "Invalid coinbase"); + } + + #[aztec(public)] + fn assert_fee_recipient(fee_recipient: AztecAddress) { + assert(context.fee_recipient().eq(fee_recipient), "Invalid fee recipient"); + } + unconstrained fn get_constant() -> pub Field { let constant = storage.example_constant.view_note(); constant.value diff --git a/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap b/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap index 78653a5be4d..881893d19b6 100644 --- a/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap +++ b/yarn-project/noir-protocol-circuits/src/__snapshots__/index.test.ts.snap @@ -6,9 +6,9 @@ exports[`Noir compatibility tests (interop_testing.nr) Address matches Noir 1`] exports[`Noir compatibility tests (interop_testing.nr) ComputeContractAddressFromPartial matches Noir 1`] = `"0x0b487ff2900ae1178e131bfe333fdbc351beef658f7c0d62db2801429b1aab75"`; -exports[`Noir compatibility tests (interop_testing.nr) Public call stack item matches noir 1`] = `"0x037cb5ba672a7c461e23cf22ae618757ab4f1a912f3fdc93b2b2800cfe57bb91"`; +exports[`Noir compatibility tests (interop_testing.nr) Public call stack item matches noir 1`] = `"0x17095bbb9e3e104dc520b6eec9338e9b6ce1fdc0f3a66b06d5ca90b15909ad0e"`; -exports[`Noir compatibility tests (interop_testing.nr) Public call stack item request matches noir 1`] = `"0x2c36008a759d932a3a1986429aa295e2c2d4e62c33197a7d259750d29347bf30"`; +exports[`Noir compatibility tests (interop_testing.nr) Public call stack item request matches noir 1`] = `"0x28cb4c264eb11e13c77a5e60b251a6b3edfb4cfed786c4f1ec5e1749fede9b78"`; exports[`Noir compatibility tests (interop_testing.nr) Public key hash matches Noir 1`] = `"0x1923a6246e305720b6aaf751fde0342613e93c82e455c3831e28375c16dd40d8"`; @@ -33420,85 +33420,87 @@ KernelCircuitPublicInputs { "historicalHeader": Header { "bodyHash": { "data": [ - 226, - 155, + 159, + 85, + 183, 206, - 240, - 212, - 33, - 236, - 174, - 118, - 210, - 195, - 131, + 13, + 23, + 12, 202, - 51, - 119, + 197, + 140, + 47, + 92, + 9, + 188, + 253, + 203, + 219, + 179, 240, - 112, - 68, - 243, - 31, - 187, - 68, - 21, - 106, - 207, - 62, - 106, + 101, 223, - 13, - 212, - 147, - 206, + 238, + 8, + 189, + 166, + 66, + 94, + 255, + 22, + 54, + 119, + 234, ], "type": "Buffer", }, "globalVariables": { "blockNumber": "0x0000000000000000000000000000000000000000000000000000000000000003", "chainId": "0x0000000000000000000000000000000000000000000000000000000000007a69", - "timestamp": "0x0000000000000000000000000000000000000000000000000000000065c25bf9", + "coinbase": "0x0000000000000000000000000000000000000000", + "feeRecipient": "0x0000000000000000000000000000000000000000000000000000000000000000", + "timestamp": "0x0000000000000000000000000000000000000000000000000000000065c3664a", "version": "0x0000000000000000000000000000000000000000000000000000000000000001", }, "lastArchive": AppendOnlyTreeSnapshot { "nextAvailableLeafIndex": 3, "root": Fr { - "asBigInt": 2356039295687139015515052103456972011241139570045040511446633262136772655990n, + "asBigInt": 9752526175035743725085774589356567288560289124217882264770841888953305498367n, "asBuffer": { "data": [ - 5, - 53, - 120, - 146, - 119, - 222, - 147, - 0, - 46, - 235, - 135, + 21, + 143, + 187, + 244, + 187, + 88, + 251, + 160, + 76, + 10, + 203, + 21, + 241, + 83, + 71, + 196, + 139, + 62, + 166, + 128, 248, - 111, - 8, - 50, - 105, - 8, + 215, + 218, + 226, + 187, + 30, + 59, + 12, + 75, 225, - 118, - 34, - 205, - 35, - 216, - 118, - 240, - 179, - 214, - 234, - 89, - 161, - 251, - 118, + 130, + 255, ], "type": "Buffer", }, @@ -33552,41 +33554,41 @@ KernelCircuitPublicInputs { "contractTree": AppendOnlyTreeSnapshot { "nextAvailableLeafIndex": 6, "root": Fr { - "asBigInt": 13310707597419035065615757357473197342611148712097627899375823013993445030558n, + "asBigInt": 1615603088022677818890278836908782753125220652207319187619222416535409782483n, "asBuffer": { "data": [ - 29, - 109, - 151, - 240, - 231, - 74, - 198, - 165, - 15, + 3, + 146, 102, - 142, - 96, - 103, - 72, - 117, - 240, - 31, - 25, - 169, - 57, - 24, - 198, - 179, - 218, - 200, - 68, - 234, - 116, + 33, + 28, + 147, + 252, + 76, + 143, + 201, + 189, + 110, + 139, + 224, + 38, + 79, + 86, + 59, + 12, + 111, 14, + 249, + 39, + 210, + 172, + 29, + 46, + 118, + 173, + 241, + 238, 211, - 122, - 158, ], "type": "Buffer", }, @@ -33595,41 +33597,41 @@ KernelCircuitPublicInputs { "noteHashTree": AppendOnlyTreeSnapshot { "nextAvailableLeafIndex": 384, "root": Fr { - "asBigInt": 5881597421550553642551254266278714128567889771379414237970879445250226686264n, + "asBigInt": 8025063940971333475794771983566777251236321183295948316041170713437994278029n, "asBuffer": { "data": [ - 13, - 0, - 221, - 189, - 81, - 158, - 147, - 81, - 168, - 59, - 81, - 78, - 132, - 162, - 85, - 133, - 169, + 17, + 190, + 6, + 117, + 75, + 140, + 35, + 43, + 139, + 173, 157, - 66, - 159, - 162, - 172, - 50, - 217, - 15, + 218, + 53, + 234, 11, - 180, - 209, - 156, - 50, - 137, - 56, + 200, + 32, + 49, + 144, + 145, + 133, + 123, + 13, + 98, + 225, + 46, + 88, + 97, + 142, + 140, + 220, + 141, ], "type": "Buffer", }, @@ -33638,41 +33640,41 @@ KernelCircuitPublicInputs { "nullifierTree": AppendOnlyTreeSnapshot { "nextAvailableLeafIndex": 512, "root": Fr { - "asBigInt": 12793781641289273487192033522700959532088523351349979118382020762118405260877n, + "asBigInt": 18048048738552584986776596366964943842863658371345218458771486548382455209761n, "asBuffer": { "data": [ + 39, + 230, + 213, + 101, + 227, + 179, + 100, + 70, + 49, + 60, + 205, 28, - 73, - 6, - 23, - 139, - 81, - 254, - 47, - 95, - 3, - 77, - 232, - 115, - 66, - 163, - 85, - 224, + 44, + 191, + 212, + 245, + 244, + 198, + 102, + 146, 255, - 207, - 65, - 154, - 223, - 57, - 186, - 184, - 243, - 61, - 52, - 132, - 76, - 134, - 77, + 38, + 25, + 187, + 138, + 42, + 230, + 204, + 252, + 180, + 159, + 33, ], "type": "Buffer", }, @@ -39691,41 +39693,41 @@ KernelCircuitPublicInputs { }, }, "value": Fr { - "asBigInt": 21462028218275348474166315885996085666900539976402407943537659259051738336980n, + "asBigInt": 7282259706960784487808381312888935962471943947178183177649973507966566928562n, "asBuffer": { "data": [ - 47, - 115, - 19, - 214, + 16, + 25, + 156, + 232, + 245, + 169, 188, - 10, - 195, - 45, - 52, - 248, - 190, - 39, - 40, - 22, - 71, + 68, 47, - 60, - 12, - 154, - 251, - 184, - 52, - 37, - 85, - 198, - 189, - 221, - 39, - 208, - 247, - 14, - 212, + 55, + 174, + 23, + 5, + 152, + 169, + 188, + 144, + 209, + 126, + 173, + 171, + 101, + 129, + 119, + 156, + 150, + 118, + 160, + 229, + 96, + 16, + 178, ], "type": "Buffer", }, @@ -66183,6 +66185,8 @@ KernelCircuitPublicInputsFinal { "globalVariables": { "blockNumber": "0x0000000000000000000000000000000000000000000000000000000000000000", "chainId": "0x0000000000000000000000000000000000000000000000000000000000000000", + "coinbase": "0x0000000000000000000000000000000000000000", + "feeRecipient": "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp": "0x0000000000000000000000000000000000000000000000000000000000000000", "version": "0x0000000000000000000000000000000000000000000000000000000000000000", }, @@ -66492,121 +66496,121 @@ KernelCircuitPublicInputsFinal { }, "contractDeploymentData": ContractDeploymentData { "contractAddressSalt": Fr { - "asBigInt": 2229944173611539386748688060295171957471685810517941468073132178706528087049n, + "asBigInt": 8544187673238214496875689801072975260441235376307404116118545893620678068134n, "asBuffer": { "data": [ - 4, - 238, - 26, - 138, - 113, - 202, - 108, - 199, - 172, - 69, - 151, - 150, - 218, - 193, - 15, - 254, - 17, - 120, - 126, - 189, - 103, - 162, - 208, - 108, - 157, - 82, - 175, - 36, - 222, + 18, + 227, + 214, + 190, + 179, + 184, + 32, + 236, + 95, + 177, + 241, + 1, + 66, + 60, + 85, + 200, + 245, + 86, 126, - 44, - 9, + 178, + 106, + 140, + 252, + 158, + 152, + 125, + 198, + 171, + 102, + 67, + 7, + 166, ], "type": "Buffer", }, }, "contractClassId": Fr { - "asBigInt": 16061473930610581167684781171829502434881265923087376216179229063118530681764n, + "asBigInt": 20318996550496802327349100477480582836618155623061410223552429946501110360663n, "asBuffer": { "data": [ - 35, - 130, - 120, - 218, + 44, 236, - 222, + 36, + 253, + 207, + 26, + 31, + 209, + 233, + 127, + 255, + 232, + 195, + 50, + 123, + 34, + 129, + 11, + 26, + 168, 32, - 246, - 97, - 51, - 148, - 7, - 94, - 67, - 170, - 200, - 226, - 165, - 229, - 137, - 8, - 157, - 254, - 55, - 84, 113, - 7, - 249, - 69, - 22, - 27, - 164, + 14, + 68, + 174, + 117, + 122, + 165, + 86, + 26, + 234, + 87, ], "type": "Buffer", }, }, "initializationHash": Fr { - "asBigInt": 13297538489681764113564327850516313074157190899835326912076235997542103124196n, + "asBigInt": 6600580131458695080962047164752478972501673508240453898175734878301388714873n, "asBuffer": { "data": [ - 29, - 102, - 35, - 219, - 140, - 159, - 34, - 254, - 137, - 100, - 207, - 115, - 165, - 236, - 205, + 14, + 151, + 203, + 196, + 55, + 149, 8, - 140, - 30, - 132, - 242, - 123, - 97, - 152, - 156, - 235, - 11, + 67, + 56, + 209, + 46, + 10, + 24, + 151, + 247, + 18, + 238, + 154, + 181, + 182, + 204, + 150, + 56, + 122, + 175, + 17, + 0, 218, - 224, - 234, - 156, - 8, - 228, + 171, + 6, + 179, + 121, ], "type": "Buffer", }, @@ -66641,81 +66645,81 @@ KernelCircuitPublicInputsFinal { "publicKey": Point { "kind": "point", "x": Fr { - "asBigInt": 7932363571421633674445147058855558265318774166284496025057279653395516372804n, + "asBigInt": 20997482654787910730197747092201115844022981028868354477774601720044462620106n, "asBuffer": { "data": [ - 17, - 137, - 143, - 5, - 124, + 46, + 108, + 39, + 110, + 30, + 244, + 117, + 95, + 111, + 218, + 20, + 52, + 36, + 88, + 93, + 125, + 219, + 128, + 24, + 222, + 151, + 139, + 26, + 252, + 149, 110, - 103, - 155, - 113, - 35, - 176, - 229, - 171, - 141, - 231, - 83, 225, - 73, - 1, - 68, - 140, - 169, - 185, - 230, - 35, - 158, - 124, - 21, - 230, - 224, - 55, - 68, + 121, + 106, + 229, + 61, + 202, ], "type": "Buffer", }, }, "y": Fr { - "asBigInt": 15024892828127032800348115046995345316752369940031238602791540620049972410017n, + "asBigInt": 6258622076684102244410764244812736056447073443302722047654973743467608943788n, "asBuffer": { "data": [ - 33, - 55, - 201, - 184, - 234, - 66, - 194, - 58, - 47, - 200, - 209, - 186, - 167, - 72, - 150, - 184, + 13, + 214, + 65, + 43, + 4, + 67, + 3, + 109, 76, - 25, - 152, - 78, - 37, - 130, - 86, - 85, - 232, - 255, + 124, + 154, + 101, + 221, + 147, + 138, + 31, + 47, + 182, + 162, + 253, 218, - 82, - 181, - 75, - 54, - 161, + 27, + 113, + 98, + 146, + 153, + 166, + 0, + 84, + 8, + 44, + 172, ], "type": "Buffer", }, @@ -66810,7 +66814,7 @@ KernelCircuitPublicInputsFinal { }, "encryptedLogsHash": [ Fr { - "asBigInt": 61395152145559455031748913980611625765n, + "asBigInt": 217294884204978999010662201700087440481n, "asBuffer": { "data": [ 0, @@ -66829,28 +66833,28 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 46, - 48, - 70, - 180, - 195, - 126, - 51, - 138, - 176, - 130, + 163, + 121, + 120, + 240, + 220, + 129, + 191, + 21, + 133, + 27, + 226, 103, - 114, - 16, - 42, - 3, - 37, + 77, + 167, + 36, + 97, ], "type": "Buffer", }, }, Fr { - "asBigInt": 133873236767238353010977483010260601472n, + "asBigInt": 18076537616370845041336398629891292698n, "asBuffer": { "data": [ 0, @@ -66869,22 +66873,22 @@ KernelCircuitPublicInputsFinal { 0, 0, 0, - 100, - 183, - 12, - 43, - 219, - 108, - 186, - 45, - 20, - 215, - 160, + 13, + 153, + 106, + 29, + 60, + 171, + 123, + 125, + 198, + 243, + 2, + 36, + 92, + 189, 62, - 187, - 24, - 10, - 128, + 26, ], "type": "Buffer", }, @@ -66933,41 +66937,41 @@ KernelCircuitPublicInputsFinal { }, }, "value": Fr { - "asBigInt": 21633517783240233469588247702882455469415240494056186720857664120174467262878n, + "asBigInt": 5687726767847307777652513305038358951349254332784681292588121100857341339419n, "asBuffer": { "data": [ - 47, - 212, + 12, + 147, 35, - 28, - 57, - 219, - 99, - 48, - 17, - 153, - 66, - 38, - 117, - 249, - 96, - 24, - 169, - 104, - 62, - 4, - 208, - 222, - 39, - 165, - 64, - 92, - 254, - 134, - 105, - 14, - 169, - 158, + 167, + 27, + 119, + 44, + 190, + 133, + 195, + 47, + 204, + 238, + 51, + 148, + 114, + 83, + 239, + 180, + 149, + 110, + 180, + 235, + 90, + 51, + 190, + 155, + 155, + 193, + 3, + 103, + 27, ], "type": "Buffer", }, @@ -72143,81 +72147,81 @@ KernelCircuitPublicInputsFinal { "newContracts": [ NewContractData { "contractAddress": AztecAddress { - "asBigInt": 13208266457040883033817784285276386057267051820784986258168648346476394153696n, + "asBigInt": 1831798284757241565498321533262051709180765196304645465118411086287998816179n, "asBuffer": { "data": [ - 29, - 51, - 157, - 39, - 210, - 224, - 226, - 216, - 135, - 249, - 112, - 249, - 13, - 98, - 249, - 248, - 62, - 50, - 62, - 178, - 119, - 104, - 216, + 4, + 12, + 194, 214, - 103, - 60, - 22, - 71, - 57, - 185, - 134, + 165, + 122, + 158, + 215, + 13, 224, + 91, + 168, + 56, + 243, + 98, + 55, + 176, + 253, + 137, + 164, + 69, + 75, + 213, + 118, + 156, + 252, + 183, + 10, + 181, + 236, + 15, + 179, ], "type": "Buffer", }, }, "contractClassId": Fr { - "asBigInt": 16061473930610581167684781171829502434881265923087376216179229063118530681764n, + "asBigInt": 20318996550496802327349100477480582836618155623061410223552429946501110360663n, "asBuffer": { "data": [ - 35, - 130, - 120, - 218, + 44, 236, - 222, + 36, + 253, + 207, + 26, + 31, + 209, + 233, + 127, + 255, + 232, + 195, + 50, + 123, + 34, + 129, + 11, + 26, + 168, 32, - 246, - 97, - 51, - 148, - 7, - 94, - 67, - 170, - 200, - 226, - 165, - 229, - 137, - 8, - 157, - 254, - 55, - 84, 113, - 7, - 249, - 69, - 22, - 27, - 164, + 14, + 68, + 174, + 117, + 122, + 165, + 86, + 26, + 234, + 87, ], "type": "Buffer", }, @@ -72416,41 +72420,41 @@ KernelCircuitPublicInputsFinal { }, }, "value": Fr { - "asBigInt": 9957915337278563377876292159962480674170276582358597995635316592662822299548n, + "asBigInt": 16237374074162232692992102035008756777370701254183033524986273046870900987732n, "asBuffer": { "data": [ - 22, - 3, - 250, - 248, - 43, - 171, - 76, - 95, - 48, - 25, - 167, - 180, - 127, - 74, - 213, - 2, - 194, - 111, - 153, - 111, - 140, - 29, - 114, - 37, - 33, - 119, + 35, + 230, + 7, + 45, + 222, + 115, + 134, + 129, + 102, + 89, + 8, + 196, + 157, + 42, + 30, + 13, + 54, + 136, + 210, + 235, + 92, + 104, + 168, + 45, + 252, + 4, + 158, + 62, + 50, 189, + 215, 84, - 87, - 240, - 167, - 156, ], "type": "Buffer", }, @@ -72538,41 +72542,41 @@ KernelCircuitPublicInputsFinal { }, }, "value": Fr { - "asBigInt": 6553679217156529351707140030685062423424860876489623715743878114999314312712n, + "asBigInt": 14002679916261727689081875718994679854936244053750127743046108247853910743517n, "asBuffer": { "data": [ - 14, - 125, - 64, + 30, + 245, + 60, + 104, + 183, + 13, + 170, + 97, + 250, + 71, 64, - 158, - 124, - 228, - 234, - 160, - 117, - 165, - 143, - 76, - 198, - 5, - 172, - 127, - 229, - 171, + 199, + 29, + 67, + 131, + 106, + 139, + 122, 81, - 74, - 70, - 196, - 45, - 162, - 58, - 161, - 205, - 17, - 46, - 110, - 8, + 25, + 106, + 56, + 244, + 168, + 15, + 151, + 65, + 68, + 133, + 100, + 89, + 221, ], "type": "Buffer", }, @@ -72660,41 +72664,41 @@ KernelCircuitPublicInputsFinal { }, }, "value": Fr { - "asBigInt": 6290406505961039695103487317681863282965567629134639187749611604833811680014n, + "asBigInt": 20063831460273291822483770412375973880544120500842596637227885402045466007231n, "asBuffer": { "data": [ - 13, - 232, - 62, - 113, - 5, - 184, - 163, - 76, - 117, - 5, - 33, - 29, - 10, - 251, - 65, - 4, - 56, - 9, - 22, - 240, - 231, - 20, - 153, - 213, - 169, - 15, - 75, + 44, + 91, + 185, + 230, + 150, + 136, + 35, 145, - 11, - 181, - 203, - 14, + 117, + 51, + 221, + 146, + 176, + 211, + 6, + 108, + 71, + 82, + 112, + 132, + 74, + 183, + 132, + 61, + 180, + 182, + 132, + 227, + 105, + 51, + 214, + 191, ], "type": "Buffer", }, diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/global_variables.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/global_variables.nr index d84fccb7417..c7d9ef97d10 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/global_variables.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/global_variables.nr @@ -1,5 +1,9 @@ use dep::std::cmp::Eq; use crate::{ + address::{ + AztecAddress, + EthAddress, + }, constants::{ GENERATOR_INDEX__GLOBAL_VARIABLES, GLOBAL_VARIABLES_LENGTH, @@ -17,6 +21,8 @@ struct GlobalVariables { version : Field, block_number : Field, timestamp : Field, + coinbase : EthAddress, + fee_recipient : AztecAddress, } impl Serialize for GlobalVariables { @@ -25,7 +31,9 @@ impl Serialize for GlobalVariables { self.chain_id, self.version, self.block_number, - self.timestamp + self.timestamp, + self.coinbase.to_field(), + self.fee_recipient.to_field(), ] } } @@ -37,6 +45,8 @@ impl Deserialize for GlobalVariables { version: serialized[1], block_number: serialized[2], timestamp: serialized[3], + coinbase: EthAddress::from_field(serialized[4]), + fee_recipient: AztecAddress::from_field(serialized[5]), } } } @@ -46,7 +56,9 @@ impl Eq for GlobalVariables { (self.chain_id == other.chain_id) & (self.version == other.version) & (self.block_number == other.block_number) & - (self.timestamp == other.timestamp) + (self.timestamp == other.timestamp) & + (self.coinbase == other.coinbase) & + (self.fee_recipient == other.fee_recipient) } } @@ -57,6 +69,8 @@ impl Empty for GlobalVariables { version: 0, block_number: 0, timestamp: 0, + coinbase: EthAddress::empty(), + fee_recipient: AztecAddress::empty(), } } } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_call_stack_item.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_call_stack_item.nr index df6bcc0ec47..3ecdebed3b4 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_call_stack_item.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_call_stack_item.nr @@ -87,5 +87,5 @@ fn empty_hash() { let hash = item.hash(); // Value from private_call_stack_item.test.ts "computes empty item hash" test - assert_eq(hash, 0x059cec98e99de84399e51ba84bc3b7fe6f0afa407a8da6ae30b07d40cd4356cd); + assert_eq(hash, 0x2442dd521c59987a4291be0fd11198e5a4d87c8bc36cf3b65c5229f61fc37b30); } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr index 512d912bee1..af410cef81c 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr @@ -185,5 +185,5 @@ fn empty_hash() { let hash = inputs.hash(); // Value from private_circuit_public_inputs.test.ts "computes empty item hash" test - assert_eq(hash, 0x0f16478dc1731c940b04c312d322697f6a3bff523d2660d896426b2ab3af9598); + assert_eq(hash, 0x1304e6c42e3c53fc7c918cbf1ea70333b4f214726c0784cf9878cd641967dab1); } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr index de0acabf6d9..c9483669b1c 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr @@ -122,21 +122,21 @@ global MAX_NOTES_PER_PAGE: Field = 10; // VIEW_NOTE_ORACLE_RETURN_LENGTH = MAX_NOTES_PER_PAGE * (MAX_NOTE_FIELDS_LENGTH + 1) + 2; global VIEW_NOTE_ORACLE_RETURN_LENGTH: Field = 212; global CALL_CONTEXT_LENGTH: Field = 8; -global GLOBAL_VARIABLES_LENGTH: Field = 4; +global GLOBAL_VARIABLES_LENGTH: Field = 6; global PARTIAL_STATE_REFERENCE_LENGTH: Field = 8; global STATE_REFERENCE_LENGTH: Field = 10; // 2 for snap + 8 for partial -global HEADER_LENGTH: Field = 18; // 2 for last_archive, 2 for body hash, 10 for state reference, 4 for global vars +global HEADER_LENGTH: Field = 20; // 2 for last_archive, 2 for body hash, 10 for state reference, 6 for global vars global FUNCTION_DATA_LENGTH: Field = 4; global CONTRACT_DEPLOYMENT_DATA_LENGTH: Field = 6; // Change this ONLY if you have changed the PrivateCircuitPublicInputs structure. // In other words, if the structure/size of the public inputs of a function call changes then we should change this // constant as well PRIVATE_CALL_STACK_ITEM_LENGTH -global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 205; -global PRIVATE_CALL_STACK_ITEM_LENGTH: Field = 210; +global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 207; +global PRIVATE_CALL_STACK_ITEM_LENGTH: Field = 212; global CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH: Field = 3; global CONTRACT_STORAGE_READ_LENGTH: Field = 2; // Change this ONLY if you have changed the PublicCircuitPublicInputs structure. -global PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 201; +global PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 203; global GET_NOTES_ORACLE_RETURN_LENGTH: Field = 674; global COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048; global NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048; diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/interop_testing.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/interop_testing.nr index 205e8bf2403..02d54fa075d 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/interop_testing.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/interop_testing.nr @@ -129,7 +129,7 @@ fn compute_call_stack_item_request_hash() { let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: true, function_data }; // Value from abis.test.ts "Computes a callstack item request hash" test - assert_eq(call_stack_item.hash(), 0x2c36008a759d932a3a1986429aa295e2c2d4e62c33197a7d259750d29347bf30); + assert_eq(call_stack_item.hash(), 0x28cb4c264eb11e13c77a5e60b251a6b3edfb4cfed786c4f1ec5e1749fede9b78); } #[test] @@ -146,5 +146,5 @@ fn compute_call_stack_item_hash() { let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: false, function_data }; // Value from abis.test.ts "Computes a callstack item hash" test - assert_eq(call_stack_item.hash(), 0x037cb5ba672a7c461e23cf22ae618757ab4f1a912f3fdc93b2b2800cfe57bb91); + assert_eq(call_stack_item.hash(), 0x17095bbb9e3e104dc520b6eec9338e9b6ce1fdc0f3a66b06d5ca90b15909ad0e); } diff --git a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures.nr b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures.nr index 6fef627310d..32b29b89d48 100644 --- a/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures.nr +++ b/yarn-project/noir-protocol-circuits/src/crates/types/src/tests/fixtures.nr @@ -9,7 +9,10 @@ use crate::{ append_only_tree_snapshot::AppendOnlyTreeSnapshot, global_variables::GlobalVariables, }, - address::AztecAddress, + address::{ + AztecAddress, + EthAddress, + }, constants::NUM_FIELDS_PER_SHA256, grumpkin_point::GrumpkinPoint, header::Header, @@ -27,6 +30,16 @@ fn empty_append_only_tree() -> AppendOnlyTreeSnapshot { AppendOnlyTreeSnapshot::zero() } +// Workaround for https://github.com/noir-lang/noir/issues/1440 +fn empty_eth_address() -> EthAddress { + EthAddress::empty() +} + +// Workaround for https://github.com/noir-lang/noir/issues/1440 +fn empty_aztec_address() -> AztecAddress { + AztecAddress::empty() +} + global HEADER = Header { last_archive: empty_append_only_tree(), body_hash: [0; NUM_FIELDS_PER_SHA256], @@ -49,6 +62,8 @@ global HEADER = Header { chain_id: 0, version: 0, block_number: 0, - timestamp: 0 + timestamp: 0, + coinbase: empty_eth_address(), + fee_recipient: empty_aztec_address(), } }; diff --git a/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-init.hex b/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-init.hex index e960e1beca2..3e6eb1d27c7 100644 --- a/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-init.hex +++ b/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-init.hex @@ -1 +1 @@ -1d339d27d2e0e2d887f970f90d62f9f83e323eb27768d8d6673c164739b986e0af9f8c440001011127f66f4404b5cbe6071a02eb38a7cfddc50462bf41ceceae2d6d6c975ab37700000111898f057c6e679b7123b0e5ab8de753e14901448ca9b9e6239e7c15e6e037442137c9b8ea42c23a2fc8d1baa74896b84c19984e25825655e8ffda52b54b36a11d6623db8c9f22fe8964cf73a5eccd088c1e84f27b61989ceb0bdae0ea9c08e4238278daecde20f6613394075e43aac8e2a5e589089dfe37547107f945161ba404ee1a8a71ca6cc7ac459796dac10ffe11787ebd67a2d06c9d52af24de7e2c0900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000011d339d27d2e0e2d887f970f90d62f9f83e323eb27768d8d6673c164739b986e0af9f8c4400010100000000000000000000000000000000000000000000000000000000000000001d339d27d2e0e2d887f970f90d62f9f83e323eb27768d8d6673c164739b986e00000000000000000000000000000000000000000af9f8c44000001000000021127f66f4404b5cbe6071a02eb38a7cfddc50462bf41ceceae2d6d6c975ab3770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000170a7d623b6e0f9dd1916c78db025d83422d7a51acf23d70d781bed48253153000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003579f468b2283611cc4d7adfbb93b8a4815d93ac0b1e1d11dace012cf73c7aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000fea30dd6de83be2f7ad25869cc5cb92700000000000000000000000000000000ad4ac00f474a9fe790acaf314a97f6a000000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b85500000000000000000000000000000000000000000000000000000000000000f8000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000000016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000000000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000000801864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f80000000001ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011898f057c6e679b7123b0e5ab8de753e14901448ca9b9e6239e7c15e6e037442137c9b8ea42c23a2fc8d1baa74896b84c19984e25825655e8ffda52b54b36a11d6623db8c9f22fe8964cf73a5eccd088c1e84f27b61989ceb0bdae0ea9c08e4238278daecde20f6613394075e43aac8e2a5e589089dfe37547107f945161ba404ee1a8a71ca6cc7ac459796dac10ffe11787ebd67a2d06c9d52af24de7e2c0900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f074b416fa89e18c29673f984f8e3d9ad17b5b0fc152870adc74c5c5801ac31f30d25fa822694702e2d580b29c64ee1fcdb8480424f588a5fe0505cfaf84081b82dfe96e167602661142e35e11ad950c21b03a6943a67094960e795a195cd76390dfa6aeb5dfbbda827cbfebc824e1feda8705c02ace48d9a2915a713ea566c0200000000000000000000000000000000000000000000000000000000000000010aa9f47e5c69d21b78461a62b4013fd65fbebbc432d73418c00d9ab6c9eca3b01fd163e98c3058b28c0c78a7cea427a8d86699c79c4cf9eeeeca2dc63288c0850bcd1f91cf7bdd471d0a30c58c4706f3fdab3807a954b8f5b5e3bfec87d001bb06e62084ee7b602fe9abc15632dda3269f56fb0c6e12519a2eb2ec897091919d03c9e2e67178ac638746f068907e6677b4cc7a9592ef234ab6ab518f17efffa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file +040cc2d6a57a9ed70de05ba838f36237b0fd89a4454bd5769cfcb70ab5ec0fb3af9f8c4400010121b1c1ca29347a3254124b9216286785fdd33dace59259171c4089d9ffbdbd270000012e6c276e1ef4755f6fda143424585d7ddb8018de978b1afc956ee1796ae53dca0dd6412b0443036d4c7c9a65dd938a1f2fb6a2fdda1b71629299a60054082cac0e97cbc43795084338d12e0a1897f712ee9ab5b6cc96387aaf1100daab06b3792cec24fdcf1a1fd1e97fffe8c3327b22810b1aa820710e44ae757aa5561aea5712e3d6beb3b820ec5fb1f101423c55c8f5567eb26a8cfc9e987dc6ab664307a600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001040cc2d6a57a9ed70de05ba838f36237b0fd89a4454bd5769cfcb70ab5ec0fb3af9f8c440001010000000000000000000000000000000000000000000000000000000000000000040cc2d6a57a9ed70de05ba838f36237b0fd89a4454bd5769cfcb70ab5ec0fb30000000000000000000000000000000000000000af9f8c440000010000000221b1c1ca29347a3254124b9216286785fdd33dace59259171c4089d9ffbdbd270000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002530185880beedb8ee97b73fd3666b376718e78beea3f78742b4294afa8b01ef000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003579f468b2283611cc4d7adfbb93b8a4815d93ac0b1e1d11dace012cf73c7aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000976da036df69fa00cec8d680da9f5a6300000000000000000000000000000000eea86c0568e1387b12350a1c0448259000000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b85500000000000000000000000000000000000000000000000000000000000000f8000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000000016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000000000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000000801864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f80000000001ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e0000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e6c276e1ef4755f6fda143424585d7ddb8018de978b1afc956ee1796ae53dca0dd6412b0443036d4c7c9a65dd938a1f2fb6a2fdda1b71629299a60054082cac0e97cbc43795084338d12e0a1897f712ee9ab5b6cc96387aaf1100daab06b3792cec24fdcf1a1fd1e97fffe8c3327b22810b1aa820710e44ae757aa5561aea5712e3d6beb3b820ec5fb1f101423c55c8f5567eb26a8cfc9e987dc6ab664307a600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f074b416fa89e18c29673f984f8e3d9ad17b5b0fc152870adc74c5c5801ac31f31bc721bc000c16e8575c68feb6c44f9d89a0f23e68c670ebd2d4d788ac467bfc011f21c18bcebe74fda4dc4a0fd15c50696b43f7868d41b027ab1c06743f50840ee9d7a447d0cb6a57761b930d1a293d4e5e6df49dfa23fd4dd794efc888dbc700000000000000000000000000000000000000000000000000000000000000010aa9f47e5c69d21b78461a62b4013fd65fbebbc432d73418c00d9ab6c9eca3b01fd163e98c3058b28c0c78a7cea427a8d86699c79c4cf9eeeeca2dc63288c0850bcd1f91cf7bdd471d0a30c58c4706f3fdab3807a954b8f5b5e3bfec87d001bb06e62084ee7b602fe9abc15632dda3269f56fb0c6e12519a2eb2ec897091919d03c9e2e67178ac638746f068907e6677b4cc7a9592ef234ab6ab518f17efffa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file diff --git a/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-inner.hex b/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-inner.hex index 738f7ab1ad0..8711bb89289 100644 --- a/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-inner.hex +++ b/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-inner.hex @@ -1 +1 @@ -0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000001000000bd300000bd400000bd500000bd600000bd700000bd800000bd900000bda00000bdb00000bdc00000bdd00000bde00000bdf00000be000000be100000be200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f7313d6bc0ac32d34f8be272816472f3c0c9afbb8342555c6bddd27d0f70ed4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002b94f680a7e3c35d82a77ce50d7bec9c0954c4dc516d930c5088c0fc271eaf120812786884da1ba4af0012e2beab6aebf0dad35bde8ae6da4d8678d47774e1ea00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d3735899d9fa7162447ca631f0ba2cd500000000000000000000000000000000eb57d0965a756d78291da33072610eb200000000000000000000000000000000d3735899d9fa7162447ca631f0ba2cd500000000000000000000000000000000eb57d0965a756d78291da33072610eb200000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000535789277de93002eeb87f86f08326908e17622cd23d876f0b3d6ea59a1fb7600000003e29bcef0d421ecae76d2c383ca3377f07044f31fbb44156acf3e6adf0dd493ce1864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f80000000300d00ddbd519e9351a83b514e84a25585a99d429fa2ac32d90f0bb4d19c328938000001801c4906178b51fe2f5f034de87342a355e0ffcf419adf39bab8f33d34844c864d000002001d6d97f0e74ac6a50f668e60674875f01f19a93918c6b3dac844ea740ed37a9e000000061ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e0000000800000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000065c25bf90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000101000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f0000000017b8b3521f15b0765b6a629fbf098254119df4395b970ed74397b1d8e2d9245b01e530cd4be5409f5a563728ea04b3230aa288f0a9b495bee864fa482bdcf5892b1ca9f8985afc8cb8b6187806b3c7846c210b7643ebbf4295277229eb0aa0342b6356cb01fd8135e60c9ee83c263f3bcf7522d0849d2bcb5d03e557c51e88560906bca10001000812786884da1ba4af0012e2beab6aebf0dad35bde8ae6da4d8678d47774e1ea2b6356cb01fd8135e60c9ee83c263f3bcf7522d0849d2bcb5d03e557c51e885600000000000000000000000000000000000000000906bca100000000000003173812cb2d7243dc1f635ed13d44b8e073ca8d9471192fa4b324986ebe9595100000000000000000000000000000000000000000000000000000000000007a6a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b85500000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b855000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040535789277de93002eeb87f86f08326908e17622cd23d876f0b3d6ea59a1fb7600000003e29bcef0d421ecae76d2c383ca3377f07044f31fbb44156acf3e6adf0dd493ce1864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f80000000300d00ddbd519e9351a83b514e84a25585a99d429fa2ac32d90f0bb4d19c328938000001801c4906178b51fe2f5f034de87342a355e0ffcf419adf39bab8f33d34844c864d000002001d6d97f0e74ac6a50f668e60674875f01f19a93918c6b3dac844ea740ed37a9e000000061ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e0000000800000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000065c25bf90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f10bc53103bb3e974ee4441bbe849027229a23b7f3100bb2df269c258020a6402187115cc21b6e58840e3c9cf0a15ec70960e65d88064e1024af4d501ec3d271827b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed058592ca0490cc25a44113795d42377792e98e990f7ee35dbe6bcef281cc1c1500000000000000000000000000000000000000000000000000000000000000001e53e2a4a2ea07593ada9539cab59e6f37d7a01d7d402c51c3d2eb337a960dec014bed7647ed9d6920c754819ead8e23cc8e321c19ff2c9314058fd7e0304e4f0bcd1f91cf7bdd471d0a30c58c4706f3fdab3807a954b8f5b5e3bfec87d001bb06e62084ee7b602fe9abc15632dda3269f56fb0c6e12519a2eb2ec897091919d03c9e2e67178ac638746f068907e6677b4cc7a9592ef234ab6ab518f17efffa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file +0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000001000000bd300000bd400000bd500000bd600000bd700000bd800000bd900000bda00000bdb00000bdc00000bdd00000bde00000bdf00000be000000be100000be2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010199ce8f5a9bc442f37ae170598a9bc90d17eadab6581779c9676a0e56010b200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000137a50b2142df7ae23ebdfc15bd940d38d013d3d46da25ee9d248442b150e1d51c955dbf68fd3e5e6fe974bbc136083ce8fbf744d72c1d3a957bf3b7908204cd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d3735899d9fa7162447ca631f0ba2cd500000000000000000000000000000000eb57d0965a756d78291da33072610eb200000000000000000000000000000000d3735899d9fa7162447ca631f0ba2cd500000000000000000000000000000000eb57d0965a756d78291da33072610eb20000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000158fbbf4bb58fba04c0acb15f15347c48b3ea680f8d7dae2bb1e3b0c4be182ff000000039f55b7ce0d170ccac58c2f5c09bcfdcbdbb3f065dfee08bda6425eff163677ea1864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000003011be06754b8c232b8bad9dda35ea0bc820319091857b0d62e12e58618e8cdc8d0000018027e6d565e3b36446313ccd1c2cbfd4f5f4c66692ff2619bb8a2ae6ccfcb49f2100000200039266211c93fc4c8fc9bd6e8be0264f563b0c6f0ef927d2ac1d2e76adf1eed3000000061ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e0000000800000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000065c3664a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000101000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000000ec2b4787064785b51ae3daeb9ad6dc786c905f32635e2d4a70bf62b0ce6823b0f830d416d16949744f7f9395c3ed22ae5ee0b919e07ecf382b88e983e18f6e50ec968a693b4b39f1e2ad0c8c91bc0ea98d1b6504675b0383de879137a48aff5068c8b6b058f859d595bd79c3c5d9e0147d17c1e553890ae341eeefa20da686a0906bca10001001c955dbf68fd3e5e6fe974bbc136083ce8fbf744d72c1d3a957bf3b7908204cd068c8b6b058f859d595bd79c3c5d9e0147d17c1e553890ae341eeefa20da686a00000000000000000000000000000000000000000906bca100000000000003173812cb2d7243dc1f635ed13d44b8e073ca8d9471192fa4b324986ebe9595100000000000000000000000000000000000000000000000000000000000007a6a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b85500000000000000000000000000000000e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000027ae41e4649b934ca495991b7852b85500000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004158fbbf4bb58fba04c0acb15f15347c48b3ea680f8d7dae2bb1e3b0c4be182ff000000039f55b7ce0d170ccac58c2f5c09bcfdcbdbb3f065dfee08bda6425eff163677ea1864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000003011be06754b8c232b8bad9dda35ea0bc820319091857b0d62e12e58618e8cdc8d0000018027e6d565e3b36446313ccd1c2cbfd4f5f4c66692ff2619bb8a2ae6ccfcb49f2100000200039266211c93fc4c8fc9bd6e8be0264f563b0c6f0ef927d2ac1d2e76adf1eed3000000061ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e0000000800000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000065c3664a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f10bc53103bb3e974ee4441bbe849027229a23b7f3100bb2df269c258020a64020bb69a53e478ddca00f0db14f1a0e159db238ee78e48c5d9a74f8e3487ad84a027b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed217b7dd03baa47011fce268533a0d5a875b7195d261d4b89b8f1096bce3177e400000000000000000000000000000000000000000000000000000000000000001e53e2a4a2ea07593ada9539cab59e6f37d7a01d7d402c51c3d2eb337a960dec014bed7647ed9d6920c754819ead8e23cc8e321c19ff2c9314058fd7e0304e4f0bcd1f91cf7bdd471d0a30c58c4706f3fdab3807a954b8f5b5e3bfec87d001bb06e62084ee7b602fe9abc15632dda3269f56fb0c6e12519a2eb2ec897091919d03c9e2e67178ac638746f068907e6677b4cc7a9592ef234ab6ab518f17efffa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file diff --git a/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-ordering.hex b/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-ordering.hex index 79b2cb6e660..9bd4da6a0eb 100644 --- a/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-ordering.hex +++ b/yarn-project/noir-protocol-circuits/src/fixtures/nested-call-private-kernel-ordering.hex @@ -1 +1 @@ -0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000001000000bd300000bd400000bd500000bd600000bd700000bd800000bd900000bda00000bdb00000bdc00000bdd00000bde00000bdf00000be000000be100000be200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160457a0ef1cb2ca7fd80b61780045ee3b0bf2493fd1da4ffd4622723bd372a200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001603faf82bab4c5f3019a7b47f4ad502c26f996f8c1d72252177bd5457f0a79c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de83e7105b8a34c7505211d0afb4104380916f0e71499d5a90f4b910bb5cb0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e7d40409e7ce4eaa075a58f4cc605ac7fe5ab514a46c42da23aa1cd112e6e080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e3046b4c37e338ab0826772102a03250000000000000000000000000000000064b70c2bdb6cba2d14d7a03ebb180a80000000000000000000000000000000001c9ecec90e28d2461650418635878a5c0000000000000000000000000000000091e49f47586ecf75f2b0cbb94e89711200000000000000000000000000000000000000000000000000000000000000f800000000000000000000000000000000000000000000000000000000000000041d339d27d2e0e2d887f970f90d62f9f83e323eb27768d8d6673c164739b986e00000000000000000000000000000000000000000238278daecde20f6613394075e43aac8e2a5e589089dfe37547107f945161ba40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000000016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000000000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000000801864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f80000000001ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111898f057c6e679b7123b0e5ab8de753e14901448ca9b9e6239e7c15e6e037442137c9b8ea42c23a2fc8d1baa74896b84c19984e25825655e8ffda52b54b36a11d6623db8c9f22fe8964cf73a5eccd088c1e84f27b61989ceb0bdae0ea9c08e4238278daecde20f6613394075e43aac8e2a5e589089dfe37547107f945161ba404ee1a8a71ca6cc7ac459796dac10ffe11787ebd67a2d06c9d52af24de7e2c0900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000101000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000000061aaf9c2bded107de5d27469fc480d96bece022e00edd85a223007b201c5e881312b8908189de9a77843e2472d8dacd94779b48e1466811d6d578e23b7c99fa1e92e1098c4a9bc9327b01d2e909cd0102cb2247abf679eaae05d471b082486a160457a0ef1cb2ca7fd80b61780045ee3b0bf2493fd1da4ffd4622723bd372a20000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001603faf82bab4c5f3019a7b47f4ad502c26f996f8c1d72252177bd5457f0a79c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7d40409e7ce4eaa075a58f4cc605ac7fe5ab514a46c42da23aa1cd112e6e08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010de83e7105b8a34c7505211d0afb4104380916f0e71499d5a90f4b910bb5cb0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000001000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file +0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000001000000bd300000bd400000bd500000bd600000bd700000bd800000bd900000bda00000bdb00000bdc00000bdd00000bde00000bdf00000be000000be100000be20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008af3070304ed3fe4a59f23b0d6a9ee0c3c9836cdfa3b594511399cae943acce000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023e6072dde738681665908c49d2a1e0d3688d2eb5c68a82dfc049e3e32bdd754000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c5bb9e6968823917533dd92b0d3066c475270844ab7843db4b684e36933d6bf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021ef53c68b70daa61fa4740c71d43836a8b7a51196a38f4a80f974144856459dd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a37978f0dc81bf15851be2674da72461000000000000000000000000000000000d996a1d3cab7b7dc6f302245cbd3e1a000000000000000000000000000000001c9ecec90e28d2461650418635878a5c0000000000000000000000000000000091e49f47586ecf75f2b0cbb94e89711200000000000000000000000000000000000000000000000000000000000000f80000000000000000000000000000000000000000000000000000000000000004040cc2d6a57a9ed70de05ba838f36237b0fd89a4454bd5769cfcb70ab5ec0fb300000000000000000000000000000000000000002cec24fdcf1a1fd1e97fffe8c3327b22810b1aa820710e44ae757aa5561aea570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000000016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000000000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000000801864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f80000000001ed250ed73db6e70805c4efcf0056e8695b79cd3ba418e827c184dee6c6fb0e0000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012e6c276e1ef4755f6fda143424585d7ddb8018de978b1afc956ee1796ae53dca0dd6412b0443036d4c7c9a65dd938a1f2fb6a2fdda1b71629299a60054082cac0e97cbc43795084338d12e0a1897f712ee9ab5b6cc96387aaf1100daab06b3792cec24fdcf1a1fd1e97fffe8c3327b22810b1aa820710e44ae757aa5561aea5712e3d6beb3b820ec5fb1f101423c55c8f5567eb26a8cfc9e987dc6ab664307a600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000101000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000001cb65dbae98f5e210e6590374976e670a34ab8701a89fdfca94c820d2b69462f1e6d17394272647745ee507f2d01b6e6d80fe2371fff952dd6e03d8874302758257ecd5435574bb3e5a795c1d6561c78545fc0abc3f183fff7bdc75974ba19af08af3070304ed3fe4a59f23b0d6a9ee0c3c9836cdfa3b594511399cae943acce0000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023e6072dde738681665908c49d2a1e0d3688d2eb5c68a82dfc049e3e32bdd754000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ef53c68b70daa61fa4740c71d43836a8b7a51196a38f4a80f974144856459dd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012c5bb9e6968823917533dd92b0d3066c475270844ab7843db4b684e36933d6bf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000001000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file diff --git a/yarn-project/noir-protocol-circuits/src/type_conversion.ts b/yarn-project/noir-protocol-circuits/src/type_conversion.ts index 26e7bb295e1..f7a2b1a845a 100644 --- a/yarn-project/noir-protocol-circuits/src/type_conversion.ts +++ b/yarn-project/noir-protocol-circuits/src/type_conversion.ts @@ -1121,6 +1121,8 @@ export function mapGlobalVariablesToNoir(globalVariables: GlobalVariables): Glob version: mapFieldToNoir(globalVariables.version), block_number: mapFieldToNoir(globalVariables.blockNumber), timestamp: mapFieldToNoir(globalVariables.timestamp), + coinbase: mapEthAddressToNoir(globalVariables.coinbase), + fee_recipient: mapAztecAddressToNoir(globalVariables.feeRecipient), }; } @@ -1146,6 +1148,8 @@ export function mapGlobalVariablesFromNoir(globalVariables: GlobalVariablesNoir) mapFieldFromNoir(globalVariables.version), mapFieldFromNoir(globalVariables.block_number), mapFieldFromNoir(globalVariables.timestamp), + mapEthAddressFromNoir(globalVariables.coinbase), + mapAztecAddressFromNoir(globalVariables.fee_recipient), ); } diff --git a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts index 470ce36f9cc..9ff0678357f 100644 --- a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts +++ b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts @@ -12,7 +12,9 @@ import { } from '@aztec/circuit-types'; import { AppendOnlyTreeSnapshot, + AztecAddress, BaseOrMergeRollupPublicInputs, + EthAddress, Fr, GlobalVariables, Header, @@ -91,10 +93,12 @@ describe('sequencer/solo_block_builder', () => { const chainId = Fr.ZERO; const version = Fr.ZERO; + const coinbase = EthAddress.ZERO; + const feeRecipient = AztecAddress.ZERO; beforeEach(async () => { blockNumber = 3; - globalVariables = new GlobalVariables(chainId, version, new Fr(blockNumber), Fr.ZERO); + globalVariables = new GlobalVariables(chainId, version, new Fr(blockNumber), Fr.ZERO, coinbase, feeRecipient); builderDb = await MerkleTrees.new(await AztecLmdbStore.openTmp()).then(t => t.asLatest()); expectsDb = await MerkleTrees.new(await AztecLmdbStore.openTmp()).then(t => t.asLatest()); diff --git a/yarn-project/sequencer-client/src/client/sequencer-client.ts b/yarn-project/sequencer-client/src/client/sequencer-client.ts index 90a3003f5b7..242221f3f5e 100644 --- a/yarn-project/sequencer-client/src/client/sequencer-client.ts +++ b/yarn-project/sequencer-client/src/client/sequencer-client.ts @@ -86,4 +86,12 @@ export class SequencerClient { public restart() { this.sequencer.restart(); } + + get coinbase() { + return this.sequencer.coinbase; + } + + get feeRecipient() { + return this.sequencer.feeRecipient; + } } diff --git a/yarn-project/sequencer-client/src/config.ts b/yarn-project/sequencer-client/src/config.ts index ee407d8410a..43bfa76a175 100644 --- a/yarn-project/sequencer-client/src/config.ts +++ b/yarn-project/sequencer-client/src/config.ts @@ -1,3 +1,4 @@ +import { AztecAddress } from '@aztec/circuits.js'; import { L1ContractAddresses, NULL_KEY } from '@aztec/ethereum'; import { EthAddress } from '@aztec/foundation/eth-address'; @@ -45,6 +46,8 @@ export function getConfigEnvVars(): SequencerClientConfig { INBOX_CONTRACT_ADDRESS, CONTRACT_DEPLOYMENT_EMITTER_ADDRESS, OUTBOX_CONTRACT_ADDRESS, + COINBASE, + FEE_RECIPIENT, } = process.env; const publisherPrivateKey: Hex = SEQ_PUBLISHER_PRIVATE_KEY @@ -76,5 +79,8 @@ export function getConfigEnvVars(): SequencerClientConfig { publisherPrivateKey, maxTxsPerBlock: SEQ_MAX_TX_PER_BLOCK ? +SEQ_MAX_TX_PER_BLOCK : 32, minTxsPerBlock: SEQ_MIN_TX_PER_BLOCK ? +SEQ_MIN_TX_PER_BLOCK : 1, + // TODO: undefined should not be allowed for the following 2 values in PROD + coinbase: COINBASE ? EthAddress.fromString(COINBASE) : undefined, + feeRecipient: FEE_RECIPIENT ? AztecAddress.fromString(FEE_RECIPIENT) : undefined, }; } diff --git a/yarn-project/sequencer-client/src/global_variable_builder/global_builder.ts b/yarn-project/sequencer-client/src/global_variable_builder/global_builder.ts index d50a8b8f83b..2b6212b71da 100644 --- a/yarn-project/sequencer-client/src/global_variable_builder/global_builder.ts +++ b/yarn-project/sequencer-client/src/global_variable_builder/global_builder.ts @@ -1,4 +1,4 @@ -import { GlobalVariables } from '@aztec/circuits.js'; +import { AztecAddress, EthAddress, GlobalVariables } from '@aztec/circuits.js'; import { Fr } from '@aztec/foundation/fields'; import { createDebugLogger } from '@aztec/foundation/log'; @@ -42,9 +42,11 @@ export interface GlobalVariableBuilder { /** * Builds global variables. * @param blockNumber - The block number to build global variables for. + * @param coinbase - The address to receive block reward. + * @param feeRecipient - The address to receive fees. * @returns The global variables for the given block number. */ - buildGlobalVariables(blockNumber: Fr): Promise; + buildGlobalVariables(blockNumber: Fr, coinbase: EthAddress, feeRecipient: AztecAddress): Promise; } /** @@ -58,9 +60,15 @@ export class SimpleTestGlobalVariableBuilder implements GlobalVariableBuilder { /** * Simple builder of global variables that use the minimum time possible. * @param blockNumber - The block number to build global variables for. + * @param coinbase - The address to receive block reward. + * @param feeRecipient - The address to receive fees. * @returns The global variables for the given block number. */ - public async buildGlobalVariables(blockNumber: Fr): Promise { + public async buildGlobalVariables( + blockNumber: Fr, + coinbase: EthAddress, + feeRecipient: AztecAddress, + ): Promise { let lastTimestamp = new Fr(await this.reader.getLastTimestamp()); const version = new Fr(await this.reader.getVersion()); const chainId = new Fr(await this.reader.getChainId()); @@ -79,9 +87,9 @@ export class SimpleTestGlobalVariableBuilder implements GlobalVariableBuilder { } this.log( - `Built global variables for block ${blockNumber}: (${chainId}, ${version}, ${blockNumber}, ${lastTimestamp})`, + `Built global variables for block ${blockNumber}: (${chainId}, ${version}, ${blockNumber}, ${lastTimestamp}, ${coinbase}, ${feeRecipient})`, ); - return new GlobalVariables(chainId, version, blockNumber, lastTimestamp); + return new GlobalVariables(chainId, version, blockNumber, lastTimestamp, coinbase, feeRecipient); } } diff --git a/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts b/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts index f3d94763f0e..dc433041bb5 100644 --- a/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts @@ -8,7 +8,15 @@ import { TxHash, mockTx, } from '@aztec/circuit-types'; -import { Fr, GlobalVariables, Header, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, makeEmptyProof } from '@aztec/circuits.js'; +import { + AztecAddress, + EthAddress, + Fr, + GlobalVariables, + Header, + NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, + makeEmptyProof, +} from '@aztec/circuits.js'; import { times } from '@aztec/foundation/collection'; import { P2P, P2PClientState } from '@aztec/p2p'; import { MerkleTreeOperations, WorldStateRunningState, WorldStateSynchronizer } from '@aztec/world-state'; @@ -40,6 +48,8 @@ describe('sequencer', () => { const chainId = new Fr(12345); const version = Fr.ZERO; + const coinbase = EthAddress.random(); + const feeRecipient = AztecAddress.random(); beforeEach(() => { lastBlockNumber = 0; @@ -98,7 +108,7 @@ describe('sequencer', () => { blockBuilder.buildL2Block.mockResolvedValueOnce([block, proof]); publisher.processL2Block.mockResolvedValueOnce(true); globalVariableBuilder.buildGlobalVariables.mockResolvedValueOnce( - new GlobalVariables(chainId, version, new Fr(lastBlockNumber + 1), Fr.ZERO), + new GlobalVariables(chainId, version, new Fr(lastBlockNumber + 1), Fr.ZERO, coinbase, feeRecipient), ); await sequencer.initialSync(); @@ -107,7 +117,7 @@ describe('sequencer', () => { const expectedTxHashes = [...(await Tx.getHashes([tx])), ...times(1, () => TxHash.ZERO)]; expect(blockBuilder.buildL2Block).toHaveBeenCalledWith( - new GlobalVariables(chainId, version, new Fr(lastBlockNumber + 1), Fr.ZERO), + new GlobalVariables(chainId, version, new Fr(lastBlockNumber + 1), Fr.ZERO, coinbase, feeRecipient), expectedTxHashes.map(hash => expect.objectContaining({ hash })), Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); @@ -127,7 +137,7 @@ describe('sequencer', () => { blockBuilder.buildL2Block.mockResolvedValueOnce([block, proof]); publisher.processL2Block.mockResolvedValueOnce(true); globalVariableBuilder.buildGlobalVariables.mockResolvedValueOnce( - new GlobalVariables(chainId, version, new Fr(lastBlockNumber + 1), Fr.ZERO), + new GlobalVariables(chainId, version, new Fr(lastBlockNumber + 1), Fr.ZERO, coinbase, feeRecipient), ); // We make a nullifier from tx1 a part of the nullifier tree, so it gets rejected as double spend @@ -144,7 +154,7 @@ describe('sequencer', () => { const expectedTxHashes = await Tx.getHashes([txs[0], txs[2]]); expect(blockBuilder.buildL2Block).toHaveBeenCalledWith( - new GlobalVariables(chainId, version, new Fr(lastBlockNumber + 1), Fr.ZERO), + new GlobalVariables(chainId, version, new Fr(lastBlockNumber + 1), Fr.ZERO, coinbase, feeRecipient), expectedTxHashes.map(hash => expect.objectContaining({ hash })), Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); @@ -165,7 +175,7 @@ describe('sequencer', () => { blockBuilder.buildL2Block.mockResolvedValueOnce([block, proof]); publisher.processL2Block.mockResolvedValueOnce(true); globalVariableBuilder.buildGlobalVariables.mockResolvedValueOnce( - new GlobalVariables(chainId, version, new Fr(lastBlockNumber + 1), Fr.ZERO), + new GlobalVariables(chainId, version, new Fr(lastBlockNumber + 1), Fr.ZERO, coinbase, feeRecipient), ); // We make the chain id on the invalid tx not equal to the configured chain id @@ -177,7 +187,7 @@ describe('sequencer', () => { const expectedTxHashes = await Tx.getHashes([txs[0], txs[2]]); expect(blockBuilder.buildL2Block).toHaveBeenCalledWith( - new GlobalVariables(chainId, version, new Fr(lastBlockNumber + 1), Fr.ZERO), + new GlobalVariables(chainId, version, new Fr(lastBlockNumber + 1), Fr.ZERO, coinbase, feeRecipient), expectedTxHashes.map(hash => expect.objectContaining({ hash })), Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); @@ -195,7 +205,7 @@ describe('sequencer', () => { blockBuilder.buildL2Block.mockResolvedValueOnce([block, proof]); publisher.processL2Block.mockResolvedValueOnce(true); globalVariableBuilder.buildGlobalVariables.mockResolvedValueOnce( - new GlobalVariables(chainId, version, new Fr(lastBlockNumber + 1), Fr.ZERO), + new GlobalVariables(chainId, version, new Fr(lastBlockNumber + 1), Fr.ZERO, coinbase, feeRecipient), ); await sequencer.initialSync(); @@ -230,7 +240,7 @@ describe('sequencer', () => { publisher.processL2Block.mockResolvedValueOnce(true); publisher.processNewContractData.mockResolvedValueOnce(true); globalVariableBuilder.buildGlobalVariables.mockResolvedValueOnce( - new GlobalVariables(chainId, version, new Fr(lastBlockNumber + 1), Fr.ZERO), + new GlobalVariables(chainId, version, new Fr(lastBlockNumber + 1), Fr.ZERO, coinbase, feeRecipient), ); await sequencer.initialSync(); diff --git a/yarn-project/sequencer-client/src/sequencer/sequencer.ts b/yarn-project/sequencer-client/src/sequencer/sequencer.ts index ca31b58d3b5..da7df333d2d 100644 --- a/yarn-project/sequencer-client/src/sequencer/sequencer.ts +++ b/yarn-project/sequencer-client/src/sequencer/sequencer.ts @@ -1,6 +1,6 @@ import { L1ToL2MessageSource, L2Block, L2BlockSource, MerkleTreeId, Tx } from '@aztec/circuit-types'; import { L2BlockBuiltStats } from '@aztec/circuit-types/stats'; -import { GlobalVariables } from '@aztec/circuits.js'; +import { AztecAddress, EthAddress, GlobalVariables } from '@aztec/circuits.js'; import { times } from '@aztec/foundation/collection'; import { Fr } from '@aztec/foundation/fields'; import { createDebugLogger } from '@aztec/foundation/log'; @@ -31,6 +31,9 @@ export class Sequencer { private pollingIntervalMs: number = 1000; private maxTxsPerBlock = 32; private minTxsPerBLock = 1; + // TODO: zero values should not be allowed for the following 2 values in PROD + private _coinbase = EthAddress.ZERO; + private _feeRecipient = AztecAddress.ZERO; private lastPublishedBlock = 0; private state = SequencerState.STOPPED; @@ -64,6 +67,12 @@ export class Sequencer { if (config.minTxsPerBlock) { this.minTxsPerBLock = config.minTxsPerBlock; } + if (config.coinbase) { + this._coinbase = config.coinbase; + } + if (config.feeRecipient) { + this._feeRecipient = config.feeRecipient; + } } /** @@ -155,7 +164,11 @@ export class Sequencer { } }; - const newGlobalVariables = await this.globalsBuilder.buildGlobalVariables(new Fr(newBlockNumber)); + const newGlobalVariables = await this.globalsBuilder.buildGlobalVariables( + new Fr(newBlockNumber), + this._coinbase, + this._feeRecipient, + ); // Filter out invalid txs // TODO: It should be responsibility of the P2P layer to validate txs before passing them on here @@ -408,6 +421,14 @@ export class Sequencer { } return false; } + + get coinbase(): EthAddress { + return this._coinbase; + } + + get feeRecipient(): AztecAddress { + return this._feeRecipient; + } } /** diff --git a/yarn-project/simulator/src/avm/fixtures/index.ts b/yarn-project/simulator/src/avm/fixtures/index.ts index bdbf5bed4bc..75700dcd125 100644 --- a/yarn-project/simulator/src/avm/fixtures/index.ts +++ b/yarn-project/simulator/src/avm/fixtures/index.ts @@ -63,6 +63,8 @@ export function initGlobalVariables(overrides?: Partial): Globa overrides?.version ?? Fr.zero(), overrides?.blockNumber ?? Fr.zero(), overrides?.timestamp ?? Fr.zero(), + overrides?.coinbase ?? EthAddress.ZERO, + overrides?.feeRecipient ?? AztecAddress.zero(), ); } diff --git a/yarn-project/simulator/src/public/index.test.ts b/yarn-project/simulator/src/public/index.test.ts index e96cd2ecaa9..c2c625dda91 100644 --- a/yarn-project/simulator/src/public/index.test.ts +++ b/yarn-project/simulator/src/public/index.test.ts @@ -264,7 +264,14 @@ describe('ACIR public execution simulator', () => { }); const execution: PublicExecution = { contractAddress: parentContractAddress, functionData, args, callContext }; - const globalVariables = new GlobalVariables(new Fr(69), new Fr(420), new Fr(1), new Fr(7)); + const globalVariables = new GlobalVariables( + new Fr(69), + new Fr(420), + new Fr(1), + new Fr(7), + EthAddress.fromField(new Fr(8)), + AztecAddress.fromField(new Fr(9)), + ); if (isInternal === undefined) { await expect(executor.simulate(execution, globalVariables)).rejects.toThrowError(/Method not found -/); @@ -449,7 +456,14 @@ describe('ACIR public execution simulator', () => { }); const computeGlobalVariables = () => - new GlobalVariables(new Fr(preimage.sender.chainId), new Fr(preimage.recipient.version), Fr.ZERO, Fr.ZERO); + new GlobalVariables( + new Fr(preimage.sender.chainId), + new Fr(preimage.recipient.version), + Fr.ZERO, + Fr.ZERO, + EthAddress.ZERO, + AztecAddress.ZERO, + ); const mockOracles = () => { publicContracts.getBytecode.mockResolvedValue(Buffer.from(mintPublicArtifact.bytecode, 'base64')); @@ -618,4 +632,110 @@ describe('ACIR public execution simulator', () => { }); }); }); + + describe('Global variables in public context', () => { + let contractAddress: AztecAddress; + let callContext: CallContext; + + beforeAll(() => { + contractAddress = AztecAddress.random(); + callContext = CallContext.from({ + msgSender: AztecAddress.random(), + storageContractAddress: AztecAddress.random(), + portalContractAddress: EthAddress.ZERO, + functionSelector: FunctionSelector.empty(), + isContractDeployment: false, + isDelegateCall: false, + isStaticCall: false, + startSideEffectCounter: 0, + }); + }); + + const computeGlobalVariables = (coinbase: EthAddress, feeRecipient: AztecAddress) => + new GlobalVariables(new Fr(1), new Fr(2), Fr.ZERO, Fr.ZERO, coinbase, feeRecipient); + + describe('Coinbase', () => { + let expectedCoinbase: EthAddress; + let globalVariables: GlobalVariables; + let assertCoinbaseArtifact: FunctionArtifact; + let functionData: FunctionData; + + beforeAll(() => { + expectedCoinbase = EthAddress.random(); + globalVariables = computeGlobalVariables(expectedCoinbase, AztecAddress.random()); + + assertCoinbaseArtifact = TestContractArtifact.functions.find(f => f.name === 'assert_coinbase')!; + functionData = FunctionData.fromAbi(assertCoinbaseArtifact); + }); + + beforeEach(() => { + publicContracts.getBytecode.mockResolvedValue(Buffer.from(assertCoinbaseArtifact.bytecode, 'base64')); + }); + + it('Valid', () => { + // We set the coinbase function arg to one we set in global vars + const args = encodeArguments(assertCoinbaseArtifact, [expectedCoinbase]); + + const execution: PublicExecution = { contractAddress, functionData, args, callContext }; + executor = new PublicExecutor(publicState, publicContracts, commitmentsDb, header); + + // Now we check that the global vars value was correctly set by checking if the assert func throws + expect(() => executor.simulate(execution, globalVariables)).not.toThrow(); + }); + + it('Invalid', async () => { + // We set the coinbase function arg to a random invalid value + const invalidCoinbase = EthAddress.random(); + const args = encodeArguments(assertCoinbaseArtifact, [invalidCoinbase]); + + const execution: PublicExecution = { contractAddress, functionData, args, callContext }; + executor = new PublicExecutor(publicState, publicContracts, commitmentsDb, header); + + // Now we check that the function throws in case of invalid coinbase + await expect(executor.simulate(execution, globalVariables)).rejects.toThrowError('Invalid coinbase'); + }); + }); + + describe('Fee recipient', () => { + let expectedFeeRecipient: AztecAddress; + let globalVariables: GlobalVariables; + let assertFeeRecipientArtifact: FunctionArtifact; + let functionData: FunctionData; + + beforeAll(() => { + expectedFeeRecipient = AztecAddress.random(); + globalVariables = computeGlobalVariables(EthAddress.random(), expectedFeeRecipient); + + assertFeeRecipientArtifact = TestContractArtifact.functions.find(f => f.name === 'assert_fee_recipient')!; + functionData = FunctionData.fromAbi(assertFeeRecipientArtifact); + }); + + beforeEach(() => { + publicContracts.getBytecode.mockResolvedValue(Buffer.from(assertFeeRecipientArtifact.bytecode, 'base64')); + }); + + it('Valid', () => { + // We set the fee recipient function arg to one we set in global vars + const args = encodeArguments(assertFeeRecipientArtifact, [expectedFeeRecipient]); + + const execution: PublicExecution = { contractAddress, functionData, args, callContext }; + executor = new PublicExecutor(publicState, publicContracts, commitmentsDb, header); + + // Now we check that the global vars value was correctly set by checking if the assert func throws + expect(() => executor.simulate(execution, globalVariables)).not.toThrow(); + }); + + it('Invalid', async () => { + // We set the fee recipient function arg to a random invalid value + const invalidFeeRecipient = AztecAddress.random(); + const args = encodeArguments(assertFeeRecipientArtifact, [invalidFeeRecipient]); + + const execution: PublicExecution = { contractAddress, functionData, args, callContext }; + executor = new PublicExecutor(publicState, publicContracts, commitmentsDb, header); + + // Now we check that the function throws in case of invalid fee recipient + await expect(executor.simulate(execution, globalVariables)).rejects.toThrowError('Invalid fee recipient'); + }); + }); + }); }); diff --git a/yellow-paper/docs/gas-and-fees/gas-and-fees.md b/yellow-paper/docs/gas-and-fees/gas-and-fees.md index 53e9c6f3dad..02cfaf82c37 100644 --- a/yellow-paper/docs/gas-and-fees/gas-and-fees.md +++ b/yellow-paper/docs/gas-and-fees/gas-and-fees.md @@ -26,7 +26,7 @@ We can define a number of requirements that serve to provide a transparent and f ## High Level Concepts and Design 1. We will use concepts of L1, L2 and DA gas to universally define units of resource for the Ethereum and Aztec networks respectively. L1 gas directly mirrors the actual gas specification as defined by Ethereum, L2 gas covers all resource expended on the L2 network. Finally, DA gas accounts for the data stored on the network's Data Availability solution. -2. We will deterministically quantify all resource consumption of a transaction into 7 values. We will define these value later but essentially they represent the amortized and transaction specific quantities of each of L1, L2 and DA gas. +2. We will deterministically quantify all resource consumption of a transaction into 7 values. We will define these values later but essentially they represent the amortized and transaction specific quantities of each of L1, L2 and DA gas. 3. The transaction sender will provide a single fee for the transaction. This will be split into 3 components to cover each of the L1, L2 and DA gas costs. The sender will specify `feePerGas` and `gasLimit` for each component. Doing so provides protection to the sender that the amount of fee applicable to any component is constrained. 4. We will constrain the sequencer to apply the correct amortized and transaction specific fees ensuring the sender can not be charged arbitrarily. 5. We will define a method by which fees can be paid in any asset, either publicly or privately, on Ethereum or Aztec but where the sequencer retains agency as to what assets and fee payment methods they are willing to accept. @@ -34,7 +34,7 @@ We can define a number of requirements that serve to provide a transparent and f ## Gas Metering -Broadly speaking, resource consumption incurred by the sequencer falls into categories of transaction specific consumption and amortized, per-rollup consumption. Each operation performed by the sequencer can be attributed with a fixed amount of gas per unit representing it's level of resource consumption. The unit will differ between operations, for example in some operations it may be per-byte whilst in others it could be per-opcode. What matters is that we are able to determine the total gas consumption of any given transaction. +Broadly speaking, resource consumption incurred by the sequencer falls into categories of transaction specific consumption and amortized, per-rollup consumption. Each operation performed by the sequencer can be attributed with a fixed amount of gas per unit representing its level of resource consumption. The unit will differ between operations, for example in some operations it may be per-byte whilst in others it could be per-opcode. What matters is that we are able to determine the total gas consumption of any given transaction. ### Examples of Gas Consuming Operations @@ -53,9 +53,9 @@ Some operations are specific to a transaction, such as public function execution ### Measuring Gas Before Submission -All of the operations listed in the transaction specific table can provide us with deterministic gas values for a transaction. The transaction can be simulated and appropriate gas figures can be calculated before the transaction is sent to the network. The transaction will also need to provide a fee to cover it's portion of the amortized cost. This can be done by deciding on a value of `N`, the number of transactions in a rollup. Of course, the transaction sender can't know in advance how many other transactions will be included in the same rollup but the sender will be able to see how many transactions were included in prior rollups and decide on a value that will give them some certainty of inclusion without overpaying for insufficient amortization. As with all costs, any additional amortization will be refunded to the sender. +All of the operations listed in the transaction specific table can provide us with deterministic gas values for a transaction. The transaction can be simulated and appropriate gas figures can be calculated before the transaction is sent to the network. The transaction will also need to provide a fee to cover its portion of the amortized cost. This can be done by deciding on a value of `N`, the number of transactions in a rollup. Of course, the transaction sender can't know in advance how many other transactions will be included in the same rollup but the sender will be able to see how many transactions were included in prior rollups and decide on a value that will give them some certainty of inclusion without overpaying for insufficient amortization. As with all costs, any additional amortization will be refunded to the sender. -For example, if the previous 10 rollups consist of an average of 5000 transactions, the sender could decide on a value of 1000 for `N` in it's amortization. If the transaction is included in a rollup with > `N` transactions, the fee saved by the additional amortization will be refunded to the sender. If the sequencer chooses to include the transaction in a rollup with < `N` transactions, the sequencer will effectively subsidize that reduced amortization. +For example, if the previous 10 rollups consist of an average of 5000 transactions, the sender could decide on a value of 1000 for `N` in its amortization. If the transaction is included in a rollup with > `N` transactions, the fee saved by the additional amortization will be refunded to the sender. If the sequencer chooses to include the transaction in a rollup with < `N` transactions, the sequencer will effectively subsidize that reduced amortization. The transaction will be provided with 7 gas values: diff --git a/yellow-paper/docs/rollup-circuits/base-rollup.md b/yellow-paper/docs/rollup-circuits/base-rollup.md index 676f37788dd..140f62fd30c 100644 --- a/yellow-paper/docs/rollup-circuits/base-rollup.md +++ b/yellow-paper/docs/rollup-circuits/base-rollup.md @@ -38,7 +38,8 @@ class GlobalVariables { timestamp: Fr version: Fr chain_id: Fr - coinbase: Address + coinbase: EthAddress + fee_recipient: Address } class Header { @@ -311,8 +312,8 @@ def kernel_checks( assert kernel.proof.verify(kernel.public_inputs) tx_context = kernel.public_inputs.constants.tx_context - assert tx_context.chainid == constants.globalVariables.chainid - assert tx_context.version == constants.globalVariables.version + assert tx_context.chain_id == constants.global_variables.chain_id + assert tx_context.version == constants.global_variables.version assert len(kernel.public_inputs.end.private_call_stack) == 0 assert len(kernel.public_inputs.end.public_call_stack) == 0 diff --git a/yellow-paper/docs/rollup-circuits/index.md b/yellow-paper/docs/rollup-circuits/index.md index f22aa2b0b7f..87e49fe6bcc 100644 --- a/yellow-paper/docs/rollup-circuits/index.md +++ b/yellow-paper/docs/rollup-circuits/index.md @@ -115,7 +115,8 @@ class GlobalVariables { timestamp: Fr version: Fr chain_id: Fr - coinbase: Address + coinbase: EthAddress + fee_recipient: Address } class Header { diff --git a/yellow-paper/docs/rollup-circuits/merge-rollup.md b/yellow-paper/docs/rollup-circuits/merge-rollup.md index 1a83e47267d..ae5468ca5af 100644 --- a/yellow-paper/docs/rollup-circuits/merge-rollup.md +++ b/yellow-paper/docs/rollup-circuits/merge-rollup.md @@ -29,7 +29,8 @@ class GlobalVariables { timestamp: Fr version: Fr chain_id: Fr - coinbase: Address + coinbase: EthAddress + fee_recipient: Address } class ConstantRollupData { diff --git a/yellow-paper/docs/rollup-circuits/root-rollup.md b/yellow-paper/docs/rollup-circuits/root-rollup.md index 6b65b252a79..d080f8ef5fd 100644 --- a/yellow-paper/docs/rollup-circuits/root-rollup.md +++ b/yellow-paper/docs/rollup-circuits/root-rollup.md @@ -39,8 +39,8 @@ class GlobalVariables { timestamp: Fr version: Fr chain_id: Fr - coinbase: Address -} + coinbase: EthAddress + fee_recipient: Address} class Header { last_archive: Snapshot diff --git a/yellow-paper/docs/state/archive.md b/yellow-paper/docs/state/archive.md index 3ea15936084..e915e85779d 100644 --- a/yellow-paper/docs/state/archive.md +++ b/yellow-paper/docs/state/archive.md @@ -33,7 +33,8 @@ class GlobalVariables { timestamp: Fr version: Fr chain_id: Fr - coinbase: Address + coinbase: EthAddress + fee_recipient: Address } class Header { diff --git a/yellow-paper/docs/state/index.md b/yellow-paper/docs/state/index.md index 0ac42fec0d1..ebe1b8782e6 100644 --- a/yellow-paper/docs/state/index.md +++ b/yellow-paper/docs/state/index.md @@ -77,7 +77,8 @@ class GlobalVariables { timestamp: Fr version: Fr chain_id: Fr - coinbase: Address + coinbase: EthAddress + fee_recipient: Address } class Header {