function bid(uint256 _tokenId) 
        external
        payable
        whenNotPaused
    {
        uint256 lastIndex = latestAction[_tokenId];
        require(lastIndex > 0);
        Auction storage order = auctionArray[lastIndex];

        uint64 tmNow = uint64(block.timestamp);
        require(order.tmStart + auctionDuration > tmNow);
        require(order.tmSell == 0);

        address realOwner = tokenContract.ownerOf(_tokenId);
        require(realOwner == order.seller);
        require(realOwner != msg.sender);

        uint256 price = order.price * 1000000000;
        require(msg.value == price);

        order.tmSell = tmNow;
        auctionSumGwei += order.price;
        uint256 sellerProceeds = price.mul(9).div(10);
        uint256 devCut = price.sub(sellerProceeds);
       
        tokenContract.safeTransferByContract(_tokenId, msg.sender);

        _shareDevCut(devCut);
        realOwner.transfer(sellerProceeds);

        AuctionSold(lastIndex, realOwner, msg.sender, _tokenId, price);
    }