[
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "oldImplementation",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newImplementation",
"type": "address"
}
],
"name": "ImplementationChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "oldOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnerChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token0",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token1",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "stable",
"type": "bool"
},
{
"indexed": false,
"internalType": "address",
"name": "pair",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "PairCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "toFeesOld",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint8",
"name": "toTreasuryOld",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint8",
"name": "toFeesNew",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint8",
"name": "toTreasuryNew",
"type": "uint8"
}
],
"name": "SetFeeSplit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "pool",
"type": "address"
},
{
"indexed": false,
"internalType": "uint8",
"name": "toFeesOld",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint8",
"name": "toTreasuryOld",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint8",
"name": "toFeesNew",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint8",
"name": "toTreasuryNew",
"type": "uint8"
}
],
"name": "SetPoolFeeSplit",
"type": "event"
},
{
"inputs": [],
"name": "MAX_FEE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "acceptFeeManager",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "acceptPauser",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "allPairs",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "allPairsLength",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenA",
"type": "address"
},
{
"internalType": "address",
"name": "tokenB",
"type": "address"
},
{
"internalType": "bool",
"name": "stable",
"type": "bool"
}
],
"name": "createPair",
"outputs": [
{
"internalType": "address",
"name": "pair",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "feeManager",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "feeSplit",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_stable",
"type": "bool"
}
],
"name": "getFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"name": "getPair",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_pool",
"type": "address"
}
],
"name": "getPoolFeeSplit",
"outputs": [
{
"internalType": "uint8",
"name": "_poolFeeSplit",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "implementation",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_voter",
"type": "address"
},
{
"internalType": "address",
"name": "msig",
"type": "address"
},
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_implementation",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isPair",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isPaused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pairCodeHash",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_pool",
"type": "address"
}
],
"name": "pairFee",
"outputs": [
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pauser",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pendingFeeManager",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pendingPauser",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_stable",
"type": "bool"
},
{
"internalType": "uint256",
"name": "_fee",
"type": "uint256"
}
],
"name": "setFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_feeManager",
"type": "address"
}
],
"name": "setFeeManager",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "_toFees",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "_toTreasury",
"type": "uint8"
}
],
"name": "setFeeSplit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_implementation",
"type": "address"
}
],
"name": "setImplementation",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "setOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_pair",
"type": "address"
},
{
"internalType": "uint256",
"name": "_fee",
"type": "uint256"
}
],
"name": "setPairFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_state",
"type": "bool"
}
],
"name": "setPause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_pauser",
"type": "address"
}
],
"name": "setPauser",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_pool",
"type": "address"
},
{
"internalType": "uint8",
"name": "_toFees",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "_toTreasury",
"type": "uint8"
}
],
"name": "setPoolFeeSplit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_treasury",
"type": "address"
}
],
"name": "setTreasury",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "stableFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "treasury",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "volatileFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "voter",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
]0x608080604052346100c1576000549060ff8260081c1661006f575060ff80821603610034575b604051611b9d90816100c78239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a138610025565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe604060808152600490813610156200001657600080fd5b600091823560e01c806313af4035146200125e578063167a6f9014620011ef5780631cb8e3a714620010f15780631e3dd18b14620010ab5780632d88af4a146200106157806340bbd775146200104057806346c96aac1462001016578063472d35b91462000fca5780635084ed031462000fa9578063512b45ea1462000f7d578063574f2ba31462000f5c5780635c60da1b1462000f3257806361d027b31462000f085780636373ea691462000ee45780636801cc301462000e7c57806382dfdce41462000ac7578063841fa66b14620009f45780638a4fa0d214620009cb5780638da5cb5b14620009a15780639a7165e414620009775780639aab924814620008f25780639fd0506d14620008c7578063a93a897d146200086c578063b187bd261462000845578063bc063e1a1462000826578063bedb86fb14620007d9578063d0fb020314620007af578063d68f9af21462000631578063d784d42614620005ba578063e1f76b441462000512578063e5e31b1314620004d2578063e829263f1462000498578063f0f442601462000448578063f8c8765e14620002495763f94c53c714620001c657600080fd5b3462000245578260031936011262000245576001600160a01b0381541691823303620002025750506001600160a01b0319600354161760035580f35b906020606492519162461bcd60e51b8352820152601760248201527f6e6f742070656e64696e6720666565206d616e616765720000000000000000006044820152fd5b8280fd5b503462000245576080366003190112620002455762000267620012d0565b9062000272620012e7565b604435926001600160a01b03938481168091036200044357606435928584168094036200044357875460ff8160081c16159586809762000435575b80156200041c575b15620003b3575060ff198116600117895585620003a1575b5062010000868216917fffffffffffffffffff000000000000000000000000000000000000000000ffff76ffffffffffffffffffffffffffffffffffffffff0000008b549260181b1691161717958689556001600160a01b031993828560035416176003556005600855601960095516836002541617600255826005541617600555816006541617600655600754161760075562000369578280f35b61ff001916825551600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a138808280f35b61ffff191661010117885538620002cd565b60849060208a519162461bcd60e51b8352820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b50303b158015620002b55750600160ff831614620002b5565b50600160ff831610620002ad565b600080fd5b833462000495576020366003190112620004955762000466620012d0565b6001600160a01b0319600554916001600160a01b03906200048b8285163314620013b0565b1691161760055580f35b80fd5b505034620004ce576020366003190112620004ce5760209060ff620004c6620004c0620012d0565b6200158a565b915191168152f35b5080fd5b505034620004ce576020366003190112620004ce5760ff816020936001600160a01b03620004ff620012d0565b168152600e855220541690519015158152f35b503462000245578160031936011262000245576200052f6200135d565b90602435926200054c6001600160a01b0360035416331462001471565b6200055c6103e88511156200153d565b83156200057757505015620005715760085580f35b60095580f35b906020606492519162461bcd60e51b8352820152601360248201527f666565206d757374206265206e6f6e7a65726f000000000000000000000000006044820152fd5b8334620004955760203660031901126200049557620005d8620012d0565b6001600160a01b03196001600160a01b0391620005fb836006541633146200137d565b826007549116809382167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d38680a3161760075580f35b50903462000245576060366003190112620002455762000650620012d0565b906200065b620012fe565b926044359360ff851690818603620004435786956001600160a01b03926200068984600354163314620013b0565b60ff8316600a81111580620007a3575b620006a490620013fd565b606460ff620006c9620006b78762001430565b620006c28762001430565b906200145c565b16116200079f577fcb5db40c16424397b2bb06b3dbf462f8f2c61883ee07bec4e8fcd6d96e0f69a9946200071160a09560f0620007068c6200158a565b968a1b16906200145c565b981697888a52600b60205260ff888b20911660ff19825416179055600f8751938985528181166020860152871c168784015260608301526080820152a1823b156200079a5781516305a2010760e21b81529284918491829084905af19081156200079157506200077e5750f35b6200078990620014ef565b620004955780f35b513d84823e3d90fd5b505050fd5b8880fd5b50600a82111562000699565b505034620004ce5781600319360112620004ce576020906001600160a01b03600354169051908152f35b8334620004955760203660031901126200049557620007f76200135d565b8154906001600160a01b038260181c163303620002455762ff000090151560101b169062ff0000191617815580f35b505034620004ce5781600319360112620004ce57602090516103e88152f35b505034620004ce5781600319360112620004ce5760ff6020925460101c1690519015158152f35b505034620004ce5780600319360112620004ce576200088a620012d0565b90602435916001600160a01b0390620008a98260035416331462001471565b620008b96103e88511156200153d565b168352600f60205282205580f35b505034620004ce5781600319360112620004ce576001600160a01b036020925460181c169051908152f35b505034620004ce5781600319360112620004ce578051602092906105d86200091d858201836200151a565b808252620015b98583013983835180938351815b818110620009605750620009539450820190838201520380845201826200151a565b8281519101209051908152f35b808601850151878201860152869350840162000931565b505034620004ce5781600319360112620004ce576020906001600160a01b03600154169051908152f35b505034620004ce5781600319360112620004ce576020906001600160a01b03600654169051908152f35b5091346200049557806003193601126200049557506001600160a01b0360209254169051908152f35b50346200024557602092836003193601126200049557836001600160a01b0362000a1d620012d0565b16808352600f8252848320548062000abb575084516322be3de160e01b815293849182905afa91821562000aaf57819262000a70575b50501562000a67576008545b905b51908152f35b60095462000a5f565b9091508381813d831162000aa7575b62000a8b81836200151a565b81010312620004ce57518015158103620004ce57903862000a53565b503d62000a7f565b508251903d90823e3d90fd5b93505050509062000a61565b509034620002455760608060031936011262000d865762000ae7620012d0565b62000af1620012e7565b9162000afc6200136d565b60ff875460101c1662000e39576001600160a01b039283851684821681811462000e1157101562000e0a5793965b83851693841562000de257848252602098600c8a5287832096828216978885528b52888420941515948585528b5282898520541662000dba578851908b8201926bffffffffffffffffffffffff198092891b168452871b1660348201528460f81b6048820152602981528581019067ffffffffffffffff928183108484111762000da757828b5281519020926105d8808301918983019085821091111762000d9457620015b98439039084f5801562000d8a578116978160025416893b1562000d8657838860a489838e8e519687958694630390f75760e41b8652308b870152602486015260448501528b606485015260848401525af1801562000d665762000d70575b50883b15620002455787516305a2010760e21b815283818381838e5af1801562000d665790849162000d4e575b50869052600c8a52878320876000528a52876000208484528a528783206001600160a01b0319908a82825416179055878452600c8b52888420876000528b52886000208585528b528989852091825416179055600d54906801000000000000000082101562000d3b575091879162000cfd8460017fc4805696c66d7cf352fc1d6bb633ad5ee82f6cb577c453024b6e0eb8306c6fc998979601600d556200130f565b819291549060031b918c831b921b1916179055888152600e8a5220600160ff19825416179055600d548651918252878983015286820152a351908152f35b634e487b7160e01b845260419052602483fd5b62000d5990620014ef565b6200024557823862000c5b565b89513d86823e3d90fd5b62000d7e90939193620014ef565b913862000c2e565b8380fd5b87513d84823e3d90fd5b634e487b7160e01b875260418d52602487fd5b634e487b7160e01b865260418c52602486fd5b885162461bcd60e51b8152808b018c90526002602482015261504560f01b6044820152606490fd5b865162461bcd60e51b81526020818a015260026024820152615a4160f01b6044820152606490fd5b9662000b2a565b875162461bcd60e51b81526020818b01526002602482015261494160f01b6044820152606490fd5b845162461bcd60e51b8152602081880152600660248201527f50415553454400000000000000000000000000000000000000000000000000006044820152606490fd5b505034620004ce576060366003190112620004ce576020918162000e9f620012d0565b9162000eaa620012e7565b62000eb46200136d565b906001600160a01b038095168352600c875284848420911683528652828220901515825285522054169051908152f35b505034620004ce5781600319360112620004ce5760209060ff600a54169051908152f35b505034620004ce5781600319360112620004ce576020906001600160a01b03600554169051908152f35b505034620004ce5781600319360112620004ce576020906001600160a01b03600754169051908152f35b505034620004ce5781600319360112620004ce57602090600d549051908152f35b505034620004ce576020366003190112620004ce5760209062000a5f62000fa36200135d565b620014be565b505034620004ce5781600319360112620004ce576020906009549051908152f35b838234620004ce576020366003190112620004ce5762000fe9620012d0565b6001600160a01b0390620010038260035416331462001471565b166001600160a01b031982541617905580f35b505034620004ce5781600319360112620004ce576020906001600160a01b03600254169051908152f35b505034620004ce5781600319360112620004ce576020906008549051908152f35b83346200049557602036600319011262000495576200107f620012d0565b6001600160a01b039081835460181c1633036200024557166001600160a01b0319600154161760015580f35b50346200024557602036600319011262000245573591600d548310156200049557506001600160a01b03620010e26020936200130f565b92905490519260031b1c168152f35b509034620002455780600319360112620002455781359160ff831692838103620011eb576200111f620012fe565b620011376001600160a01b03600354163314620013b0565b600a85111580620011dc575b6200114e90620013fd565b606460ff6200116c620011618562001430565b620006c28562001430565b1611620011d8577f9d570c3cf62eac0107df282c148bdcecbbad2390ba6bfc8224e596d28c17bd9894608094600f60ff9485620011b3600a549260f0888b1b16906200145c565b168619821617600a5582519682821688521c166020860152840152166060820152a180f35b8580fd5b50600a60ff8216111562001143565b8480fd5b833462000495578060031936011262000495576001546001600160a01b0381163303620004ce577fffffffffffffffffff0000000000000000000000000000000000000000ffffff76ffffffffffffffffffffffffffffffffffffffff00000083549260181b16911617815580f35b83346200049557602036600319011262000495576200127c620012d0565b6001600160a01b03196006546001600160a01b0380821693620012a18533146200137d565b1680937fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c8680a3161760065580f35b600435906001600160a01b03821682036200044357565b602435906001600160a01b03821682036200044357565b6024359060ff821682036200044357565b600d548110156200134757600d6000527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50190600090565b634e487b7160e01b600052603260045260246000fd5b6004359081151582036200044357565b6044359081151582036200044357565b156200138557565b606460405162461bcd60e51b8152602060048201526004602482015263082aaa8960e31b6044820152fd5b15620013b857565b60405162461bcd60e51b815260206004820152600560248201527f21415554480000000000000000000000000000000000000000000000000000006044820152606490fd5b156200140557565b60405162461bcd60e51b815260206004820152600360248201526211951360ea1b6044820152606490fd5b60ff60059116029060ff82169182036200144657565b634e487b7160e01b600052601160045260246000fd5b9060ff8091169116019060ff82116200144657565b156200147957565b60405162461bcd60e51b815260206004820152600f60248201527f6e6f7420666565206d616e6167657200000000000000000000000000000000006044820152606490fd5b33600052600f6020526040600020548015600014620014ea575015620014e45760085490565b60095490565b905090565b67ffffffffffffffff81116200150457604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176200150457604052565b156200154557565b60405162461bcd60e51b815260206004820152600c60248201527f66656520746f6f206869676800000000000000000000000000000000000000006044820152606490fd5b6001600160a01b0316600052600b60205260ff60406000205416908115620015ae57565b600a5460ff16915056fe6080346102f0576020818101916001600160401b0391828411828510176102da57604092848452600094858452333b15610288578451635c60da1b60e01b80825291908481600481335afa90811561027e578891610261575b503b15610204577fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b03191633908117909155865192907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e8980a28551158015906101fd575b6100d9575b86516101cc908161040c8239f35b82528382600481335afa9182156101f35787926101c4575b5085519460608601868110858211176101b0578752602786527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c85870152660819985a5b195960ca1b86880152518791829190845af4913d1561019f573d90811161018b57859661017e96519161017186601f19601f84011601846102f5565b825281943d92013e610337565b50803880808080806100cb565b634e487b7160e01b87526041600452602487fd5b50915061017e939450606091610337565b634e487b7160e01b89526041600452602489fd5b6101e5919250843d86116101ec575b6101dd81836102f5565b810190610318565b90386100f1565b503d6101d3565b86513d89823e3d90fd5b50876100c6565b855162461bcd60e51b815260048101859052603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608490fd5b6102789150853d87116101ec576101dd81836102f5565b38610058565b87513d8a823e3d90fd5b845162461bcd60e51b815260048101849052602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b6064820152608490fd5b634e487b7160e01b600052604160045260246000fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176102da57604052565b908160209103126102f057516001600160a01b03811681036102f05790565b91929015610399575081511561034b575090565b3b156103545790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156103ac5750805190602001fd5b6040519062461bcd60e51b82528160208060048301528251908160248401526000935b8285106103f2575050604492506000838284010152601f80199101168101030190fd5b84810182015186860160440152938101938593506103cf56fe608080604052366100c3576020816004816001600160a01b037fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505416635c60da1b60e01b82525afa9081156100b75760009161005c575b506101a0565b905060203d6020116100b0575b601f8101601f191682019167ffffffffffffffff83118184101761009a57610094926040520161015a565b38610056565b634e487b7160e01b600052604160045260246000fd5b503d610069565b6040513d6000823e3d90fd5b600460206001600160a01b037fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50541660405192838092635c60da1b60e01b82525afa9081156100b75760009161011957506101a0565b602091503d8211610152575b601f8201601f191681019167ffffffffffffffff83118284101761009a5761009492604052810190610181565b3d9150610125565b602090607f19011261017c576080516001600160a01b038116810361017c5790565b600080fd5b9081602091031261017c57516001600160a01b038116810361017c5790565b6000808092368280378136915af43d82803e156101bb573d90f35b3d90fdfea164736f6c6343000816000aa164736f6c6343000816000a
0x604060808152600490813610156200001657600080fd5b600091823560e01c806313af4035146200125e578063167a6f9014620011ef5780631cb8e3a714620010f15780631e3dd18b14620010ab5780632d88af4a146200106157806340bbd775146200104057806346c96aac1462001016578063472d35b91462000fca5780635084ed031462000fa9578063512b45ea1462000f7d578063574f2ba31462000f5c5780635c60da1b1462000f3257806361d027b31462000f085780636373ea691462000ee45780636801cc301462000e7c57806382dfdce41462000ac7578063841fa66b14620009f45780638a4fa0d214620009cb5780638da5cb5b14620009a15780639a7165e414620009775780639aab924814620008f25780639fd0506d14620008c7578063a93a897d146200086c578063b187bd261462000845578063bc063e1a1462000826578063bedb86fb14620007d9578063d0fb020314620007af578063d68f9af21462000631578063d784d42614620005ba578063e1f76b441462000512578063e5e31b1314620004d2578063e829263f1462000498578063f0f442601462000448578063f8c8765e14620002495763f94c53c714620001c657600080fd5b3462000245578260031936011262000245576001600160a01b0381541691823303620002025750506001600160a01b0319600354161760035580f35b906020606492519162461bcd60e51b8352820152601760248201527f6e6f742070656e64696e6720666565206d616e616765720000000000000000006044820152fd5b8280fd5b503462000245576080366003190112620002455762000267620012d0565b9062000272620012e7565b604435926001600160a01b03938481168091036200044357606435928584168094036200044357875460ff8160081c16159586809762000435575b80156200041c575b15620003b3575060ff198116600117895585620003a1575b5062010000868216917fffffffffffffffffff000000000000000000000000000000000000000000ffff76ffffffffffffffffffffffffffffffffffffffff0000008b549260181b1691161717958689556001600160a01b031993828560035416176003556005600855601960095516836002541617600255826005541617600555816006541617600655600754161760075562000369578280f35b61ff001916825551600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a138808280f35b61ffff191661010117885538620002cd565b60849060208a519162461bcd60e51b8352820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b50303b158015620002b55750600160ff831614620002b5565b50600160ff831610620002ad565b600080fd5b833462000495576020366003190112620004955762000466620012d0565b6001600160a01b0319600554916001600160a01b03906200048b8285163314620013b0565b1691161760055580f35b80fd5b505034620004ce576020366003190112620004ce5760209060ff620004c6620004c0620012d0565b6200158a565b915191168152f35b5080fd5b505034620004ce576020366003190112620004ce5760ff816020936001600160a01b03620004ff620012d0565b168152600e855220541690519015158152f35b503462000245578160031936011262000245576200052f6200135d565b90602435926200054c6001600160a01b0360035416331462001471565b6200055c6103e88511156200153d565b83156200057757505015620005715760085580f35b60095580f35b906020606492519162461bcd60e51b8352820152601360248201527f666565206d757374206265206e6f6e7a65726f000000000000000000000000006044820152fd5b8334620004955760203660031901126200049557620005d8620012d0565b6001600160a01b03196001600160a01b0391620005fb836006541633146200137d565b826007549116809382167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d38680a3161760075580f35b50903462000245576060366003190112620002455762000650620012d0565b906200065b620012fe565b926044359360ff851690818603620004435786956001600160a01b03926200068984600354163314620013b0565b60ff8316600a81111580620007a3575b620006a490620013fd565b606460ff620006c9620006b78762001430565b620006c28762001430565b906200145c565b16116200079f577fcb5db40c16424397b2bb06b3dbf462f8f2c61883ee07bec4e8fcd6d96e0f69a9946200071160a09560f0620007068c6200158a565b968a1b16906200145c565b981697888a52600b60205260ff888b20911660ff19825416179055600f8751938985528181166020860152871c168784015260608301526080820152a1823b156200079a5781516305a2010760e21b81529284918491829084905af19081156200079157506200077e5750f35b6200078990620014ef565b620004955780f35b513d84823e3d90fd5b505050fd5b8880fd5b50600a82111562000699565b505034620004ce5781600319360112620004ce576020906001600160a01b03600354169051908152f35b8334620004955760203660031901126200049557620007f76200135d565b8154906001600160a01b038260181c163303620002455762ff000090151560101b169062ff0000191617815580f35b505034620004ce5781600319360112620004ce57602090516103e88152f35b505034620004ce5781600319360112620004ce5760ff6020925460101c1690519015158152f35b505034620004ce5780600319360112620004ce576200088a620012d0565b90602435916001600160a01b0390620008a98260035416331462001471565b620008b96103e88511156200153d565b168352600f60205282205580f35b505034620004ce5781600319360112620004ce576001600160a01b036020925460181c169051908152f35b505034620004ce5781600319360112620004ce578051602092906105d86200091d858201836200151a565b808252620015b98583013983835180938351815b818110620009605750620009539450820190838201520380845201826200151a565b8281519101209051908152f35b808601850151878201860152869350840162000931565b505034620004ce5781600319360112620004ce576020906001600160a01b03600154169051908152f35b505034620004ce5781600319360112620004ce576020906001600160a01b03600654169051908152f35b5091346200049557806003193601126200049557506001600160a01b0360209254169051908152f35b50346200024557602092836003193601126200049557836001600160a01b0362000a1d620012d0565b16808352600f8252848320548062000abb575084516322be3de160e01b815293849182905afa91821562000aaf57819262000a70575b50501562000a67576008545b905b51908152f35b60095462000a5f565b9091508381813d831162000aa7575b62000a8b81836200151a565b81010312620004ce57518015158103620004ce57903862000a53565b503d62000a7f565b508251903d90823e3d90fd5b93505050509062000a61565b509034620002455760608060031936011262000d865762000ae7620012d0565b62000af1620012e7565b9162000afc6200136d565b60ff875460101c1662000e39576001600160a01b039283851684821681811462000e1157101562000e0a5793965b83851693841562000de257848252602098600c8a5287832096828216978885528b52888420941515948585528b5282898520541662000dba578851908b8201926bffffffffffffffffffffffff198092891b168452871b1660348201528460f81b6048820152602981528581019067ffffffffffffffff928183108484111762000da757828b5281519020926105d8808301918983019085821091111762000d9457620015b98439039084f5801562000d8a578116978160025416893b1562000d8657838860a489838e8e519687958694630390f75760e41b8652308b870152602486015260448501528b606485015260848401525af1801562000d665762000d70575b50883b15620002455787516305a2010760e21b815283818381838e5af1801562000d665790849162000d4e575b50869052600c8a52878320876000528a52876000208484528a528783206001600160a01b0319908a82825416179055878452600c8b52888420876000528b52886000208585528b528989852091825416179055600d54906801000000000000000082101562000d3b575091879162000cfd8460017fc4805696c66d7cf352fc1d6bb633ad5ee82f6cb577c453024b6e0eb8306c6fc998979601600d556200130f565b819291549060031b918c831b921b1916179055888152600e8a5220600160ff19825416179055600d548651918252878983015286820152a351908152f35b634e487b7160e01b845260419052602483fd5b62000d5990620014ef565b6200024557823862000c5b565b89513d86823e3d90fd5b62000d7e90939193620014ef565b913862000c2e565b8380fd5b87513d84823e3d90fd5b634e487b7160e01b875260418d52602487fd5b634e487b7160e01b865260418c52602486fd5b885162461bcd60e51b8152808b018c90526002602482015261504560f01b6044820152606490fd5b865162461bcd60e51b81526020818a015260026024820152615a4160f01b6044820152606490fd5b9662000b2a565b875162461bcd60e51b81526020818b01526002602482015261494160f01b6044820152606490fd5b845162461bcd60e51b8152602081880152600660248201527f50415553454400000000000000000000000000000000000000000000000000006044820152606490fd5b505034620004ce576060366003190112620004ce576020918162000e9f620012d0565b9162000eaa620012e7565b62000eb46200136d565b906001600160a01b038095168352600c875284848420911683528652828220901515825285522054169051908152f35b505034620004ce5781600319360112620004ce5760209060ff600a54169051908152f35b505034620004ce5781600319360112620004ce576020906001600160a01b03600554169051908152f35b505034620004ce5781600319360112620004ce576020906001600160a01b03600754169051908152f35b505034620004ce5781600319360112620004ce57602090600d549051908152f35b505034620004ce576020366003190112620004ce5760209062000a5f62000fa36200135d565b620014be565b505034620004ce5781600319360112620004ce576020906009549051908152f35b838234620004ce576020366003190112620004ce5762000fe9620012d0565b6001600160a01b0390620010038260035416331462001471565b166001600160a01b031982541617905580f35b505034620004ce5781600319360112620004ce576020906001600160a01b03600254169051908152f35b505034620004ce5781600319360112620004ce576020906008549051908152f35b83346200049557602036600319011262000495576200107f620012d0565b6001600160a01b039081835460181c1633036200024557166001600160a01b0319600154161760015580f35b50346200024557602036600319011262000245573591600d548310156200049557506001600160a01b03620010e26020936200130f565b92905490519260031b1c168152f35b509034620002455780600319360112620002455781359160ff831692838103620011eb576200111f620012fe565b620011376001600160a01b03600354163314620013b0565b600a85111580620011dc575b6200114e90620013fd565b606460ff6200116c620011618562001430565b620006c28562001430565b1611620011d8577f9d570c3cf62eac0107df282c148bdcecbbad2390ba6bfc8224e596d28c17bd9894608094600f60ff9485620011b3600a549260f0888b1b16906200145c565b168619821617600a5582519682821688521c166020860152840152166060820152a180f35b8580fd5b50600a60ff8216111562001143565b8480fd5b833462000495578060031936011262000495576001546001600160a01b0381163303620004ce577fffffffffffffffffff0000000000000000000000000000000000000000ffffff76ffffffffffffffffffffffffffffffffffffffff00000083549260181b16911617815580f35b83346200049557602036600319011262000495576200127c620012d0565b6001600160a01b03196006546001600160a01b0380821693620012a18533146200137d565b1680937fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c8680a3161760065580f35b600435906001600160a01b03821682036200044357565b602435906001600160a01b03821682036200044357565b6024359060ff821682036200044357565b600d548110156200134757600d6000527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50190600090565b634e487b7160e01b600052603260045260246000fd5b6004359081151582036200044357565b6044359081151582036200044357565b156200138557565b606460405162461bcd60e51b8152602060048201526004602482015263082aaa8960e31b6044820152fd5b15620013b857565b60405162461bcd60e51b815260206004820152600560248201527f21415554480000000000000000000000000000000000000000000000000000006044820152606490fd5b156200140557565b60405162461bcd60e51b815260206004820152600360248201526211951360ea1b6044820152606490fd5b60ff60059116029060ff82169182036200144657565b634e487b7160e01b600052601160045260246000fd5b9060ff8091169116019060ff82116200144657565b156200147957565b60405162461bcd60e51b815260206004820152600f60248201527f6e6f7420666565206d616e6167657200000000000000000000000000000000006044820152606490fd5b33600052600f6020526040600020548015600014620014ea575015620014e45760085490565b60095490565b905090565b67ffffffffffffffff81116200150457604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176200150457604052565b156200154557565b60405162461bcd60e51b815260206004820152600c60248201527f66656520746f6f206869676800000000000000000000000000000000000000006044820152606490fd5b6001600160a01b0316600052600b60205260ff60406000205416908115620015ae57565b600a5460ff16915056fe6080346102f0576020818101916001600160401b0391828411828510176102da57604092848452600094858452333b15610288578451635c60da1b60e01b80825291908481600481335afa90811561027e578891610261575b503b15610204577fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b03191633908117909155865192907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e8980a28551158015906101fd575b6100d9575b86516101cc908161040c8239f35b82528382600481335afa9182156101f35787926101c4575b5085519460608601868110858211176101b0578752602786527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c85870152660819985a5b195960ca1b86880152518791829190845af4913d1561019f573d90811161018b57859661017e96519161017186601f19601f84011601846102f5565b825281943d92013e610337565b50803880808080806100cb565b634e487b7160e01b87526041600452602487fd5b50915061017e939450606091610337565b634e487b7160e01b89526041600452602489fd5b6101e5919250843d86116101ec575b6101dd81836102f5565b810190610318565b90386100f1565b503d6101d3565b86513d89823e3d90fd5b50876100c6565b855162461bcd60e51b815260048101859052603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608490fd5b6102789150853d87116101ec576101dd81836102f5565b38610058565b87513d8a823e3d90fd5b845162461bcd60e51b815260048101849052602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b6064820152608490fd5b634e487b7160e01b600052604160045260246000fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176102da57604052565b908160209103126102f057516001600160a01b03811681036102f05790565b91929015610399575081511561034b575090565b3b156103545790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156103ac5750805190602001fd5b6040519062461bcd60e51b82528160208060048301528251908160248401526000935b8285106103f2575050604492506000838284010152601f80199101168101030190fd5b84810182015186860160440152938101938593506103cf56fe608080604052366100c3576020816004816001600160a01b037fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505416635c60da1b60e01b82525afa9081156100b75760009161005c575b506101a0565b905060203d6020116100b0575b601f8101601f191682019167ffffffffffffffff83118184101761009a57610094926040520161015a565b38610056565b634e487b7160e01b600052604160045260246000fd5b503d610069565b6040513d6000823e3d90fd5b600460206001600160a01b037fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50541660405192838092635c60da1b60e01b82525afa9081156100b75760009161011957506101a0565b602091503d8211610152575b601f8201601f191681019167ffffffffffffffff83118284101761009a5761009492604052810190610181565b3d9150610125565b602090607f19011261017c576080516001600160a01b038116810361017c5790565b600080fd5b9081602091031261017c57516001600160a01b038116810361017c5790565b6000808092368280378136915af43d82803e156101bb573d90f35b3d90fdfea164736f6c6343000816000aa164736f6c6343000816000a