ETH Price: $4,281.48 (+1.32%)

Transaction Decoder

Block:
21973726 at Mar-04-2025 01:08:47 PM +UTC
Transaction Fee:
0.0006375285 ETH $2.73
Gas Used:
303,585 Gas / 2.1 Gwei

Emitted Events:

431 MyShell.Transfer( from=[Sender] 0x84ce22f33e099ed8858ff40862436fb58e4178f2, to=ERC20Router, value=97350000000000000000 )
432 MyShell.Approval( owner=ERC20Router, spender=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, value=97350000000000000000 )
433 MyShell.Transfer( from=ERC20Router, to=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, value=97350000000000000000 )
434 FiatTokenProxy.0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef( 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, 0x0000000000000000000000001aa5f0538e7d123d358f439d4118228db43f2bd0, 0x0000000000000000000000002e8135be71230c6b1b4045696d41c09db0414226, 0000000000000000000000000000000000000000000000000000000002037326 )
435 MyShell.Transfer( from=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, to=UniswapV3Pool, value=97350000000000000000 )
436 UniswapV3Pool.Swap( sender=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, recipient=PancakePair, amount0=-33780518, amount1=97350000000000000000, sqrtPriceX96=133924751559241071049146315622539828, liquidity=36779450473945545, tick=286823 )
437 WETH9.Transfer( src=PancakePair, dst=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, wad=16087170791898707 )
438 PancakePair.Sync( reserve0=127795937560, reserve1=60996188637383520710 )
439 PancakePair.Swap( sender=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, amount0In=33780518, amount1In=0, amount0Out=0, amount1Out=16087170791898707, to=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71 )
440 WETH9.Withdrawal( src=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, wad=16087170791898707 )
441 0x85cd07ea01423b1e937929b44e4ad8c40bbb5e71.0x1bf1122521093cffed0b7f29833cd231d885bae58dceb074e411a1fbd94824bd( 0x1bf1122521093cffed0b7f29833cd231d885bae58dceb074e411a1fbd94824bd, 0x000000000000000000000000a1bea5fe917450041748dbbbe7e9ac57a4bbebab, 0x000000000000000000000000f2c88757f8d03634671208935974b60a2a28bdb3, 0x0000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000a1bea5fe917450041748dbbbe7e9ac57a4bbebab, 000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee, 0000000000000000000000000000000000000000000000054700ad37b4470000, 0000000000000000000000000000000000000000000000000038955476a33967, 00000000000000000000000000000000000000000000000000392732547dfe53, ffffffffffffffffffffffffffffffffffffffffffffffffffffff8cda120267 )

Account State Difference:

  Address   Before After State Difference Code
0x1AA5F053...db43f2bD0
(Uniswap V3: USDC-SHELL)
0x2E8135bE...Db0414226
0x84cE22f3...58e4178F2
0.026438652776147801 Eth
Nonce: 131
0.041888295068046508 Eth
Nonce: 132
0.015449642291898707
(beaverbuild)
13.537409211482310893 Eth13.537687372091027573 Eth0.00027816060871668
0xA0b86991...E3606eB48
0xC02aaA39...83C756Cc2 2,869,022.018467345971734355 Eth2,869,022.002380175179835648 Eth0.016087170791898707
0xf2c88757...a2a28Bdb3

Execution Trace

