Contract 0xe54ca86531e17ef3616d22ca28b0d458b6c89106 13

DEX  
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x12c0c3bb8b48e25ae583bcdaa7378b91f818a199431341ad6cab905bf31ecebbSwap Tokens For ...229768502022-11-29 4:02:486 secs ago0x29beb71450fd95c07ce5deae56d7b0b81153ce7c IN  Pangolin: Router0 AVAX0.00369459325.5
0x1010305d58cde53e7d838eadc60f2ecd2d6a7a8736f5341b7221dfdab2d9b942Swap Exact Token...229768302022-11-29 4:02:0846 secs ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Pangolin: Router0 AVAX0.003522275231 26.825346
0xebffa8f4ebae90b8a39443bd7d9ca637b690c5c789bb4a7c91ca6b169e6bb7c8Swap Exact Token...229767682022-11-29 4:00:022 mins ago0x179755e1b74fd8738e77388337a738d774e3b451 IN  Pangolin: Router0 AVAX0.00275345 25
0x175e8fa384ed1d3f046946507e8d46c27ced8693c6b5299f5e3333e47889671dSwap Exact Token...229767252022-11-29 3:58:334 mins ago0x2aa6845f7e84b2cc1619c823bf4f6b04ec733f2c IN  Pangolin: Router0 AVAX0.003392989630.8
0x2cfa316e042c93c6886daf50254dfa760702901e9d316aa99057bc0c6ced233aSwap Exact Token...229766022022-11-29 3:54:248 mins ago0x179755e1b74fd8738e77388337a738d774e3b451 IN  Pangolin: Router0 AVAX0.00249165 25
0x6739026c903eced2b674d7a10cd42d7d98022cea636aa7b55e5e30656f3fa7ccSwap Tokens For ...229765902022-11-29 3:54:008 mins ago0x0fff04e959c62673835c1aff2aa4895e69f98260 IN  Pangolin: Router0 AVAX0.003598325
0x8f2116dd34bd13e5043db4d86b696d3927c3f54afd5f550d1249d8e26cada1dcSwap Tokens For ...229765562022-11-29 3:52:4610 mins ago0x382d596e9c68d478f5753aefce02a88c48409d0d IN  Pangolin: Router0 AVAX0.00280182525
0xf14ac00de3befa4692ce351a0e512c576b22897dbc2d85b675fbca31a819a70aSwap Tokens For ...229764522022-11-29 3:49:0913 mins ago0x324ec7743a70212299ae82ad674f7547e6b4069d IN  Pangolin: Router0 AVAX0.00547028127
0xcf08bb4bd5765d7063dec424307b932646fa696be9546c2a034681909281dbc6Swap AVAX For Ex...229764302022-11-29 3:48:2514 mins ago0x523caf616ce4ecc138b8dad713d10d3e9889e007 IN  Pangolin: Router1.730918797860823 AVAX0.0036928311 27.425
0xf51e89ff47e40736fbeb985eb4bbdfc4d8aec976557f54f55c8e04be1c86e411Swap Exact Token...229763892022-11-29 3:47:0315 mins ago0x179755e1b74fd8738e77388337a738d774e3b451 IN  Pangolin: Router0 AVAX0.00275375 25
0xf3684e145cf7c7dc40d400d9a4f6262d90a71e42d713a741f6ac98edd25ab3b3Swap AVAX For Ex...229763872022-11-29 3:46:5815 mins ago0xe815c19abef49d1a6cee179a0d03dcd950448269 IN  Pangolin: Router124.796810394658947 AVAX0.01182787575
0x41ae94a9f7b5ab4616f4231921e287f516123c3e4238fe5a010c8a2875756c16Swap Exact Token...229762702022-11-29 3:43:0519 mins ago0x0ca8786842fbabb8cf55fe9fb4bae05dadbd0bac IN  Pangolin: Router0 AVAX0.00763045866 26.94
0xdaeb24684d2fc358e0bd89f7ddbaf6dd18f943921767f11c17257e81aa228df8Swap AVAX For Ex...229762542022-11-29 3:42:3320 mins ago0x0ca8786842fbabb8cf55fe9fb4bae05dadbd0bac IN  Pangolin: Router0.080734795400963 AVAX0.00832451388 26.94
0x3f1a72cbdb5cf14877ec0f8e30ff685595434d1df9a94d72ab8dd00520be5964Swap Exact Token...229762402022-11-29 3:42:0420 mins ago0x179755e1b74fd8738e77388337a738d774e3b451 IN  Pangolin: Router0 AVAX0.00275375 25
0x0b438eeb64e51ebd5fd62dc4e036ee604dff1ea10143dbeaf85227f79fc73a6fSwap Tokens For ...229761262022-11-29 3:38:1124 mins ago0xe65057ef0d4b1ab2100f2d41436f47b28a46264b IN  Pangolin: Router0 AVAX0.00352294701331.750275
0x6f5268fee79a49484853ff069752d8580d98e36e9b5720089312a9f2be307fbcSwap Exact Token...229760962022-11-29 3:37:1425 mins ago0x179755e1b74fd8738e77388337a738d774e3b451 IN  Pangolin: Router0 AVAX0.00275375 25
0x5abb306da2451c2605311a21f74f881667a9c9e69bb37e3f08f3c8321e8a4971Swap Exact Token...229760692022-11-29 3:36:1626 mins ago0x179755e1b74fd8738e77388337a738d774e3b451 IN  Pangolin: Router0 AVAX0.00275375 25
0x48df7ba0865688de9319f35593175b0c79be0bbff8e1467c95fc89d5b897380dSwap Exact Token...229760672022-11-29 3:36:1226 mins ago0x382d596e9c68d478f5753aefce02a88c48409d0d IN  Pangolin: Router0 AVAX0.00297177525
0xf39122a842a8d27aa2416c659199d7cc5d331c6d3d70d27cb801788fb7223527Swap Tokens For ...229760492022-11-29 3:35:3527 mins ago0xb74bb7ed2216bfc184ddde9101900b45e60701e4 IN  Pangolin: Router0 AVAX0.00530689527.5
0x337756a49bc3f3e4e430fd12a7999654f3634afcdfbce0305b79caf529157040Swap Tokens For ...229760352022-11-29 3:35:0827 mins ago0xb74bb7ed2216bfc184ddde9101900b45e60701e4 IN  Pangolin: Router0 AVAX0.00530689527.5
0x7433ba8901a8ff0c1c429b13c5b3280bb02923b167b5b5f49a7b3e2c28553376Swap Tokens For ...229760252022-11-29 3:34:4828 mins ago0xb74bb7ed2216bfc184ddde9101900b45e60701e4 IN  Pangolin: Router0 AVAX0.00530689527.5
0x632fc57ca34479a72a5669c391383076f8c00e6df40984e12f24b6d5a1c6487fSwap Tokens For ...229760162022-11-29 3:34:3028 mins ago0xb74bb7ed2216bfc184ddde9101900b45e60701e4 IN  Pangolin: Router0 AVAX0.00530689527.5
0x25d54ec7310872ecf2e1f2279fdc974cba8a484ff36704ee1324e2077e5fddaeSwap Tokens For ...229760092022-11-29 3:34:1628 mins ago0xb74bb7ed2216bfc184ddde9101900b45e60701e4 IN  Pangolin: Router0 AVAX0.00577714527.5
0x101821d462ab4cc2c6bf1fe72914cfd23696498ef7a0a0e6c548d7274b2f82baSwap Exact Token...229759722022-11-29 3:33:0229 mins ago0xc45c24e2584c20ad7a438662904b91143349ebff IN  Pangolin: Router0 AVAX0.0028771312526.25
0x3b0ccc8a23c75b99d8476a77232b5eb34c4bd0f6c435ad80a3b10e9ffd693e3fSwap Exact AVAX ...229759632022-11-29 3:32:4430 mins ago0xc93e535d796dff10347e74f7e459853cb7225d93 IN  Pangolin: Router32.26 AVAX0.00400575 30
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x6739026c903eced2b674d7a10cd42d7d98022cea636aa7b55e5e30656f3fa7cc229765902022-11-29 3:54:008 mins ago Pangolin: Router0x0fff04e959c62673835c1aff2aa4895e69f982602.17868 AVAX
0x6739026c903eced2b674d7a10cd42d7d98022cea636aa7b55e5e30656f3fa7cc229765902022-11-29 3:54:008 mins ago Wrapped AVAX Pangolin: Router2.17868 AVAX
0xcf08bb4bd5765d7063dec424307b932646fa696be9546c2a034681909281dbc6229764302022-11-29 3:48:2514 mins ago Pangolin: Router0x523caf616ce4ecc138b8dad713d10d3e9889e0070.008611536307765291 AVAX
0xcf08bb4bd5765d7063dec424307b932646fa696be9546c2a034681909281dbc6229764302022-11-29 3:48:2514 mins ago Pangolin: Router Wrapped AVAX1.722307261553058371 AVAX
0xf3684e145cf7c7dc40d400d9a4f6262d90a71e42d713a741f6ac98edd25ab3b3229763872022-11-29 3:46:5815 mins ago Pangolin: Router0xe815c19abef49d1a6cee179a0d03dcd9504482690.081037277147739794 AVAX
0xf3684e145cf7c7dc40d400d9a4f6262d90a71e42d713a741f6ac98edd25ab3b3229763872022-11-29 3:46:5815 mins ago Pangolin: Router Wrapped AVAX124.715773117511207278 AVAX
0xdaeb24684d2fc358e0bd89f7ddbaf6dd18f943921767f11c17257e81aa228df8229762542022-11-29 3:42:3320 mins ago Pangolin: Router0x0ca8786842fbabb8cf55fe9fb4bae05dadbd0bac0.000401665648761013 AVAX
0xdaeb24684d2fc358e0bd89f7ddbaf6dd18f943921767f11c17257e81aa228df8229762542022-11-29 3:42:3320 mins ago Pangolin: Router Wrapped AVAX0.080333129752202715 AVAX
0x3b0ccc8a23c75b99d8476a77232b5eb34c4bd0f6c435ad80a3b10e9ffd693e3f229759632022-11-29 3:32:4430 mins ago Pangolin: Router Wrapped AVAX32.26 AVAX
0x401b026d43de236836770ac2ce82991d6bf3bca35f40a64622dc7111b5062b3f229759572022-11-29 3:32:3230 mins ago Pangolin: Router Wrapped AVAX32.22 AVAX
0xd572fc5908bb8ce6aa8baa4b9ae065805600daa98310891b74d011043b2c5f88229759542022-11-29 3:32:2630 mins ago Pangolin: Router Wrapped AVAX32.19 AVAX
0xa7d59bb22357cbef616f6c348f9a7711b2d902f63dbb9ed3b23ea4866a00c8c5229759112022-11-29 3:31:0031 mins ago Pangolin: Router Wrapped AVAX1.034005180791491718 AVAX
0xf287b1149794773cbe90ae5045be7a2a1f821e5a430268dfad7133dbf9383624229758882022-11-29 3:30:1332 mins ago Pangolin: Router0xb74bb7ed2216bfc184ddde9101900b45e60701e40.1774365758159442 AVAX
0xf287b1149794773cbe90ae5045be7a2a1f821e5a430268dfad7133dbf9383624229758882022-11-29 3:30:1332 mins ago Wrapped AVAX Pangolin: Router0.1774365758159442 AVAX
0xc5ec49a45fc2a6716e85bc175559c2aec7395f1b5993dffdabaab21290f113a1229758672022-11-29 3:29:3233 mins ago Pangolin: Router Wrapped AVAX2.08845 AVAX
0xe43008ed2d540a559ba94e778336164c2682140fdc9eeec4fa358c0bd037cd13229758412022-11-29 3:28:4034 mins ago Pangolin: Router0x741d2cbf05ccdcaf537692ebdeb1dd86039d6db71.622440212702483985 AVAX
0xe43008ed2d540a559ba94e778336164c2682140fdc9eeec4fa358c0bd037cd13229758412022-11-29 3:28:4034 mins ago Wrapped AVAX Pangolin: Router1.622440212702483985 AVAX
0xe722e1dc55d8538626b2892a4040d34fcb95539ec4e747ee31254b094f797a8e229758192022-11-29 3:27:5634 mins ago Pangolin: Router Wrapped AVAX2.018834999999999744 AVAX
0xca0341f5aee6840ab66a7651a0e94115443c67f64114ae1351fa0d00b4cd661c229755432022-11-29 3:18:3744 mins ago Pangolin: Router Wrapped AVAX2.337075 AVAX
0x1125f95f86e5827e4479054209a60f6664816ceca49716ce385e4f04e5903c65229752502022-11-29 3:08:4454 mins ago Pangolin: Router Wrapped AVAX2.168010000000000256 AVAX
0x72fcf7944a78ab25628f43f199b5caa6492fdabe66dcacd61dd2e4cbbfb4a11f229751532022-11-29 3:05:1957 mins ago Pangolin: Router Wrapped AVAX2.10834 AVAX
0x46d1c63e4a2f55e6116642f807687273b1396934ae3c6c66746cbbe41250ae5e229751452022-11-29 3:05:0757 mins ago Pangolin: Router Wrapped AVAX1.993919999999999744 AVAX
0xaab7715a47679dabc29f8e6aac283a9900e266b5ff11c75e9dd881f570ce4ad4229751432022-11-29 3:05:0057 mins ago Pangolin: Router0x1aa8cceebf9e30687bd1d425096ef2a4084b941e5 AVAX
0xaab7715a47679dabc29f8e6aac283a9900e266b5ff11c75e9dd881f570ce4ad4229751432022-11-29 3:05:0057 mins ago Wrapped AVAX Pangolin: Router5 AVAX
0x564ebc8f4894e589eecb63b004974ebd933019d08faaa84ef04e6eac67f476ae229750442022-11-29 3:01:381 hr 1 min ago Pangolin: Router Wrapped AVAX2.237625 AVAX
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PangolinRouter

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2021-11-02
*/

// Sources flattened with hardhat v2.0.6 https://hardhat.org

// File contracts/pangolin-core/interfaces/IPangolinFactory.sol

pragma solidity >=0.5.0;

interface IPangolinFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}


// File hardhat/[email protected]

// SPDX-License-Identifier: MIT
pragma solidity >= 0.4.22 <0.8.0;

library console {
	address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);

	function _sendLogPayload(bytes memory payload) private view {
		uint256 payloadLength = payload.length;
		address consoleAddress = CONSOLE_ADDRESS;
		assembly {
			let payloadStart := add(payload, 32)
			let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)
		}
	}

	function log() internal view {
		_sendLogPayload(abi.encodeWithSignature("log()"));
	}

	function logInt(int p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(int)", p0));
	}

	function logUint(uint p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint)", p0));
	}

	function logString(string memory p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
	}

	function logBool(bool p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
	}

	function logAddress(address p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
	}

	function logBytes(bytes memory p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes)", p0));
	}

	function logByte(byte p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(byte)", p0));
	}

	function logBytes1(bytes1 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0));
	}

	function logBytes2(bytes2 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0));
	}

	function logBytes3(bytes3 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0));
	}

	function logBytes4(bytes4 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0));
	}

	function logBytes5(bytes5 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0));
	}

	function logBytes6(bytes6 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0));
	}

	function logBytes7(bytes7 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0));
	}

	function logBytes8(bytes8 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0));
	}

	function logBytes9(bytes9 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0));
	}

	function logBytes10(bytes10 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0));
	}

	function logBytes11(bytes11 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0));
	}

	function logBytes12(bytes12 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0));
	}

	function logBytes13(bytes13 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0));
	}

	function logBytes14(bytes14 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0));
	}

	function logBytes15(bytes15 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0));
	}

	function logBytes16(bytes16 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0));
	}

	function logBytes17(bytes17 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0));
	}

	function logBytes18(bytes18 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0));
	}

	function logBytes19(bytes19 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0));
	}

	function logBytes20(bytes20 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0));
	}

	function logBytes21(bytes21 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0));
	}

	function logBytes22(bytes22 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0));
	}

	function logBytes23(bytes23 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0));
	}

	function logBytes24(bytes24 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0));
	}

	function logBytes25(bytes25 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0));
	}

	function logBytes26(bytes26 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0));
	}

	function logBytes27(bytes27 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0));
	}

	function logBytes28(bytes28 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0));
	}

	function logBytes29(bytes29 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0));
	}

	function logBytes30(bytes30 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0));
	}

	function logBytes31(bytes31 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0));
	}

	function logBytes32(bytes32 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0));
	}

	function log(uint p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint)", p0));
	}

	function log(string memory p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
	}

	function log(bool p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
	}

	function log(address p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
	}

	function log(uint p0, uint p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint)", p0, p1));
	}

	function log(uint p0, string memory p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string)", p0, p1));
	}

	function log(uint p0, bool p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool)", p0, p1));
	}

	function log(uint p0, address p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address)", p0, p1));
	}

	function log(string memory p0, uint p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint)", p0, p1));
	}

	function log(string memory p0, string memory p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1));
	}

	function log(string memory p0, bool p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1));
	}

	function log(string memory p0, address p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1));
	}

	function log(bool p0, uint p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint)", p0, p1));
	}

	function log(bool p0, string memory p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1));
	}

	function log(bool p0, bool p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1));
	}

	function log(bool p0, address p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1));
	}

	function log(address p0, uint p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint)", p0, p1));
	}

	function log(address p0, string memory p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1));
	}

	function log(address p0, bool p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1));
	}

	function log(address p0, address p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1));
	}

	function log(uint p0, uint p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2));
	}

	function log(uint p0, uint p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2));
	}

	function log(uint p0, uint p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2));
	}

	function log(uint p0, uint p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2));
	}

	function log(uint p0, string memory p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2));
	}

	function log(uint p0, string memory p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2));
	}

	function log(uint p0, string memory p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2));
	}

	function log(uint p0, string memory p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2));
	}

	function log(uint p0, bool p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2));
	}

	function log(uint p0, bool p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2));
	}

	function log(uint p0, bool p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2));
	}

	function log(uint p0, bool p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2));
	}

	function log(uint p0, address p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2));
	}

	function log(uint p0, address p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2));
	}

	function log(uint p0, address p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2));
	}

	function log(uint p0, address p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2));
	}

	function log(string memory p0, uint p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2));
	}

	function log(string memory p0, uint p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2));
	}

	function log(string memory p0, uint p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2));
	}

	function log(string memory p0, uint p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2));
	}

	function log(string memory p0, string memory p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", p0, p1, p2));
	}

	function log(string memory p0, string memory p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2));
	}

	function log(string memory p0, string memory p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2));
	}

	function log(string memory p0, string memory p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2));
	}

	function log(string memory p0, bool p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", p0, p1, p2));
	}

	function log(string memory p0, bool p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2));
	}

	function log(string memory p0, bool p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2));
	}

	function log(string memory p0, bool p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2));
	}

	function log(string memory p0, address p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", p0, p1, p2));
	}

	function log(string memory p0, address p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2));
	}

	function log(string memory p0, address p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2));
	}

	function log(string memory p0, address p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2));
	}

	function log(bool p0, uint p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2));
	}

	function log(bool p0, uint p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2));
	}

	function log(bool p0, uint p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2));
	}

	function log(bool p0, uint p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2));
	}

	function log(bool p0, string memory p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", p0, p1, p2));
	}

	function log(bool p0, string memory p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2));
	}

	function log(bool p0, string memory p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2));
	}

	function log(bool p0, string memory p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2));
	}

	function log(bool p0, bool p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", p0, p1, p2));
	}

	function log(bool p0, bool p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2));
	}

	function log(bool p0, bool p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2));
	}

	function log(bool p0, bool p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2));
	}

	function log(bool p0, address p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", p0, p1, p2));
	}

	function log(bool p0, address p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2));
	}

	function log(bool p0, address p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2));
	}

	function log(bool p0, address p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2));
	}

	function log(address p0, uint p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2));
	}

	function log(address p0, uint p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2));
	}

	function log(address p0, uint p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2));
	}

	function log(address p0, uint p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2));
	}

	function log(address p0, string memory p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", p0, p1, p2));
	}

	function log(address p0, string memory p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2));
	}

	function log(address p0, string memory p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2));
	}

	function log(address p0, string memory p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2));
	}

	function log(address p0, bool p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", p0, p1, p2));
	}

	function log(address p0, bool p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2));
	}

	function log(address p0, bool p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2));
	}

	function log(address p0, bool p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2));
	}

	function log(address p0, address p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", p0, p1, p2));
	}

	function log(address p0, address p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2));
	}

	function log(address p0, address p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2));
	}

	function log(address p0, address p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2));
	}

	function log(uint p0, uint p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,address)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,string)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,address)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,uint)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,uint)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,address)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3));
	}

}


// File contracts/pangolin-lib/libraries/TransferHelper.sol


pragma solidity >=0.6.0;

// helper methods for interacting with ERC20 tokens and sending AVAX that do not consistently return true/false
library TransferHelper {
    function safeApprove(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
    }

    function safeTransfer(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
    }

    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
    }

    function safeTransferAVAX(address to, uint256 value) internal {
        (bool success, ) = to.call{value: value}(new bytes(0));
        require(success, 'TransferHelper: AVAX_TRANSFER_FAILED');
    }
}


// File contracts/pangolin-periphery/interfaces/IPangolinRouter.sol

pragma solidity >=0.6.2;

interface IPangolinRouter {
    function factory() external pure returns (address);
    function WAVAX() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityAVAX(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountAVAX, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityAVAX(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountAVAX);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityAVAXWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountAVAX);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactAVAXForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactAVAX(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForAVAX(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapAVAXForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);

    function removeLiquidityAVAXSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline
    ) external returns (uint amountAVAX);
    function removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountAVAX);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactAVAXForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForAVAXSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}


// File contracts/pangolin-core/interfaces/IPangolinPair.sol

pragma solidity >=0.5.0;

interface IPangolinPair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}


// File contracts/pangolin-periphery/libraries/SafeMath.sol

pragma solidity =0.6.6;

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)

library SafeMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, 'ds-math-add-overflow');
    }

    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, 'ds-math-sub-underflow');
    }

    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');
    }
}


// File contracts/pangolin-periphery/libraries/PangolinLibrary.sol

pragma solidity >=0.5.0;


library PangolinLibrary {
    using SafeMath for uint;

    // returns sorted token addresses, used to handle return values from pairs sorted in this order
    function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {
        require(tokenA != tokenB, 'PangolinLibrary: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'PangolinLibrary: ZERO_ADDRESS');
    }

    // calculates the CREATE2 address for a pair without making any external calls
    function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {
        (address token0, address token1) = sortTokens(tokenA, tokenB);
        pair = address(uint(keccak256(abi.encodePacked(
                hex'ff',
                factory,
                keccak256(abi.encodePacked(token0, token1)),
                hex'40231f6b438bce0797c9ada29b718a87ea0a5cea3fe9a771abdd76bd41a3e545' // init code hash
            ))));
    }

    // fetches and sorts the reserves for a pair
    function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {
        (address token0,) = sortTokens(tokenA, tokenB);
        (uint reserve0, uint reserve1,) = IPangolinPair(pairFor(factory, tokenA, tokenB)).getReserves();
        (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
    }

    // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset
    function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {
        require(amountA > 0, 'PangolinLibrary: INSUFFICIENT_AMOUNT');
        require(reserveA > 0 && reserveB > 0, 'PangolinLibrary: INSUFFICIENT_LIQUIDITY');
        amountB = amountA.mul(reserveB) / reserveA;
    }

    // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {
        require(amountIn > 0, 'PangolinLibrary: INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'PangolinLibrary: INSUFFICIENT_LIQUIDITY');
        uint amountInWithFee = amountIn.mul(997);
        uint numerator = amountInWithFee.mul(reserveOut);
        uint denominator = reserveIn.mul(1000).add(amountInWithFee);
        amountOut = numerator / denominator;
    }

    // given an output amount of an asset and pair reserves, returns a required input amount of the other asset
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {
        require(amountOut > 0, 'PangolinLibrary: INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'PangolinLibrary: INSUFFICIENT_LIQUIDITY');
        uint numerator = reserveIn.mul(amountOut).mul(1000);
        uint denominator = reserveOut.sub(amountOut).mul(997);
        amountIn = (numerator / denominator).add(1);
    }

    // performs chained getAmountOut calculations on any number of pairs
    function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'PangolinLibrary: INVALID_PATH');
        amounts = new uint[](path.length);
        amounts[0] = amountIn;
        for (uint i; i < path.length - 1; i++) {
            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);
            amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);
        }
    }

    // performs chained getAmountIn calculations on any number of pairs
    function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'PangolinLibrary: INVALID_PATH');
        amounts = new uint[](path.length);
        amounts[amounts.length - 1] = amountOut;
        for (uint i = path.length - 1; i > 0; i--) {
            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);
            amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);
        }
    }
}


// File contracts/pangolin-periphery/interfaces/IERC20.sol

pragma solidity >=0.5.0;

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}


// File contracts/pangolin-periphery/interfaces/IWAVAX.sol

pragma solidity >=0.5.0;

interface IWAVAX {
    function deposit() external payable;
    function transfer(address to, uint value) external returns (bool);
    function withdraw(uint) external;
}


// File contracts/pangolin-periphery/PangolinRouter.sol

pragma solidity =0.6.6;






contract PangolinRouter is IPangolinRouter {
    using SafeMath for uint;

    address public immutable override factory;
    address public immutable override WAVAX;

    modifier ensure(uint deadline) {
        require(deadline >= block.timestamp, 'PangolinRouter: EXPIRED');
        _;
    }

    constructor(address _factory, address _WAVAX) public {
        factory = _factory;
        WAVAX = _WAVAX;
    }

    receive() external payable {
        assert(msg.sender == WAVAX); // only accept AVAX via fallback from the WAVAX contract
    }

    // **** ADD LIQUIDITY ****
    function _addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin
    ) internal virtual returns (uint amountA, uint amountB) {
        // create the pair if it doesn't exist yet
        if (IPangolinFactory(factory).getPair(tokenA, tokenB) == address(0)) {
            IPangolinFactory(factory).createPair(tokenA, tokenB);
        }
        (uint reserveA, uint reserveB) = PangolinLibrary.getReserves(factory, tokenA, tokenB);
        if (reserveA == 0 && reserveB == 0) {
            (amountA, amountB) = (amountADesired, amountBDesired);
        } else {
            uint amountBOptimal = PangolinLibrary.quote(amountADesired, reserveA, reserveB);
            if (amountBOptimal <= amountBDesired) {
                require(amountBOptimal >= amountBMin, 'PangolinRouter: INSUFFICIENT_B_AMOUNT');
                (amountA, amountB) = (amountADesired, amountBOptimal);
            } else {
                uint amountAOptimal = PangolinLibrary.quote(amountBDesired, reserveB, reserveA);
                assert(amountAOptimal <= amountADesired);
                require(amountAOptimal >= amountAMin, 'PangolinRouter: INSUFFICIENT_A_AMOUNT');
                (amountA, amountB) = (amountAOptimal, amountBDesired);
            }
        }
    }
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {
        (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);
        address pair = PangolinLibrary.pairFor(factory, tokenA, tokenB);
        TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);
        TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);
        liquidity = IPangolinPair(pair).mint(to);
    }
    function addLiquidityAVAX(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline
    ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountAVAX, uint liquidity) {
        (amountToken, amountAVAX) = _addLiquidity(
            token,
            WAVAX,
            amountTokenDesired,
            msg.value,
            amountTokenMin,
            amountAVAXMin
        );
        address pair = PangolinLibrary.pairFor(factory, token, WAVAX);
        TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);
        IWAVAX(WAVAX).deposit{value: amountAVAX}();
        assert(IWAVAX(WAVAX).transfer(pair, amountAVAX));
        liquidity = IPangolinPair(pair).mint(to);
        // refund dust AVAX, if any
        if (msg.value > amountAVAX) TransferHelper.safeTransferAVAX(msg.sender, msg.value - amountAVAX);
    }

    // **** REMOVE LIQUIDITY ****
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {
        address pair = PangolinLibrary.pairFor(factory, tokenA, tokenB);
        IPangolinPair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair
        (uint amount0, uint amount1) = IPangolinPair(pair).burn(to);
        (address token0,) = PangolinLibrary.sortTokens(tokenA, tokenB);
        (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);
        require(amountA >= amountAMin, 'PangolinRouter: INSUFFICIENT_A_AMOUNT');
        require(amountB >= amountBMin, 'PangolinRouter: INSUFFICIENT_B_AMOUNT');
    }
    function removeLiquidityAVAX(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountToken, uint amountAVAX) {
        (amountToken, amountAVAX) = removeLiquidity(
            token,
            WAVAX,
            liquidity,
            amountTokenMin,
            amountAVAXMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, amountToken);
        IWAVAX(WAVAX).withdraw(amountAVAX);
        TransferHelper.safeTransferAVAX(to, amountAVAX);
    }
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountA, uint amountB) {
        address pair = PangolinLibrary.pairFor(factory, tokenA, tokenB);
        uint value = approveMax ? uint(-1) : liquidity;
        IPangolinPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);
    }
    function removeLiquidityAVAXWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountToken, uint amountAVAX) {
        address pair = PangolinLibrary.pairFor(factory, token, WAVAX);
        uint value = approveMax ? uint(-1) : liquidity;
        IPangolinPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountToken, amountAVAX) = removeLiquidityAVAX(token, liquidity, amountTokenMin, amountAVAXMin, to, deadline);
    }

    // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****
    function removeLiquidityAVAXSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountAVAX) {
        (, amountAVAX) = removeLiquidity(
            token,
            WAVAX,
            liquidity,
            amountTokenMin,
            amountAVAXMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));
        IWAVAX(WAVAX).withdraw(amountAVAX);
        TransferHelper.safeTransferAVAX(to, amountAVAX);
    }
    function removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountAVAX) {
        address pair = PangolinLibrary.pairFor(factory, token, WAVAX);
        uint value = approveMax ? uint(-1) : liquidity;
        IPangolinPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        amountAVAX = removeLiquidityAVAXSupportingFeeOnTransferTokens(
            token, liquidity, amountTokenMin, amountAVAXMin, to, deadline
        );
    }

    // **** SWAP ****
    // requires the initial amount to have already been sent to the first pair
    function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = PangolinLibrary.sortTokens(input, output);
            uint amountOut = amounts[i + 1];
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));
            address to = i < path.length - 2 ? PangolinLibrary.pairFor(factory, output, path[i + 2]) : _to;
            IPangolinPair(PangolinLibrary.pairFor(factory, input, output)).swap(
                amount0Out, amount1Out, to, new bytes(0)
            );
        }
    }
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        amounts = PangolinLibrary.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'PangolinRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, PangolinLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        amounts = PangolinLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'PangolinRouter: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, PangolinLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapExactAVAXForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WAVAX, 'PangolinRouter: INVALID_PATH');
        amounts = PangolinLibrary.getAmountsOut(factory, msg.value, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'PangolinRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        IWAVAX(WAVAX).deposit{value: amounts[0]}();
        assert(IWAVAX(WAVAX).transfer(PangolinLibrary.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
    }
    function swapTokensForExactAVAX(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[path.length - 1] == WAVAX, 'PangolinRouter: INVALID_PATH');
        amounts = PangolinLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'PangolinRouter: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, PangolinLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWAVAX(WAVAX).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferAVAX(to, amounts[amounts.length - 1]);
    }
    function swapExactTokensForAVAX(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[path.length - 1] == WAVAX, 'PangolinRouter: INVALID_PATH');
        amounts = PangolinLibrary.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'PangolinRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, PangolinLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWAVAX(WAVAX).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferAVAX(to, amounts[amounts.length - 1]);
    }
    function swapAVAXForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WAVAX, 'PangolinRouter: INVALID_PATH');
        amounts = PangolinLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= msg.value, 'PangolinRouter: EXCESSIVE_INPUT_AMOUNT');
        IWAVAX(WAVAX).deposit{value: amounts[0]}();
        assert(IWAVAX(WAVAX).transfer(PangolinLibrary.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
        // refund dust AVAX, if any
        if (msg.value > amounts[0]) TransferHelper.safeTransferAVAX(msg.sender, msg.value - amounts[0]);
    }

    // **** SWAP (supporting fee-on-transfer tokens) ****
    // requires the initial amount to have already been sent to the first pair
    function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = PangolinLibrary.sortTokens(input, output);
            IPangolinPair pair = IPangolinPair(PangolinLibrary.pairFor(factory, input, output));
            uint amountInput;
            uint amountOutput;
            { // scope to avoid stack too deep errors
            (uint reserve0, uint reserve1,) = pair.getReserves();
            (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
            amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);
            amountOutput = PangolinLibrary.getAmountOut(amountInput, reserveInput, reserveOutput);
            }
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));
            address to = i < path.length - 2 ? PangolinLibrary.pairFor(factory, output, path[i + 2]) : _to;
            pair.swap(amount0Out, amount1Out, to, new bytes(0));
        }
    }
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) {
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, PangolinLibrary.pairFor(factory, path[0], path[1]), amountIn
        );
        uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'PangolinRouter: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactAVAXForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        payable
        ensure(deadline)
    {
        require(path[0] == WAVAX, 'PangolinRouter: INVALID_PATH');
        uint amountIn = msg.value;
        IWAVAX(WAVAX).deposit{value: amountIn}();
        assert(IWAVAX(WAVAX).transfer(PangolinLibrary.pairFor(factory, path[0], path[1]), amountIn));
        uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'PangolinRouter: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactTokensForAVAXSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        ensure(deadline)
    {
        require(path[path.length - 1] == WAVAX, 'PangolinRouter: INVALID_PATH');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, PangolinLibrary.pairFor(factory, path[0], path[1]), amountIn
        );
        _swapSupportingFeeOnTransferTokens(path, address(this));
        uint amountOut = IERC20(WAVAX).balanceOf(address(this));
        require(amountOut >= amountOutMin, 'PangolinRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        IWAVAX(WAVAX).withdraw(amountOut);
        TransferHelper.safeTransferAVAX(to, amountOut);
    }

    // **** LIBRARY FUNCTIONS ****
    function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {
        return PangolinLibrary.quote(amountA, reserveA, reserveB);
    }

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)
        public
        pure
        virtual
        override
        returns (uint amountOut)
    {
        return PangolinLibrary.getAmountOut(amountIn, reserveIn, reserveOut);
    }

    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)
        public
        pure
        virtual
        override
        returns (uint amountIn)
    {
        return PangolinLibrary.getAmountIn(amountOut, reserveIn, reserveOut);
    }

    function getAmountsOut(uint amountIn, address[] memory path)
        public
        view
        virtual
        override
        returns (uint[] memory amounts)
    {
        return PangolinLibrary.getAmountsOut(factory, amountIn, path);
    }

    function getAmountsIn(uint amountOut, address[] memory path)
        public
        view
        virtual
        override
        returns (uint[] memory amounts)
    {
        return PangolinLibrary.getAmountsIn(factory, amountOut, path);
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WAVAX","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WAVAX","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityAVAX","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAVAX","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityAVAX","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAVAX","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityAVAXSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountAVAX","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityAVAXWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAVAX","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountAVAX","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapAVAXForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactAVAXForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactAVAXForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForAVAX","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForAVAXSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactAVAX","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405234801561001057600080fd5b50604051620048e9380380620048e98339818101604052604081101561003557600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c614764620001856000398061019f5280610e5e5280610f935280610fce528061152952806116cb528061178152806117ef528061189e52806119725280611a7e5280611b345280611c0a5280611ea65280611ffb52806120835280612226528061235252806124aa5280612532528061293952806129e05280612a545280612e495280612e9f5280612ed35280612f47525080610d095280610d425280610e3c52806110ab528061118252806112ae52806115c95280611caa5280611db05280611f4b52806120b5528061220452806123f7528061256452806126c052806128d15280612a865280612c985280612d215280612e7d528061399c52806139df5280613b8a5280613d10528061417a528061424152806142c152506147646000f3fe60806040526004361061018f5760003560e01c806385f8c259116100d6578063baa2abde1161007f578063d06ca61f11610059578063d06ca61f14610b70578063e8e3370014610c27578063f91b3f7214610ca7576101c8565b8063baa2abde14610a78578063c45a015514610ad5578063c57559dd14610aea576101c8565b80639fc27226116100b05780639fc2722614610949578063a2a1623d146109bc578063ad615dec14610a42576101c8565b806385f8c259146107f55780638803dbee1461082b5780638a657e67146108c3576101c8565b80635c11d7951161013857806373bc79cf1161011257806373bc79cf14610672578063762b1562146106c55780637a42416a1461075d576101c8565b80635c11d79514610511578063676528d1146105a957806373b295c214610641576101c8565b80632c407024116101695780632c407024146103b357806333c6b7251461042657806338ed173914610479576101c8565b8063054d50d4146101cd5780631f00ca74146102155780632195995c1461031c576101c8565b366101c857336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101c657fe5b005b600080fd5b3480156101d957600080fd5b50610203600480360360608110156101f057600080fd5b5080359060208101359060400135610ced565b60408051918252519081900360200190f35b34801561022157600080fd5b506102cc6004803603604081101561023857600080fd5b8135919081019060408101602082013564010000000081111561025a57600080fd5b82018360208201111561026c57600080fd5b8035906020019184602083028401116401000000008311171561028e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610d02945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103085781810151838201526020016102f0565b505050509050019250505060405180910390f35b34801561032857600080fd5b5061039a600480360361016081101561034057600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135610d38565b6040805192835260208301919091528051918290030190f35b3480156103bf57600080fd5b5061039a60048036036101408110156103d757600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135610e32565b34801561043257600080fd5b5061039a600480360360c081101561044957600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610f46565b34801561048557600080fd5b506102cc600480360360a081101561049c57600080fd5b8135916020810135918101906060810160408201356401000000008111156104c357600080fd5b8201836020820111156104d557600080fd5b803590602001918460208302840111640100000000831117156104f757600080fd5b91935091506001600160a01b038135169060200135611060565b34801561051d57600080fd5b506101c6600480360360a081101561053457600080fd5b81359160208101359181019060608101604082013564010000000081111561055b57600080fd5b82018360208201111561056d57600080fd5b8035906020019184602083028401116401000000008311171561058f57600080fd5b91935091506001600160a01b038135169060200135611244565b3480156105b557600080fd5b506102cc600480360360a08110156105cc57600080fd5b8135916020810135918101906060810160408201356401000000008111156105f357600080fd5b82018360208201111561060557600080fd5b8035906020019184602083028401116401000000008311171561062757600080fd5b91935091506001600160a01b0381351690602001356114d9565b34801561064d57600080fd5b5061065661177f565b604080516001600160a01b039092168252519081900360200190f35b34801561067e57600080fd5b50610203600480360360c081101561069557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a001356117a3565b3480156106d157600080fd5b506101c6600480360360a08110156106e857600080fd5b81359160208101359181019060608101604082013564010000000081111561070f57600080fd5b82018360208201111561072157600080fd5b8035906020019184602083028401116401000000008311171561074357600080fd5b91935091506001600160a01b038135169060200135611924565b34801561076957600080fd5b506102cc600480360360a081101561078057600080fd5b8135916020810135918101906060810160408201356401000000008111156107a757600080fd5b8201836020820111156107b957600080fd5b803590602001918460208302840111640100000000831117156107db57600080fd5b91935091506001600160a01b038135169060200135611bba565b34801561080157600080fd5b506102036004803603606081101561081857600080fd5b5080359060208101359060400135611d58565b34801561083757600080fd5b506102cc600480360360a081101561084e57600080fd5b81359160208101359181019060608101604082013564010000000081111561087557600080fd5b82018360208201111561088757600080fd5b803590602001918460208302840111640100000000831117156108a957600080fd5b91935091506001600160a01b038135169060200135611d65565b6102cc600480360360808110156108d957600080fd5b813591908101906040810160208201356401000000008111156108fb57600080fd5b82018360208201111561090d57600080fd5b8035906020019184602083028401116401000000008311171561092f57600080fd5b91935091506001600160a01b038135169060200135611e5e565b34801561095557600080fd5b50610203600480360361014081101561096d57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356121fc565b6102cc600480360360808110156109d257600080fd5b813591908101906040810160208201356401000000008111156109f457600080fd5b820183602082011115610a0657600080fd5b80359060200191846020830284011164010000000083111715610a2857600080fd5b91935091506001600160a01b03813516906020013561230a565b348015610a4e57600080fd5b5061020360048036036060811015610a6557600080fd5b5080359060208101359060400135612665565b348015610a8457600080fd5b5061039a600480360360e0811015610a9b57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612672565b348015610ae157600080fd5b506106566128cf565b6101c660048036036080811015610b0057600080fd5b81359190810190604081016020820135640100000000811115610b2257600080fd5b820183602082011115610b3457600080fd5b80359060200191846020830284011164010000000083111715610b5657600080fd5b91935091506001600160a01b0381351690602001356128f3565b348015610b7c57600080fd5b506102cc60048036036040811015610b9357600080fd5b81359190810190604081016020820135640100000000811115610bb557600080fd5b820183602082011115610bc757600080fd5b80359060200191846020830284011164010000000083111715610be957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612c91945050505050565b348015610c3357600080fd5b50610c896004803603610100811015610c4b57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135612cbe565b60408051938452602084019290925282820152519081900360600190f35b610c89600480360360c0811015610cbd57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612dfa565b6000610cfa84848461309f565b949350505050565b6060610d2f7f0000000000000000000000000000000000000000000000000000000000000000848461318f565b90505b92915050565b6000806000610d687f00000000000000000000000000000000000000000000000000000000000000008f8f6132dc565b9050600087610d77578c610d7b565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015610df157600080fd5b505af1158015610e05573d6000803e3d6000fd5b50505050610e188f8f8f8f8f8f8f612672565b809450819550505050509b509b9950505050505050505050565b6000806000610e827f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006132dc565b9050600087610e91578c610e95565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015610f0b57600080fd5b505af1158015610f1f573d6000803e3d6000fd5b50505050610f318e8e8e8e8e8e610f46565b909f909e509c50505050505050505050505050565b6000808242811015610f8d576040805162461bcd60e51b8152602060048201526017602482015260008051602061464a833981519152604482015290519081900360640190fd5b610fbc897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612672565b9093509150610fcc8986856133b4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561103257600080fd5b505af1158015611046573d6000803e3d6000fd5b50505050611054858361354c565b50965096945050505050565b606081428110156110a6576040805162461bcd60e51b8152602060048201526017602482015260008051602061464a833981519152604482015290519081900360640190fd5b6111047f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061364492505050565b9150868260018451038151811061111757fe5b6020026020010151101561115c5760405162461bcd60e51b815260040180806020018281038252602a8152602001806145d6602a913960400191505060405180910390fd5b6111fa8686600081811061116c57fe5b905060200201356001600160a01b0316336111e07f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106111ae57fe5b905060200201356001600160a01b03168b8b60018181106111cb57fe5b905060200201356001600160a01b03166132dc565b856000815181106111ed57fe5b602002602001015161377b565b611239828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506138ed915050565b509695505050505050565b8042811015611288576040805162461bcd60e51b8152602060048201526017602482015260008051602061464a833981519152604482015290519081900360640190fd5b6112fd8585600081811061129857fe5b905060200201356001600160a01b0316336112f77f0000000000000000000000000000000000000000000000000000000000000000898960008181106112da57fe5b905060200201356001600160a01b03168a8a60018181106111cb57fe5b8a61377b565b60008585600019810181811061130f57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561137457600080fd5b505afa158015611388573d6000803e3d6000fd5b505050506040513d602081101561139e57600080fd5b505160408051602088810282810182019093528882529293506113e0929091899189918291850190849080828437600092019190915250889250613b33915050565b8661149282888860001981018181106113f557fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561145a57600080fd5b505afa15801561146e573d6000803e3d6000fd5b505050506040513d602081101561148457600080fd5b50519063ffffffff613e5e16565b10156114cf5760405162461bcd60e51b815260040180806020018281038252602a8152602001806145d6602a913960400191505060405180910390fd5b5050505050505050565b6060814281101561151f576040805162461bcd60e51b8152602060048201526017602482015260008051602061464a833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686600019810181811061155957fe5b905060200201356001600160a01b03166001600160a01b0316146115c4576040805162461bcd60e51b815260206004820152601c60248201527f50616e676f6c696e526f757465723a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b6116227f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061364492505050565b9150868260018451038151811061163557fe5b6020026020010151101561167a5760405162461bcd60e51b815260040180806020018281038252602a8152602001806145d6602a913960400191505060405180910390fd5b61168a8686600081811061116c57fe5b6116c9828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506138ed915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d8360018551038151811061170857fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561174657600080fd5b505af115801561175a573d6000803e3d6000fd5b50505050611239848360018551038151811061177257fe5b602002602001015161354c565b7f000000000000000000000000000000000000000000000000000000000000000081565b600081428110156117e9576040805162461bcd60e51b8152602060048201526017602482015260008051602061464a833981519152604482015290519081900360640190fd5b611818887f00000000000000000000000000000000000000000000000000000000000000008989893089612672565b604080516370a0823160e01b8152306004820152905191945061189c92508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561186b57600080fd5b505afa15801561187f573d6000803e3d6000fd5b505050506040513d602081101561189557600080fd5b50516133b4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561190257600080fd5b505af1158015611916573d6000803e3d6000fd5b50505050611239848361354c565b8042811015611968576040805162461bcd60e51b8152602060048201526017602482015260008051602061464a833981519152604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016858560001981018181106119a257fe5b905060200201356001600160a01b03166001600160a01b031614611a0d576040805162461bcd60e51b815260206004820152601c60248201527f50616e676f6c696e526f757465723a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b611a1d8585600081811061129857fe5b611a5b858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613b33915050565b604080516370a0823160e01b815230600482015290516000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611ac557600080fd5b505afa158015611ad9573d6000803e3d6000fd5b505050506040513d6020811015611aef57600080fd5b5051905086811015611b325760405162461bcd60e51b815260040180806020018281038252602a8152602001806145d6602a913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611b9857600080fd5b505af1158015611bac573d6000803e3d6000fd5b505050506114cf848261354c565b60608142811015611c00576040805162461bcd60e51b8152602060048201526017602482015260008051602061464a833981519152604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866000198101818110611c3a57fe5b905060200201356001600160a01b03166001600160a01b031614611ca5576040805162461bcd60e51b815260206004820152601c60248201527f50616e676f6c696e526f757465723a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b611d037f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061318f92505050565b91508682600081518110611d1357fe5b6020026020010151111561167a5760405162461bcd60e51b81526004018080602001828103825260268152602001806146246026913960400191505060405180910390fd5b6000610cfa848484613eb6565b60608142811015611dab576040805162461bcd60e51b8152602060048201526017602482015260008051602061464a833981519152604482015290519081900360640190fd5b611e097f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061318f92505050565b91508682600081518110611e1957fe5b6020026020010151111561115c5760405162461bcd60e51b81526004018080602001828103825260268152602001806146246026913960400191505060405180910390fd5b60608142811015611ea4576040805162461bcd60e51b8152602060048201526017602482015260008051602061464a833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110611edb57fe5b905060200201356001600160a01b03166001600160a01b031614611f46576040805162461bcd60e51b815260206004820152601c60248201527f50616e676f6c696e526f757465723a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b611fa47f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061318f92505050565b91503482600081518110611fb457fe5b60200260200101511115611ff95760405162461bcd60e51b81526004018080602001828103825260268152602001806146246026913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061203557fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561206857600080fd5b505af115801561207c573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6120e17f0000000000000000000000000000000000000000000000000000000000000000898960008181106112da57fe5b846000815181106120ee57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561214557600080fd5b505af1158015612159573d6000803e3d6000fd5b505050506040513d602081101561216f57600080fd5b505161217757fe5b6121b6828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506138ed915050565b816000815181106121c357fe5b60200260200101513411156121f2576121f233836000815181106121e357fe5b6020026020010151340361354c565b5095945050505050565b60008061224a7f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006132dc565b9050600086612259578b61225d565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156122d357600080fd5b505af11580156122e7573d6000803e3d6000fd5b505050506122f98d8d8d8d8d8d6117a3565b9d9c50505050505050505050505050565b60608142811015612350576040805162461bcd60e51b8152602060048201526017602482015260008051602061464a833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168686600081811061238757fe5b905060200201356001600160a01b03166001600160a01b0316146123f2576040805162461bcd60e51b815260206004820152601c60248201527f50616e676f6c696e526f757465723a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b6124507f00000000000000000000000000000000000000000000000000000000000000003488888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061364492505050565b9150868260018451038151811061246357fe5b602002602001015110156124a85760405162461bcd60e51b815260040180806020018281038252602a8152602001806145d6602a913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836000815181106124e457fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561251757600080fd5b505af115801561252b573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6125907f0000000000000000000000000000000000000000000000000000000000000000898960008181106112da57fe5b8460008151811061259d57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156125f457600080fd5b505af1158015612608573d6000803e3d6000fd5b505050506040513d602081101561261e57600080fd5b505161262657fe5b6121f2828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506138ed915050565b6000610cfa848484613fa6565b60008082428110156126b9576040805162461bcd60e51b8152602060048201526017602482015260008051602061464a833981519152604482015290519081900360640190fd5b60006126e67f00000000000000000000000000000000000000000000000000000000000000008c8c6132dc565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b15801561274157600080fd5b505af1158015612755573d6000803e3d6000fd5b505050506040513d602081101561276b57600080fd5b5050604080517f89afcb440000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b1580156127d157600080fd5b505af11580156127e5573d6000803e3d6000fd5b505050506040513d60408110156127fb57600080fd5b508051602090910151909250905060006128158e8e614052565b509050806001600160a01b03168e6001600160a01b03161461283857818361283b565b82825b90975095508a87101561287f5760405162461bcd60e51b815260040180806020018281038252602581526020018061466a6025913960400191505060405180910390fd5b898610156128be5760405162461bcd60e51b81526004018080602001828103825260258152602001806145696025913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b8042811015612937576040805162461bcd60e51b8152602060048201526017602482015260008051602061464a833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168585600081811061296e57fe5b905060200201356001600160a01b03166001600160a01b0316146129d9576040805162461bcd60e51b815260206004820152601c60248201527f50616e676f6c696e526f757465723a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a3957600080fd5b505af1158015612a4d573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb612ab27f0000000000000000000000000000000000000000000000000000000000000000898960008181106112da57fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612b0257600080fd5b505af1158015612b16573d6000803e3d6000fd5b505050506040513d6020811015612b2c57600080fd5b5051612b3457fe5b600086866000198101818110612b4657fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612bab57600080fd5b505afa158015612bbf573d6000803e3d6000fd5b505050506040513d6020811015612bd557600080fd5b50516040805160208981028281018201909352898252929350612c179290918a918a918291850190849080828437600092019190915250899250613b33915050565b876114928289896000198101818110612c2c57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561145a57600080fd5b6060610d2f7f00000000000000000000000000000000000000000000000000000000000000008484613644565b60008060008342811015612d07576040805162461bcd60e51b8152602060048201526017602482015260008051602061464a833981519152604482015290519081900360640190fd5b612d158c8c8c8c8c8c614130565b90945092506000612d477f00000000000000000000000000000000000000000000000000000000000000008e8e6132dc565b9050612d558d33838861377b565b612d618c33838761377b565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015612db957600080fd5b505af1158015612dcd573d6000803e3d6000fd5b505050506040513d6020811015612de357600080fd5b5051949d939c50939a509198505050505050505050565b60008060008342811015612e43576040805162461bcd60e51b8152602060048201526017602482015260008051602061464a833981519152604482015290519081900360640190fd5b612e718a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614130565b90945092506000612ec37f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006132dc565b9050612ed18b33838861377b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612f2c57600080fd5b505af1158015612f40573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612fc557600080fd5b505af1158015612fd9573d6000803e3d6000fd5b505050506040513d6020811015612fef57600080fd5b5051612ff757fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561304f57600080fd5b505af1158015613063573d6000803e3d6000fd5b505050506040513d602081101561307957600080fd5b5051925034841015613091576130913385340361354c565b505096509650969350505050565b60008084116130df5760405162461bcd60e51b815260040180806020018281038252602a81526020018061468f602a913960400191505060405180910390fd5b6000831180156130ef5750600082115b61312a5760405162461bcd60e51b81526004018080602001828103825260278152602001806146dd6027913960400191505060405180910390fd5b600061313e856103e563ffffffff6143d616565b90506000613152828563ffffffff6143d616565b905060006131788361316c886103e863ffffffff6143d616565b9063ffffffff61444216565b905080828161318357fe5b04979650505050505050565b60606002825110156131e8576040805162461bcd60e51b815260206004820152601d60248201527f50616e676f6c696e4c6962726172793a20494e56414c49445f50415448000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561320057600080fd5b5060405190808252806020026020018201604052801561322a578160200160208202803683370190505b509050828160018351038151811061323e57fe5b60209081029190910101528151600019015b80156132d45760008061328d8786600186038151811061326c57fe5b602002602001015187868151811061328057fe5b602002602001015161449a565b915091506132af8484815181106132a057fe5b60200260200101518383613eb6565b8460018503815181106132be57fe5b6020908102919091010152505060001901613250565b509392505050565b60008060006132eb8585614052565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f40231f6b438bce0797c9ada29b718a87ea0a5cea3fe9a771abdd76bd41a3e545609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b6020831061345f5780518252601f199092019160209182019101613440565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146134c1576040519150601f19603f3d011682016040523d82523d6000602084013e6134c6565b606091505b50915091508180156134f45750805115806134f457508080602001905160208110156134f157600080fd5b50515b613545576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106135985780518252601f199092019160209182019101613579565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146135fa576040519150601f19603f3d011682016040523d82523d6000602084013e6135ff565b606091505b505090508061363f5760405162461bcd60e51b81526004018080602001828103825260248152602001806146006024913960400191505060405180910390fd5b505050565b606060028251101561369d576040805162461bcd60e51b815260206004820152601d60248201527f50616e676f6c696e4c6962726172793a20494e56414c49445f50415448000000604482015290519081900360640190fd5b815167ffffffffffffffff811180156136b557600080fd5b506040519080825280602002602001820160405280156136df578160200160208202803683370190505b50905082816000815181106136f057fe5b60200260200101818152505060005b60018351038110156132d4576000806137358786858151811061371e57fe5b602002602001015187866001018151811061328057fe5b9150915061375784848151811061374857fe5b6020026020010151838361309f565b84846001018151811061376657fe5b602090810291909101015250506001016136ff565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106138155780518252601f1990920191602091820191016137f6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613877576040519150601f19603f3d011682016040523d82523d6000602084013e61387c565b606091505b50915091508180156138aa5750805115806138aa57508080602001905160208110156138a757600080fd5b50515b6138e55760405162461bcd60e51b81526004018080602001828103825260248152602001806146b96024913960400191505060405180910390fd5b505050505050565b60005b6001835103811015613b2d5760008084838151811061390b57fe5b602002602001015185846001018151811061392257fe5b602002602001015191509150600061393a8383614052565b509050600087856001018151811061394e57fe5b60200260200101519050600080836001600160a01b0316866001600160a01b03161461397c57826000613980565b6000835b91509150600060028a5103881061399757886139d8565b6139d87f0000000000000000000000000000000000000000000000000000000000000000878c8b600201815181106139cb57fe5b60200260200101516132dc565b9050613a057f000000000000000000000000000000000000000000000000000000000000000088886132dc565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015613a42576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613ab3578181015183820152602001613a9b565b50505050905090810190601f168015613ae05780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613b0257600080fd5b505af1158015613b16573d6000803e3d6000fd5b5050600190990198506138f0975050505050505050565b50505050565b60005b600183510381101561363f57600080848381518110613b5157fe5b6020026020010151858460010181518110613b6857fe5b6020026020010151915091506000613b808383614052565b5090506000613bb07f000000000000000000000000000000000000000000000000000000000000000085856132dc565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613bf157600080fd5b505afa158015613c05573d6000803e3d6000fd5b505050506040513d6060811015613c1b57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a811690891614613c58578284613c5b565b83835b91509150613cb9828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561145a57600080fd5b9550613cc686838361309f565b945050505050600080856001600160a01b0316886001600160a01b031614613cf057826000613cf4565b6000835b91509150600060028c51038a10613d0b578a613d3f565b613d3f7f0000000000000000000000000000000000000000000000000000000000000000898e8d600201815181106139cb57fe5b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015613de2578181015183820152602001613dca565b50505050905090810190601f168015613e0f5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613e3157600080fd5b505af1158015613e45573d6000803e3d6000fd5b50506001909b019a50613b369950505050505050505050565b80820382811115610d32576040805162461bcd60e51b815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411613ef65760405162461bcd60e51b815260040180806020018281038252602b815260200180614704602b913960400191505060405180910390fd5b600083118015613f065750600082115b613f415760405162461bcd60e51b81526004018080602001828103825260278152602001806146dd6027913960400191505060405180910390fd5b6000613f656103e8613f59868863ffffffff6143d616565b9063ffffffff6143d616565b90506000613f7f6103e5613f59868963ffffffff613e5e16565b9050613f9c6001828481613f8f57fe5b049063ffffffff61444216565b9695505050505050565b6000808411613fe65760405162461bcd60e51b815260040180806020018281038252602481526020018061458e6024913960400191505060405180910390fd5b600083118015613ff65750600082115b6140315760405162461bcd60e51b81526004018080602001828103825260278152602001806146dd6027913960400191505060405180910390fd5b82614042858463ffffffff6143d616565b8161404957fe5b04949350505050565b600080826001600160a01b0316846001600160a01b031614156140a65760405162461bcd60e51b81526004018080602001828103825260248152602001806145b26024913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b0316106140c65782846140c9565b83835b90925090506001600160a01b038216614129576040805162461bcd60e51b815260206004820152601d60248201527f50616e676f6c696e4c6962726172793a205a45524f5f41444452455353000000604482015290519081900360640190fd5b9250929050565b604080517fe6a439050000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b1580156141c357600080fd5b505afa1580156141d7573d6000803e3d6000fd5b505050506040513d60208110156141ed57600080fd5b50516001600160a01b031614156142b957604080517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b15801561428c57600080fd5b505af11580156142a0573d6000803e3d6000fd5b505050506040513d60208110156142b657600080fd5b50505b6000806142e77f00000000000000000000000000000000000000000000000000000000000000008b8b61449a565b915091508160001480156142f9575080155b15614309578793508692506143c9565b6000614316898484613fa6565b9050878111614369578581101561435e5760405162461bcd60e51b81526004018080602001828103825260258152602001806145696025913960400191505060405180910390fd5b8894509250826143c7565b6000614376898486613fa6565b90508981111561438257fe5b878110156143c15760405162461bcd60e51b815260040180806020018281038252602581526020018061466a6025913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b60008115806143f1575050808202828282816143ee57fe5b04145b610d32576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820182811015610d32576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006144a98585614052565b5090506000806144ba8888886132dc565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156144f257600080fd5b505afa158015614506573d6000803e3d6000fd5b505050506040513d606081101561451c57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614614556578082614559565b81815b9099909850965050505050505056fe50616e676f6c696e526f757465723a20494e53554646494349454e545f425f414d4f554e5450616e676f6c696e4c6962726172793a20494e53554646494349454e545f414d4f554e5450616e676f6c696e4c6962726172793a204944454e544943414c5f41444452455353455350616e676f6c696e526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a20415641585f5452414e534645525f4641494c454450616e676f6c696e526f757465723a204558434553534956455f494e5055545f414d4f554e5450616e676f6c696e526f757465723a204558504952454400000000000000000050616e676f6c696e526f757465723a20494e53554646494349454e545f415f414d4f554e5450616e676f6c696e4c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c454450616e676f6c696e4c6962726172793a20494e53554646494349454e545f4c495155494449545950616e676f6c696e4c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54a2646970667358221220307011fde332e86c34aad884e01fd97a640d53ae915b742590ee575b7c0db3b564736f6c63430006060033000000000000000000000000efa94de7a4656d787667c749f7e1223d71e9fd88000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000efa94de7a4656d787667c749f7e1223d71e9fd88000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7

-----Decoded View---------------
Arg [0] : _factory (address): 0xefa94de7a4656d787667c749f7e1223d71e9fd88
Arg [1] : _WAVAX (address): 0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000efa94de7a4656d787667c749f7e1223d71e9fd88
Arg [1] : 000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7


Deployed ByteCode Sourcemap

80145:18570:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;80624:10;-1:-1:-1;;;;;80638:5:0;80624:19;;80617:27;;;;80145:18570;;12:1:-1;9;2:12;97663:261:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;97663:261:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;97663:261:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;98460:252;;5:9:-1;2:2;;;27:1;24;17:12;2:2;98460:252:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;98460:252:0;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;98460:252:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;98460:252:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;98460:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;98460:252:0;;-1:-1:-1;98460:252:0;;-1:-1:-1;;;;;98460:252:0:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;98460:252:0;;;;;;;;;;;;;;;;;85467:675;;5:9:-1;2:2;;;27:1;24;17:12;2:2;85467:675:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;85467:675:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;86148:674;;5:9:-1;2:2;;;27:1;24;17:12;2:2;86148:674:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;86148:674:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;84777:684::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;84777:684:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;84777:684:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;89189:625::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;89189:625:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;89189:625:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;89189:625:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;89189:625:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;89189:625:0;;-1:-1:-1;89189:625:0;-1:-1:-1;;;;;;89189:625:0;;;;;;;;:::i;95001:712::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;95001:712:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;95001:712:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;95001:712:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;95001:712:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;95001:712:0;;-1:-1:-1;95001:712:0;-1:-1:-1;;;;;;95001:712:0;;;;;;;;:::i;91969:851::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;91969:851:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;91969:851:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;91969:851:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;91969:851:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;91969:851:0;;-1:-1:-1;91969:851:0;-1:-1:-1;;;;;;91969:851:0;;;;;;;;:::i;80275:39::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;80275:39:0;;;:::i;:::-;;;;-1:-1:-1;;;;;80275:39:0;;;;;;;;;;;;;;86901:711;;5:9:-1;2:2;;;27:1;24;17:12;2:2;86901:711:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;86901:711:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;96578:846::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;96578:846:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;96578:846:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;96578:846:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;96578:846:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;96578:846:0;;-1:-1:-1;96578:846:0;-1:-1:-1;;;;;;96578:846:0;;;;;;;;:::i;91134:829::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;91134:829:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;91134:829:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;91134:829:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;91134:829:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;91134:829:0;;-1:-1:-1;91134:829:0;-1:-1:-1;;;;;;91134:829:0;;;;;;;;:::i;97932:260::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;97932:260:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;97932:260:0;;;;;;;;;;;;:::i;89820:603::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;89820:603:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;89820:603:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;89820:603:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;89820:603:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;89820:603:0;;-1:-1:-1;89820:603:0;-1:-1:-1;;;;;;89820:603:0;;;;;;;;:::i;92826:814::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;92826:814:0;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;92826:814:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;92826:814:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;92826:814:0;;-1:-1:-1;92826:814:0;-1:-1:-1;;;;;;92826:814:0;;;;;;;;:::i;87618:723::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;87618:723:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;87618:723:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;90429:699::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;90429:699:0;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;90429:699:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;90429:699:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;90429:699:0;;-1:-1:-1;90429:699:0;-1:-1:-1;;;;;;90429:699:0;;;;;;;;:::i;97468:187::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;97468:187:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;97468:187:0;;;;;;;;;;;;:::i;83912:859::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;83912:859:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;83912:859:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;80227:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;80227:41:0;;;:::i;95719:853::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;95719:853:0;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;95719:853:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;95719:853:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;95719:853:0;;-1:-1:-1;95719:853:0;-1:-1:-1;;;;;;95719:853:0;;;;;;;;:::i;98200:252::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;98200:252:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;98200:252:0;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;98200:252:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;98200:252:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;98200:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;98200:252:0;;-1:-1:-1;98200:252:0;;-1:-1:-1;;;;;98200:252:0:i;82138:736::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;82138:736:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;82138:736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;82880:989;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;82880:989:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;97663:261::-;97816:14;97855:61;97884:8;97894:9;97905:10;97855:28;:61::i;:::-;97848:68;97663:261;-1:-1:-1;;;;97663:261:0:o;98460:252::-;98604:21;98650:54;98679:7;98688:9;98699:4;98650:28;:54::i;:::-;98643:61;;98460:252;;;;;:::o;85467:675::-;85773:12;85787;85812;85827:48;85851:7;85860:6;85868;85827:23;:48::i;:::-;85812:63;;85886:10;85899;:33;;85923:9;85899:33;;;-1:-1:-1;;85899:33:0;85943:79;;;-1:-1:-1;;;85943:79:0;;85970:10;85943:79;;;;85990:4;85943:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;85886:46;;-1:-1:-1;;;;;;85943:26:0;;;;;:79;;;;;-1:-1:-1;;85943:79:0;;;;;;;;-1:-1:-1;85943:26:0;:79;;;2:2:-1;;;;27:1;24;17:12;2:2;85943:79:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;85943:79:0;;;;86054:80;86070:6;86078;86086:9;86097:10;86109;86121:2;86125:8;86054:15;:80::i;:::-;86033:101;;;;;;;;85467:675;;;;;;;;;;;;;;;;:::o;86148:674::-;86439:16;86457:15;86485:12;86500:46;86524:7;86533:5;86540;86500:23;:46::i;:::-;86485:61;;86557:10;86570;:33;;86594:9;86570:33;;;-1:-1:-1;;86570:33:0;86614:79;;;-1:-1:-1;;;86614:79:0;;86641:10;86614:79;;;;86661:4;86614:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;86557:46;;-1:-1:-1;;;;;;86614:26:0;;;;;:79;;;;;-1:-1:-1;;86614:79:0;;;;;;;;-1:-1:-1;86614:26:0;:79;;;2:2:-1;;;;27:1;24;17:12;2:2;86614:79:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;86614:79:0;;;;86732:82;86752:5;86759:9;86770:14;86786:13;86801:2;86805:8;86732:19;:82::i;:::-;86704:110;;;;-1:-1:-1;86148:674:0;-1:-1:-1;;;;;;;;;;;;;86148:674:0:o;84777:684::-;85016:16;85034:15;84997:8;80385:15;80373:8;:27;;80365:63;;;;;-1:-1:-1;;;80365:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;80365:63:0;;;;;;;;;;;;;;;85090:198:::1;85120:5;85140;85160:9;85184:14;85213:13;85249:4;85269:8;85090:15;:198::i;:::-;85062:226:::0;;-1:-1:-1;85062:226:0;-1:-1:-1;85299:51:0::1;85327:5:::0;85334:2;85062:226;85299:27:::1;:51::i;:::-;85368:5;-1:-1:-1::0;;;;;85361:22:0::1;;85384:10;85361:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;85361:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;85361:34:0;;;;85406:47;85438:2;85442:10;85406:31;:47::i;:::-;84777:684:::0;;;;;;;;;;:::o;89189:625::-;89413:21;89394:8;80385:15;80373:8;:27;;80365:63;;;;;-1:-1:-1;;;80365:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;80365:63:0;;;;;;;;;;;;;;;89457:54:::1;89487:7;89496:8;89506:4;;89457:54;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;89457:29:0::1;::::0;-1:-1:-1;;;89457:54:0:i:1;:::-;89447:64;;89561:12;89530:7;89555:1;89538:7;:14;:18;89530:27;;;;;;;;;;;;;;:43;;89522:98;;;;-1:-1:-1::0;;;89522:98:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;89631:140;89677:4;;89682:1;89677:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;89677:7:0::1;89686:10;89698:50;89722:7;89731:4;;89736:1;89731:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;89731:7:0::1;89740:4;;89745:1;89740:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;89740:7:0::1;89698:23;:50::i;:::-;89750:7;89758:1;89750:10;;;;;;;;;;;;;;89631:31;:140::i;:::-;89782:24;89788:7;89797:4;;89782:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;89803:2:0;;-1:-1:-1;89782:5:0::1;::::0;-1:-1:-1;;89782:24:0:i:1;:::-;89189:625:::0;;;;;;;;;:::o;95001:712::-;95235:8;80385:15;80373:8;:27;;80365:63;;;;;-1:-1:-1;;;80365:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;80365:63:0;;;;;;;;;;;;;;;95256:138:::1;95302:4;;95307:1;95302:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;95302:7:0::1;95311:10;95323:50;95347:7;95356:4;;95361:1;95356:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;95356:7:0::1;95365:4;;95370:1;95365:7;;;;;;95323:50;95375:8;95256:31;:138::i;:::-;95405:18;95433:4:::0;;-1:-1:-1;;95438:15:0;;95433:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;95433:21:0::1;-1:-1:-1::0;;;;;95426:39:0::1;;95466:2;95426:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;95426:43:0::1;-1:-1:-1::0;;;;;95426:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;95426:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;95426:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;95426:43:0;95480:44:::1;::::0;;95426:43:::1;95480:44:::0;;::::1;::::0;;;;;;;;;;;95426:43;;-1:-1:-1;95480:44:0::1;::::0;;;95515:4;;;;;;95480:44;::::1;::::0;95515:4;;95480:44;95515:4;95480:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;95521:2:0;;-1:-1:-1;95480:34:0::1;::::0;-1:-1:-1;;95480:44:0:i:1;:::-;95623:12:::0;95557:62:::1;95605:13:::0;95564:4;;-1:-1:-1;;95569:15:0;;95564:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;95564:21:0::1;-1:-1:-1::0;;;;;95557:39:0::1;;95597:2;95557:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;95557:43:0::1;-1:-1:-1::0;;;;;95557:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;95557:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;95557:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;95557:43:0;;:62:::1;:47;:62;:::i;:::-;:78;;95535:170;;;;-1:-1:-1::0;;;95535:170:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;80439:1;95001:712:::0;;;;;;;:::o;91969:851::-;92184:21;92156:8;80385:15;80373:8;:27;;80365:63;;;;;-1:-1:-1;;;80365:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;80365:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;92256:5:0::1;92231:30;:4:::0;;-1:-1:-1;;92236:15:0;;92231:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;92231:21:0::1;-1:-1:-1::0;;;;;92231:30:0::1;;92223:71;;;::::0;;-1:-1:-1;;;92223:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;92315:54;92345:7;92354:8;92364:4;;92315:54;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;92315:29:0::1;::::0;-1:-1:-1;;;92315:54:0:i:1;:::-;92305:64;;92419:12;92388:7;92413:1;92396:7;:14;:18;92388:27;;;;;;;;;;;;;;:43;;92380:98;;;;-1:-1:-1::0;;;92380:98:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;92489:140;92535:4;;92540:1;92535:7;;;;;;92489:140;92640:35;92646:7;92655:4;;92640:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;92669:4:0::1;::::0;-1:-1:-1;92640:5:0::1;::::0;-1:-1:-1;;92640:35:0:i:1;:::-;92693:5;-1:-1:-1::0;;;;;92686:22:0::1;;92709:7;92734:1;92717:7;:14;:18;92709:27;;;;;;;;;;;;;;92686:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;92686:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;92686:51:0;;;;92748:64;92780:2;92784:7;92809:1;92792:7;:14;:18;92784:27;;;;;;;;;;;;;;92748:31;:64::i;80275:39::-:0;;;:::o;86901:711::-;87169:15;87150:8;80385:15;80373:8;:27;;80365:63;;;;;-1:-1:-1;;;80365:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;80365:63:0;;;;;;;;;;;;;;;87214:198:::1;87244:5;87264;87284:9;87308:14;87337:13;87373:4;87393:8;87214:15;:198::i;:::-;87462:38;::::0;;-1:-1:-1;;;87462:38:0;;87494:4:::1;87462:38;::::0;::::1;::::0;;;87197:215;;-1:-1:-1;87423:78:0::1;::::0;-1:-1:-1;87451:5:0;;87458:2;;-1:-1:-1;;;;;87462:23:0;::::1;::::0;::::1;::::0;:38;;;;;::::1;::::0;;;;;;;;;:23;:38;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;87462:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;87462:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;87462:38:0;87423:27:::1;:78::i;:::-;87519:5;-1:-1:-1::0;;;;;87512:22:0::1;;87535:10;87512:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;87512:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;87512:34:0;;;;87557:47;87589:2;87593:10;87557:31;:47::i;96578:846::-:0;96846:8;80385:15;80373:8;:27;;80365:63;;;;;-1:-1:-1;;;80365:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;80365:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;96905:5:0::1;96880:30;:4:::0;;-1:-1:-1;;96885:15:0;;96880:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;96880:21:0::1;-1:-1:-1::0;;;;;96880:30:0::1;;96872:71;;;::::0;;-1:-1:-1;;;96872:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;96954:138;97000:4;;97005:1;97000:7;;;;;;96954:138;97103:55;97138:4;;97103:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;97152:4:0::1;::::0;-1:-1:-1;97103:34:0::1;::::0;-1:-1:-1;;97103:55:0:i:1;:::-;97186:38;::::0;;-1:-1:-1;;;97186:38:0;;97218:4:::1;97186:38;::::0;::::1;::::0;;;97169:14:::1;::::0;-1:-1:-1;;;;;97193:5:0::1;97186:23;::::0;::::1;::::0;:38;;;;;::::1;::::0;;;;;;;;;:23;:38;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;97186:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;97186:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;97186:38:0;;-1:-1:-1;97243:25:0;;::::1;;97235:80;;;;-1:-1:-1::0;;;97235:80:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;97333:5;-1:-1:-1::0;;;;;97326:22:0::1;;97349:9;97326:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;97326:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;97326:33:0;;;;97370:46;97402:2;97406:9;97370:31;:46::i;91134:829::-:0;91349:21;91321:8;80385:15;80373:8;:27;;80365:63;;;;;-1:-1:-1;;;80365:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;80365:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;91421:5:0::1;91396:30;:4:::0;;-1:-1:-1;;91401:15:0;;91396:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;91396:21:0::1;-1:-1:-1::0;;;;;91396:30:0::1;;91388:71;;;::::0;;-1:-1:-1;;;91388:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;91480:54;91509:7;91518:9;91529:4;;91480:54;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;91480:28:0::1;::::0;-1:-1:-1;;;91480:54:0:i:1;:::-;91470:64;;91567:11;91553:7;91561:1;91553:10;;;;;;;;;;;;;;:25;;91545:76;;;;-1:-1:-1::0;;;91545:76:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;97932:260:::0;98085:13;98123:61;98151:9;98162;98173:10;98123:27;:61::i;89820:603::-;90044:21;90025:8;80385:15;80373:8;:27;;80365:63;;;;;-1:-1:-1;;;80365:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;80365:63:0;;;;;;;;;;;;;;;90088:54:::1;90117:7;90126:9;90137:4;;90088:54;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;90088:28:0::1;::::0;-1:-1:-1;;;90088:54:0:i:1;:::-;90078:64;;90175:11;90161:7;90169:1;90161:10;;;;;;;;;;;;;;:25;;90153:76;;;;-1:-1:-1::0;;;90153:76:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;92826:814:::0;93040:21;93012:8;80385:15;80373:8;:27;;80365:63;;;;;-1:-1:-1;;;80365:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;80365:63:0;;;;;;;;;;;;;;;93098:5:::1;-1:-1:-1::0;;;;;93087:16:0::1;:4;;93092:1;93087:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;93087:7:0::1;-1:-1:-1::0;;;;;93087:16:0::1;;93079:57;;;::::0;;-1:-1:-1;;;93079:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;93157:54;93186:7;93195:9;93206:4;;93157:54;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;93157:28:0::1;::::0;-1:-1:-1;;;93157:54:0:i:1;:::-;93147:64;;93244:9;93230:7;93238:1;93230:10;;;;;;;;;;;;;;:23;;93222:74;;;;-1:-1:-1::0;;;93222:74:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;93314:5;-1:-1:-1::0;;;;;93307:21:0::1;;93336:7;93344:1;93336:10;;;;;;;;;;;;;;93307:42;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;93307:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;93307:42:0;;;;;93374:5;-1:-1:-1::0;;;;;93367:22:0::1;;93390:50;93414:7;93423:4;;93428:1;93423:7;;;;;;93390:50;93442:7;93450:1;93442:10;;;;;;;;;;;;;;93367:86;;;;;;;;;;;;;-1:-1:-1::0;;;;;93367:86:0::1;-1:-1:-1::0;;;;;93367:86:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;93367:86:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;93367:86:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;93367:86:0;93360:94:::1;;;;93465:24;93471:7;93480:4;;93465:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;93486:2:0;;-1:-1:-1;93465:5:0::1;::::0;-1:-1:-1;;93465:24:0:i:1;:::-;93553:7;93561:1;93553:10;;;;;;;;;;;;;;93541:9;:22;93537:95;;;93565:67;93597:10;93621:7;93629:1;93621:10;;;;;;;;;;;;;;93609:9;:22;93565:31;:67::i;:::-;92826:814:::0;;;;;;;;:::o;87618:723::-;87938:15;87966:12;87981:46;88005:7;88014:5;88021;87981:23;:46::i;:::-;87966:61;;88038:10;88051;:33;;88075:9;88051:33;;;-1:-1:-1;;88051:33:0;88095:79;;;-1:-1:-1;;;88095:79:0;;88122:10;88095:79;;;;88142:4;88095:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;88038:46;;-1:-1:-1;;;;;;88095:26:0;;;;;:79;;;;;-1:-1:-1;;88095:79:0;;;;;;;;-1:-1:-1;88095:26:0;:79;;;2:2:-1;;;;27:1;24;17:12;2:2;88095:79:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;88095:79:0;;;;88198:135;88261:5;88268:9;88279:14;88295:13;88310:2;88314:8;88198:48;:135::i;:::-;88185:148;87618:723;-1:-1:-1;;;;;;;;;;;;;87618:723:0:o;90429:699::-;90646:21;90618:8;80385:15;80373:8;:27;;80365:63;;;;;-1:-1:-1;;;80365:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;80365:63:0;;;;;;;;;;;;;;;90704:5:::1;-1:-1:-1::0;;;;;90693:16:0::1;:4;;90698:1;90693:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;90693:7:0::1;-1:-1:-1::0;;;;;90693:16:0::1;;90685:57;;;::::0;;-1:-1:-1;;;90685:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;90763:55;90793:7;90802:9;90813:4;;90763:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;90763:29:0::1;::::0;-1:-1:-1;;;90763:55:0:i:1;:::-;90753:65;;90868:12;90837:7;90862:1;90845:7;:14;:18;90837:27;;;;;;;;;;;;;;:43;;90829:98;;;;-1:-1:-1::0;;;90829:98:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;90945:5;-1:-1:-1::0;;;;;90938:21:0::1;;90967:7;90975:1;90967:10;;;;;;;;;;;;;;90938:42;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;90938:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;90938:42:0;;;;;91005:5;-1:-1:-1::0;;;;;90998:22:0::1;;91021:50;91045:7;91054:4;;91059:1;91054:7;;;;;;91021:50;91073:7;91081:1;91073:10;;;;;;;;;;;;;;90998:86;;;;;;;;;;;;;-1:-1:-1::0;;;;;90998:86:0::1;-1:-1:-1::0;;;;;90998:86:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;90998:86:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;90998:86:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;90998:86:0;90991:94:::1;;;;91096:24;91102:7;91111:4;;91096:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;91117:2:0;;-1:-1:-1;91096:5:0::1;::::0;-1:-1:-1;;91096:24:0:i:1;97468:187::-:0;97565:12;97597:50;97619:7;97628:8;97638;97597:21;:50::i;83912:859::-;84166:12;84180;84147:8;80385:15;80373:8;:27;;80365:63;;;;;-1:-1:-1;;;80365:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;80365:63:0;;;;;;;;;;;;;;;84205:12:::1;84220:48;84244:7;84253:6;84261;84220:23;:48::i;:::-;84279:61;::::0;;-1:-1:-1;;;84279:61:0;;84312:10:::1;84279:61;::::0;::::1;::::0;-1:-1:-1;;;;;84279:32:0;::::1;:61:::0;;;;;;;;;;;;;;84205:63;;-1:-1:-1;84279:32:0;;::::1;::::0;:61;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;84279:32:0;:61;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;84279:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;84279:61:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;84408:28:0::1;::::0;;;;;-1:-1:-1;;;;;84408:28:0;;::::1;;::::0;::::1;::::0;;;84378:12:::1;::::0;;;84408:24;;::::1;::::0;::::1;::::0;:28;;;;;;;;;;;84378:12;84408:24;:28;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;84408:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;84408:28:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;84408:28:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;84408:28:0;-1:-1:-1;84448:14:0::1;84467:42;84494:6:::0;84502;84467:26:::1;:42::i;:::-;84447:62;;;84551:6;-1:-1:-1::0;;;;;84541:16:0::1;:6;-1:-1:-1::0;;;;;84541:16:0::1;;:58;;84582:7;84591;84541:58;;;84561:7;84570;84541:58;84520:79:::0;;-1:-1:-1;84520:79:0;-1:-1:-1;84618:21:0;;::::1;;84610:71;;;;-1:-1:-1::0;;;84610:71:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;84711:10;84700:7;:21;;84692:71;;;;-1:-1:-1::0;;;84692:71:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;80439:1;;;;83912:859:::0;;;;;;;;;;;:::o;80227:41::-;;;:::o;95719:853::-;95980:8;80385:15;80373:8;:27;;80365:63;;;;;-1:-1:-1;;;80365:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;80365:63:0;;;;;;;;;;;;;;;96025:5:::1;-1:-1:-1::0;;;;;96014:16:0::1;:4;;96019:1;96014:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;96014:7:0::1;-1:-1:-1::0;;;;;96014:16:0::1;;96006:57;;;::::0;;-1:-1:-1;;;96006:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;96074:13;96090:9;96074:25;;96117:5;-1:-1:-1::0;;;;;96110:21:0::1;;96139:8;96110:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;96110:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;96110:40:0;;;;;96175:5;-1:-1:-1::0;;;;;96168:22:0::1;;96191:50;96215:7;96224:4;;96229:1;96224:7;;;;;;96191:50;96243:8;96168:84;;;;;;;;;;;;;-1:-1:-1::0;;;;;96168:84:0::1;-1:-1:-1::0;;;;;96168:84:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;96168:84:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;96168:84:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;96168:84:0;96161:92:::1;;;;96264:18;96292:4:::0;;-1:-1:-1;;96297:15:0;;96292:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;96292:21:0::1;-1:-1:-1::0;;;;;96285:39:0::1;;96325:2;96285:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;96285:43:0::1;-1:-1:-1::0;;;;;96285:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;96285:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;96285:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;96285:43:0;96339:44:::1;::::0;;96285:43:::1;96339:44:::0;;::::1;::::0;;;;;;;;;;;96285:43;;-1:-1:-1;96339:44:0::1;::::0;;;96374:4;;;;;;96339:44;::::1;::::0;96374:4;;96339:44;96374:4;96339:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;96380:2:0;;-1:-1:-1;96339:34:0::1;::::0;-1:-1:-1;;96339:44:0:i:1;:::-;96482:12:::0;96416:62:::1;96464:13:::0;96423:4;;-1:-1:-1;;96428:15:0;;96423:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;96423:21:0::1;-1:-1:-1::0;;;;;96416:39:0::1;;96456:2;96416:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;96416:43:0::1;-1:-1:-1::0;;;;;96416:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;98200:252:0::0;98344:21;98390:54;98420:7;98429:8;98439:4;98390:29;:54::i;82138:736::-;82426:12;82440;82454:14;82407:8;80385:15;80373:8;:27;;80365:63;;;;;-1:-1:-1;;;80365:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;80365:63:0;;;;;;;;;;;;;;;82502:85:::1;82516:6;82524;82532:14;82548;82564:10;82576;82502:13;:85::i;:::-;82481:106:::0;;-1:-1:-1;82481:106:0;-1:-1:-1;82598:12:0::1;82613:48;82637:7;82646:6:::0;82654;82613:23:::1;:48::i;:::-;82598:63;;82672:66;82704:6;82712:10;82724:4;82730:7;82672:31;:66::i;:::-;82749;82781:6;82789:10;82801:4;82807:7;82749:31;:66::i;:::-;82852:4;-1:-1:-1::0;;;;;82838:24:0::1;;82863:2;82838:28;;;;;;;;;;;;;-1:-1:-1::0;;;;;82838:28:0::1;-1:-1:-1::0;;;;;82838:28:0::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;82838:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;82838:28:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;82838:28:0;82138:736;;;;-1:-1:-1;82838:28:0;;-1:-1:-1;82138:736:0;;-1:-1:-1;;;;;;;;;82138:736:0:o;82880:989::-;83135:16;83153:15;83170:14;83116:8;80385:15;80373:8;:27;;80365:63;;;;;-1:-1:-1;;;80365:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;80365:63:0;;;;;;;;;;;;;;;83225:178:::1;83253:5;83273;83293:18;83326:9;83350:14;83379:13;83225;:178::i;:::-;83197:206:::0;;-1:-1:-1;83197:206:0;-1:-1:-1;83414:12:0::1;83429:46;83453:7;83462:5:::0;83469::::1;83429:23;:46::i;:::-;83414:61;;83486:69;83518:5;83525:10;83537:4;83543:11;83486:31;:69::i;:::-;83573:5;-1:-1:-1::0;;;;;83566:21:0::1;;83595:10;83566:42;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;83566:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;83566:42:0;;;;;83633:5;-1:-1:-1::0;;;;;83626:22:0::1;;83649:4;83655:10;83626:40;;;;;;;;;;;;;-1:-1:-1::0;;;;;83626:40:0::1;-1:-1:-1::0;;;;;83626:40:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;83626:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;83626:40:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;83626:40:0;83619:48:::1;;;;83704:4;-1:-1:-1::0;;;;;83690:24:0::1;;83715:2;83690:28;;;;;;;;;;;;;-1:-1:-1::0;;;;;83690:28:0::1;-1:-1:-1::0;;;;;83690:28:0::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;83690:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;83690:28:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;83690:28:0;;-1:-1:-1;83770:9:0::1;:22:::0;-1:-1:-1;83766:95:0::1;;;83794:67;83826:10;83850;83838:9;:22;83794:31;:67::i;:::-;80439:1;82880:989:::0;;;;;;;;;;;:::o;76554:515::-;76647:14;76693:1;76682:8;:12;76674:67;;;;-1:-1:-1;;;76674:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;76772:1;76760:9;:13;:31;;;;;76790:1;76777:10;:14;76760:31;76752:83;;;;-1:-1:-1;;;76752:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;76846:20;76869:17;:8;76882:3;76869:17;:12;:17;:::i;:::-;76846:40;-1:-1:-1;76897:14:0;76914:31;76846:40;76934:10;76914:31;:19;:31;:::i;:::-;76897:48;-1:-1:-1;76956:16:0;76975:40;76999:15;76975:19;:9;76989:4;76975:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;76956:59;;77050:11;77038:9;:23;;;;;;;76554:515;-1:-1:-1;;;;;;;76554:515:0:o;78333:531::-;78434:21;78491:1;78476:4;:11;:16;;78468:58;;;;;-1:-1:-1;;;78468:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;78558:4;:11;78547:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;78547:23:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;78547:23:0;;78537:33;;78611:9;78581:7;78606:1;78589:7;:14;:18;78581:27;;;;;;;;;;;;;;;;;:39;78645:11;;-1:-1:-1;;78645:15:0;78631:226;78662:5;;78631:226;;78690:14;78706:15;78725:42;78737:7;78746:4;78755:1;78751;:5;78746:11;;;;;;;;;;;;;;78759:4;78764:1;78759:7;;;;;;;;;;;;;;78725:11;:42::i;:::-;78689:78;;;;78799:46;78811:7;78819:1;78811:10;;;;;;;;;;;;;;78823:9;78834:10;78799:11;:46::i;:::-;78782:7;78794:1;78790;:5;78782:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;;;78669:3:0;78631:226;;;;78333:531;;;;;:::o;75074:478::-;75163:12;75189:14;75205;75223:26;75234:6;75242;75223:10;:26::i;:::-;75387:32;;;-1:-1:-1;;75387:32:0;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;75387:32:0;;;;;75377:43;;;;;;75290:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;75290:251:0;;;;;;;75280:262;;;;;;;;;75074:478;-1:-1:-1;;;;;75074:478:0:o;65185:398::-;65417:45;;;-1:-1:-1;;;;;65417:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;65417:45:0;;;;;;;25:18:-1;;61:17;;96:58;182:15;65417:45:0;179:29:-1;160:49;;65406:57:0;;;;65371:12;;65385:17;;65406:10;;;;65417:45;65406:57;;;25:18:-1;65406:57:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;65406:57:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;65370:93:0;;;;65482:7;:57;;;;-1:-1:-1;65494:11:0;;:16;;:44;;;65525:4;65514:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;65514:24:0;65494:44;65474:101;;;;;-1:-1:-1;;;65474:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;65185:398;;;;;:::o;66047:202::-;66161:12;;;66121;66161;;;;;;;;;-1:-1:-1;;;;;66139:7:0;;;66154:5;;66139:35;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;66139:35:0;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;66120:54:0;;;66193:7;66185:56;;;;-1:-1:-1;;;66185:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;66047:202;;;:::o;77742:510::-;77843:21;77900:1;77885:4;:11;:16;;77877:58;;;;;-1:-1:-1;;;77877:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;77967:4;:11;77956:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;77956:23:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;77956:23:0;;77946:33;;78003:8;77990:7;77998:1;77990:10;;;;;;;;;;;;;:21;;;;;78027:6;78022:223;78053:1;78039:4;:11;:15;78035:1;:19;78022:223;;;78077:14;78093:15;78112:42;78124:7;78133:4;78138:1;78133:7;;;;;;;;;;;;;;78142:4;78147:1;78151;78147:5;78142:11;;;;;;;78112:42;78076:78;;;;78186:47;78199:7;78207:1;78199:10;;;;;;;;;;;;;;78211:9;78222:10;78186:12;:47::i;:::-;78169:7;78177:1;78181;78177:5;78169:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;78056:3:0;;78022:223;;65591:448;65862:51;;;-1:-1:-1;;;;;65862:51:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;65862:51:0;;;;;;;25:18:-1;;61:17;;96:58;182:15;-1:-1;;;179:29;160:49;;65851:63:0;;;;65816:12;;65830:17;;65851:10;;;;65862:51;65851:63;;;25:18:-1;65851:63:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;65851:63:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;65815:99:0;;;;65933:7;:57;;;;-1:-1:-1;65945:11:0;;:16;;:44;;;65976:4;65965:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;65965:24:0;65945:44;65925:106;;;;-1:-1:-1;;;65925:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;65591:448;;;;;;:::o;88452:731::-;88559:6;88554:622;88585:1;88571:4;:11;:15;88567:1;:19;88554:622;;;88609:13;88624:14;88643:4;88648:1;88643:7;;;;;;;;;;;;;;88652:4;88657:1;88661;88657:5;88652:11;;;;;;;;;;;;;;88608:56;;;;88680:14;88699:41;88726:5;88733:6;88699:26;:41::i;:::-;88679:61;;;88755:14;88772:7;88780:1;88784;88780:5;88772:14;;;;;;;;;;;;;;88755:31;;88802:15;88819;88847:6;-1:-1:-1;;;;;88838:15:0;:5;-1:-1:-1;;;;;88838:15:0;;:61;;88880:9;88896:1;88838:61;;;88862:1;88866:9;88838:61;88801:98;;;;88914:10;88945:1;88931:4;:11;:15;88927:1;:19;:81;;89005:3;88927:81;;;88949:53;88973:7;88982:6;88990:4;88995:1;88999;88995:5;88990:11;;;;;;;;;;;;;;88949:23;:53::i;:::-;88914:94;;89037:47;89061:7;89070:5;89077:6;89037:23;:47::i;:::-;-1:-1:-1;;;;;89023:67:0;;89109:10;89121;89133:2;89147:1;89137:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;89137:12:0;87:42:-1;143:17;;-1:-1;89137:12:0;;89023:141;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;89023:141:0;-1:-1:-1;;;;;89023:141:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;89023:141:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;89023:141:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;88588:3:0;;;;;-1:-1:-1;88554:622:0;;-1:-1:-1;;;;;;;;88554:622:0;;;88452:731;;;:::o;93787:1208::-;93900:6;93895:1093;93926:1;93912:4;:11;:15;93908:1;:19;93895:1093;;;93950:13;93965:14;93984:4;93989:1;93984:7;;;;;;;;;;;;;;93993:4;93998:1;94002;93998:5;93993:11;;;;;;;;;;;;;;93949:56;;;;94021:14;94040:41;94067:5;94074:6;94040:26;:41::i;:::-;94020:61;;;94096:18;94131:47;94155:7;94164:5;94171:6;94131:23;:47::i;:::-;94096:83;;94194:16;94225:17;94313:13;94328;94346:4;-1:-1:-1;;;;;94346:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;94346:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;94346:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;94346:18:0;;;;;;;94312:52;;;;;-1:-1:-1;94312:52:0;;-1:-1:-1;94380:17:0;;-1:-1:-1;;;;;94421:15:0;;;;;;;:61;;94463:8;94473;94421:61;;;94440:8;94450;94421:61;94379:103;;;;94511:56;94554:12;94518:5;-1:-1:-1;;;;;94511:23:0;;94543:4;94511:38;;;;;;;;;;;;;-1:-1:-1;;;;;94511:38:0;-1:-1:-1;;;;;94511:38:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;94511:56:0;94497:70;;94597;94626:11;94639:12;94653:13;94597:28;:70::i;:::-;94582:85;;93895:1093;;;;94698:15;94715;94743:6;-1:-1:-1;;;;;94734:15:0;:5;-1:-1:-1;;;;;94734:15:0;;:67;;94779:12;94798:1;94734:67;;;94758:1;94762:12;94734:67;94697:104;;;;94816:10;94847:1;94833:4;:11;:15;94829:1;:19;:81;;94907:3;94829:81;;;94851:53;94875:7;94884:6;94892:4;94897:1;94901;94897:5;94892:11;;;;;;;94851:53;94963:12;;;94973:1;94963:12;;;;;;;;;;94925:51;;;;;;;;;;;;;;;-1:-1:-1;;;;;94925:51:0;;;;;;;;;;;;;;;;;;;;;;94816:94;;-1:-1:-1;94925:9:0;;;;;;94935:10;;94947;;94816:94;;94963:12;;94925:51;;;;;;;;94963:12;;94925:51;;;;94963:12;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;94925:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;94925:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;93929:3:0;;;;;-1:-1:-1;93895:1093:0;;-1:-1:-1;;;;;;;;;;93895:1093:0;74083:129;74167:5;;;74162:16;;;;74154:50;;;;;-1:-1:-1;;;74154:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;77190:470;77283:13;77329:1;77317:9;:13;77309:69;;;;-1:-1:-1;;;77309:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;77409:1;77397:9;:13;:31;;;;;77427:1;77414:10;:14;77397:31;77389:83;;;;-1:-1:-1;;;77389:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;77483:14;77500:34;77529:4;77500:24;:9;77514;77500:24;:13;:24;:::i;:::-;:28;:34;:28;:34;:::i;:::-;77483:51;-1:-1:-1;77545:16:0;77564:34;77594:3;77564:25;:10;77579:9;77564:25;:14;:25;:::i;:34::-;77545:53;;77620:32;77650:1;77633:11;77621:9;:23;;;;;;;77620:32;:29;:32;:::i;:::-;77609:43;77190:470;-1:-1:-1;;;;;;77190:470:0:o;76113:319::-;76195:12;76238:1;76228:7;:11;76220:60;;;;-1:-1:-1;;;76220:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;76310:1;76299:8;:12;:28;;;;;76326:1;76315:8;:12;76299:28;76291:80;;;;-1:-1:-1;;;76291:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;76416:8;76392:21;:7;76404:8;76392:21;:11;:21;:::i;:::-;:32;;;;;;;76113:319;-1:-1:-1;;;;76113:319:0:o;74635:347::-;74710:14;74726;74771:6;-1:-1:-1;;;;;74761:16:0;:6;-1:-1:-1;;;;;74761:16:0;;;74753:65;;;;-1:-1:-1;;;74753:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;74857:6;-1:-1:-1;;;;;74848:15:0;:6;-1:-1:-1;;;;;74848:15:0;;:53;;74886:6;74894;74848:53;;;74867:6;74875;74848:53;74829:72;;-1:-1:-1;74829:72:0;-1:-1:-1;;;;;;74920:20:0;;74912:62;;;;;-1:-1:-1;;;74912:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;74635:347;;;;;:::o;80749:1383::-;81062:49;;;;;;-1:-1:-1;;;;;81062:49:0;;;;;;;;;;;;;;;;80967:12;;;;;;81079:7;81062:33;;;;;;:49;;;;;;;;;;;;;;;:33;:49;;;2:2:-1;;;;27:1;24;17:12;2:2;81062:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;81062:49:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;81062:49:0;-1:-1:-1;;;;;81062:63:0;;81058:148;;;81142:52;;;;;;-1:-1:-1;;;;;81142:52:0;;;;;;;;;;;;;;;;81159:7;81142:36;;;;;;:52;;;;;;;;;;;;;;;-1:-1:-1;81142:36:0;:52;;;2:2:-1;;;;27:1;24;17:12;2:2;81142:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;81142:52:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;81058:148:0;81217:13;81232;81249:52;81277:7;81286:6;81294;81249:27;:52::i;:::-;81216:85;;;;81316:8;81328:1;81316:13;:30;;;;-1:-1:-1;81333:13:0;;81316:30;81312:813;;;81385:14;;-1:-1:-1;81401:14:0;;-1:-1:-1;81312:813:0;;;81449:19;81471:57;81493:14;81509:8;81519;81471:21;:57::i;:::-;81449:79;;81565:14;81547;:32;81543:571;;81626:10;81608:14;:28;;81600:78;;;;-1:-1:-1;;;81600:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;81719:14;;-1:-1:-1;81735:14:0;-1:-1:-1;81735:14:0;81543:571;;;81791:19;81813:57;81835:14;81851:8;81861;81813:21;:57::i;:::-;81791:79;;81914:14;81896;:32;;81889:40;;;;81974:10;81956:14;:28;;81948:78;;;;-1:-1:-1;;;81948:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;82067:14;-1:-1:-1;82083:14:0;;-1:-1:-1;81543:571:0;81312:813;;80749:1383;;;;;;;;;;;:::o;74220:142::-;74272:6;74299;;;:30;;-1:-1:-1;;74314:5:0;;;74328:1;74323;74314:5;74323:1;74309:15;;;;;:20;74299:30;74291:63;;;;;-1:-1:-1;;;74291:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;73947:128;74031:5;;;74026:16;;;;74018:49;;;;;-1:-1:-1;;;74018:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;75610:390;75703:13;75718;75745:14;75764:26;75775:6;75783;75764:10;:26::i;:::-;75744:46;;;75802:13;75817;75849:32;75857:7;75866:6;75874;75849:7;:32::i;:::-;-1:-1:-1;;;;;75835:59:0;;:61;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;75835:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;75835:61:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;75835:61:0;;;;;;;75801:95;;;;;-1:-1:-1;75801:95:0;;-1:-1:-1;;;;;;75930:16:0;;;;;;;:62;;75973:8;75983;75930:62;;;75950:8;75960;75930:62;75907:85;;;;-1:-1:-1;75610:390:0;-1:-1:-1;;;;;;;75610:390:0:o

Swarm Source

ipfs://307011fde332e86c34aad884e01fd97a640d53ae915b742590ee575b7c0db3b5
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.