ApprovalProxy.transferAndMulticall( tokens=[0xf2c88757f8d03634671208935974B60a2a28Bdb3], amounts=[97350000000000000000], targets=[0xf2c88757f8d03634671208935974B60a2a28Bdb3, 0xf70da97812CB96acDF810712Aa562db8dfA3dbEF, 0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71], datas=[CV6nswAAAAAAAAAAAAAAAIXNB+oBQjsek3kptE5K2MQLu15xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRwCtN7RHAAA=, , 3ZxflgAAAAAAAAAAAAAAAPLIh1f40DY0ZxIIk1l0tgoqKL2zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRwCtN7RHAAAAAAAAAAAAAAAAAADu7u7u7u7u7u7u7u7u7u7u7u7u7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5J6V6a/vsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADiVVHajOWcAAAAAAAAAAAAAAAChvqX+kXRQBBdI27vn6axXpLvrqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAswLyyIdX+NA2NGcSCJNZdLYKKii9swH//wEapfBTjn0SPTWPQ51BGCKNtD8r0AAugTW+cSMMaxtARWltQcCdsEFCJgAEoLhpkcYhizbB0Z1KLp6wzjYG60gALoE1vnEjDGsbQEVpbUHAnbBBQiYBhc0H6gFCOx6TeSm0TkrYxAu7XnEACcQBwCqqObIj/o0KDlxPJ+rZCDx1bMIB//8CAIXNB+oBQjsek3kptE5K2MQLu15xAAAAAAAAAAAAAAAAAA==], values=[0, 0, 0], refundTo=0x84cE22f33E099ED8858Ff40862436FB58e4178F2 ) => ( 0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000A000000000000000000000000000000000000000000000000000000000000000C0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000392732547DFE53 )
  • MyShell.transferFrom( from=0x84cE22f33E099ED8858Ff40862436FB58e4178F2, to=0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB, value=97350000000000000000 ) => ( True )
  • ERC20Router.delegatecallMulticall( targets=[0xf2c88757f8d03634671208935974B60a2a28Bdb3, 0xf70da97812CB96acDF810712Aa562db8dfA3dbEF, 0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71], datas=[CV6nswAAAAAAAAAAAAAAAIXNB+oBQjsek3kptE5K2MQLu15xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRwCtN7RHAAA=, , 3ZxflgAAAAAAAAAAAAAAAPLIh1f40DY0ZxIIk1l0tgoqKL2zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRwCtN7RHAAAAAAAAAAAAAAAAAADu7u7u7u7u7u7u7u7u7u7u7u7u7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5J6V6a/vsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADiVVHajOWcAAAAAAAAAAAAAAAChvqX+kXRQBBdI27vn6axXpLvrqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAswLyyIdX+NA2NGcSCJNZdLYKKii9swH//wEapfBTjn0SPTWPQ51BGCKNtD8r0AAugTW+cSMMaxtARWltQcCdsEFCJgAEoLhpkcYhizbB0Z1KLp6wzjYG60gALoE1vnEjDGsbQEVpbUHAnbBBQiYBhc0H6gFCOx6TeSm0TkrYxAu7XnEACcQBwCqqObIj/o0KDlxPJ+rZCDx1bMIB//8CAIXNB+oBQjsek3kptE5K2MQLu15xAAAAAAAAAAAAAAAAAA==], values=[0, 0, 0], refundTo=0x84cE22f33E099ED8858Ff40862436FB58e4178F2 ) => ( 0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000A000000000000000000000000000000000000000000000000000000000000000C0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000392732547DFE53 )
    • Multicaller.aggregate( targets=[0xf2c88757f8d03634671208935974B60a2a28Bdb3, 0xf70da97812CB96acDF810712Aa562db8dfA3dbEF, 0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71], data=[CV6nswAAAAAAAAAAAAAAAIXNB+oBQjsek3kptE5K2MQLu15xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRwCtN7RHAAA=, , 3ZxflgAAAAAAAAAAAAAAAPLIh1f40DY0ZxIIk1l0tgoqKL2zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRwCtN7RHAAAAAAAAAAAAAAAAAADu7u7u7u7u7u7u7u7u7u7u7u7u7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5J6V6a/vsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADiVVHajOWcAAAAAAAAAAAAAAAChvqX+kXRQBBdI27vn6axXpLvrqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAswLyyIdX+NA2NGcSCJNZdLYKKii9swH//wEapfBTjn0SPTWPQ51BGCKNtD8r0AAugTW+cSMMaxtARWltQcCdsEFCJgAEoLhpkcYhizbB0Z1KLp6wzjYG60gALoE1vnEjDGsbQEVpbUHAnbBBQiYBhc0H6gFCOx6TeSm0TkrYxAu7XnEACcQBwCqqObIj/o0KDlxPJ+rZCDx1bMIB//8CAIXNB+oBQjsek3kptE5K2MQLu15xAAAAAAAAAAAAAAAAAA==], values=[0, 0, 0], refundTo=0x84cE22f33E099ED8858Ff40862436FB58e4178F2 ) => ( [AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=, , AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADknMlR9/lM=] )
      • MyShell.approve( spender=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, value=97350000000000000000 ) => ( True )
      • Relay: Solver.CALL( )
      • 0x85cd07ea01423b1e937929b44e4ad8c40bbb5e71.dd9c5f96( )
        • MyShell.balanceOf( account=0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB ) => ( 97350000000000000000 )
        • MyShell.transferFrom( from=0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB, to=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, value=97350000000000000000 ) => ( True )
        • UniswapV3Pool.swap( recipient=0x2E8135bE71230c6B1B4045696d41C09Db0414226, zeroForOne=False, amountSpecified=97350000000000000000, sqrtPriceLimitX96=1461446703485210103287273052203988822378723970341, data=0x000000000000000000000000F2C88757F8D03634671208935974B60A2A28BDB30000000000000000000000000000000000000000000000000000000000000000 ) => ( amount0=-33780518, amount1=97350000000000000000 )
          • FiatTokenProxy.a9059cbb( )
            • FiatTokenV2_2.transfer( to=0x2E8135bE71230c6B1B4045696d41C09Db0414226, value=33780518 ) => ( True )
            • MyShell.balanceOf( account=0x1AA5F0538e7D123d358f439D4118228db43f2bD0 ) => ( 45779028602941752006923 )
            • 0x85cd07ea01423b1e937929b44e4ad8c40bbb5e71.fa461e33( )
              • MyShell.transfer( to=0x1AA5F0538e7D123d358f439D4118228db43f2bD0, value=97350000000000000000 ) => ( True )
              • MyShell.balanceOf( account=0x1AA5F0538e7D123d358f439D4118228db43f2bD0 ) => ( 45876378602941752006923 )
              • PancakePair.STATICCALL( )
              • FiatTokenProxy.70a08231( )
                • FiatTokenV2_2.balanceOf( account=0x2E8135bE71230c6B1B4045696d41C09Db0414226 ) => ( 127795937560 )
                • PancakePair.swap( amount0Out=0, amount1Out=16087170791898707, to=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, data=0x )
                  • WETH9.transfer( dst=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, wad=16087170791898707 ) => ( True )
                  • FiatTokenProxy.70a08231( )
                    • FiatTokenV2_2.balanceOf( account=0x2E8135bE71230c6B1B4045696d41C09Db0414226 ) => ( 127795937560 )
                    • WETH9.balanceOf( 0x2E8135bE71230c6B1B4045696d41C09Db0414226 ) => ( 60996188637383520710 )
                    • WETH9.balanceOf( 0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71 ) => ( 16087170791898708 )
                    • WETH9.withdraw( wad=16087170791898707 )
                      • ETH 0.016087170791898707 0x85cd07ea01423b1e937929b44e4ad8c40bbb5e71.CALL( )
                      • ETH 0.016087170791898707 0x85cd07ea01423b1e937929b44e4ad8c40bbb5e71.CALL( )
                      • MyShell.balanceOf( account=0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB ) => ( 0 )
                      • ETH 0.016087170791898707 ERC20Router.CALL( )
                      • ETH 0.016087170791898707 0x84ce22f33e099ed8858ff40862436fb58e4178f2.CALL( )
                        transferAndMulticall[ApprovalProxy (ln:37)]
                        File 1 of 9: ApprovalProxy
                        1
                        2
                        3
                        4
                        5
                        6
                        7
                        8
                        9
                        10
                        11
                        12
                        13
                        14
                        15
                        16
                        // SPDX-License-Identifier: MIT
                        pragma solidity ^0.8.23;
                        import {Ownable} from "solady/src/auth/Ownable.sol";
                        import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
                        import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
                        import {IERC20Router} from "../src/types/interfaces/IERC20Router.sol";
                        contract ApprovalProxy is Ownable {
                        using SafeERC20 for IERC20;
                        error ArrayLengthsMismatch();
                        error ERC20TransferFromFailed();
                        error NativeTransferFailed();
                        event RouterUpdated(address newRouter);
                        address public router;
                        receive() external payable {}
                        constructor(address _owner, address _router) {
                        _initializeOwner(_owner);
                        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                        File 2 of 9: ERC20Router
                        1
                        2
                        3
                        4
                        5
                        6
                        7
                        8
                        9
                        10
                        11
                        12
                        13
                        14
                        15
                        16
                        // SPDX-License-Identifier: MIT
                        pragma solidity ^0.8.25;
                        import {Ownable} from "solady/src/auth/Ownable.sol";
                        import {Tstorish} from "tstorish/src/Tstorish.sol";
                        import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
                        import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
                        import {IERC1155} from "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";
                        import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
                        import {IAllowanceTransfer} from "permit2-relay/src/interfaces/IAllowanceTransfer.sol";
                        import {ISignatureTransfer} from "permit2-relay/src/interfaces/ISignatureTransfer.sol";
                        import {IPermit2} from "permit2-relay/src/interfaces/IPermit2.sol";
                        import {RelayerWitness} from "./types/lib/RelayStructs.sol";
                        import {IMulticaller} from "./types/interfaces/IMulticaller.sol";
                        contract ERC20Router is Ownable, Tstorish {
                        using SafeERC20 for IERC20;
                        // --- Errors --- //
                        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                        File 3 of 9: MyShell
                        1
                        2
                        3
                        4
                        5
                        6
                        7
                        8
                        9
                        10
                        11
                        12
                        13
                        14
                        15
                        16
                        // SPDX-License-Identifier: MIT
                        pragma solidity >=0.8.0;
                        import { IMessageLibManager } from "./IMessageLibManager.sol";
                        import { IMessagingComposer } from "./IMessagingComposer.sol";
                        import { IMessagingChannel } from "./IMessagingChannel.sol";
                        import { IMessagingContext } from "./IMessagingContext.sol";
                        struct MessagingParams {
                        uint32 dstEid;
                        bytes32 receiver;
                        bytes message;
                        bytes options;
                        bool payInLzToken;
                        }
                        struct MessagingReceipt {
                        bytes32 guid;
                        uint64 nonce;
                        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                        File 4 of 9: FiatTokenProxy
                        1
                        2
                        3
                        4
                        5
                        6
                        7
                        8
                        9
                        10
                        11
                        12
                        13
                        14
                        15
                        16
                        pragma solidity ^0.4.24;
                        // File: zos-lib/contracts/upgradeability/Proxy.sol
                        /**
                        * @title Proxy
                        * @dev Implements delegation of calls to other contracts, with proper
                        * forwarding of return values and bubbling of failures.
                        * It defines a fallback function that delegates all calls to the address
                        * returned by the abstract _implementation() internal function.
                        */
                        contract Proxy {
                        /**
                        * @dev Fallback function.
                        * Implemented entirely in `_fallback`.
                        */
                        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                        File 5 of 9: UniswapV3Pool
                        1
                        2
                        3
                        4
                        5
                        6
                        7
                        8
                        9
                        10
                        11
                        12
                        13
                        14
                        15
                        16
                        // SPDX-License-Identifier: BUSL-1.1
                        pragma solidity =0.7.6;
                        import './interfaces/IUniswapV3Pool.sol';
                        import './NoDelegateCall.sol';
                        import './libraries/LowGasSafeMath.sol';
                        import './libraries/SafeCast.sol';
                        import './libraries/Tick.sol';
                        import './libraries/TickBitmap.sol';
                        import './libraries/Position.sol';
                        import './libraries/Oracle.sol';
                        import './libraries/FullMath.sol';
                        import './libraries/FixedPoint128.sol';
                        import './libraries/TransferHelper.sol';
                        import './libraries/TickMath.sol';
                        import './libraries/LiquidityMath.sol';
                        import './libraries/SqrtPriceMath.sol';
                        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                        File 6 of 9: PancakePair
                        1
                        2
                        3
                        4
                        5
                        6
                        7
                        8
                        9
                        10
                        11
                        12
                        13
                        14
                        15
                        16
                        /**
                        *Submitted for verification at BscScan.com on 2021-04-23
                        */
                        /**
                        *Submitted for verification at BscScan.com on 2021-04-22
                        */
                        /**
                        *Submitted for verification at BscScan.com on 2021-04-22
                        */
                        /**
                        *Submitted for verification at BscScan.com on 2020-09-19
                        */
                        pragma solidity =0.5.16;
                        interface IPancakeFactory {
                        event PairCreated(address indexed token0, address indexed token1, address pair, uint);
                        function feeTo() external view returns (address);
                        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                        File 7 of 9: WETH9
                        1
                        2
                        3
                        4
                        5
                        6
                        7
                        8
                        9
                        10
                        11
                        12
                        13
                        14
                        15
                        16
                        // Copyright (C) 2015, 2016, 2017 Dapphub
                        // This program is free software: you can redistribute it and/or modify
                        // it under the terms of the GNU General Public License as published by
                        // the Free Software Foundation, either version 3 of the License, or
                        // (at your option) any later version.
                        // This program is distributed in the hope that it will be useful,
                        // but WITHOUT ANY WARRANTY; without even the implied warranty of
                        // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
                        // GNU General Public License for more details.
                        // You should have received a copy of the GNU General Public License
                        // along with this program. If not, see <http://www.gnu.org/licenses/>.
                        pragma solidity ^0.4.18;
                        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                        File 8 of 9: Multicaller
                        1
                        2
                        3
                        4
                        5
                        6
                        7
                        8
                        9
                        10
                        11
                        12
                        13
                        14
                        15
                        16
                        // SPDX-License-Identifier: MIT
                        pragma solidity ^0.8.4;
                        /**
                        * @title Multicaller
                        * @author vectorized.eth
                        * @notice Contract that allows for efficient aggregation
                        * of multiple calls in a single transaction.
                        */
                        contract Multicaller {
                        // =============================================================
                        // ERRORS
                        // =============================================================
                        /**
                        * @dev The lengths of the input arrays are not the same.
                        */
                        error ArrayLengthsMismatch();
                        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                        File 9 of 9: FiatTokenV2_2
                        1
                        2
                        3
                        4
                        5
                        6
                        7
                        8
                        9
                        10
                        11
                        12
                        13
                        14
                        15
                        16
                        /**
                        * SPDX-License-Identifier: Apache-2.0
                        *
                        * Copyright (c) 2023, Circle Internet Financial, LLC.
                        *
                        * Licensed under the Apache License, Version 2.0 (the "License");
                        * you may not use this file except in compliance with the License.
                        * You may obtain a copy of the License at
                        *
                        * http://www.apache.org/licenses/LICENSE-2.0
                        *
                        * Unless required by applicable law or agreed to in writing, software
                        * distributed under the License is distributed on an "AS IS" BASIS,
                        * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
                        * See the License for the specific language governing permissions and
                        * limitations under the License.
                        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX