[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "claimed0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "claimed1", "type": "uint256" } ], "name": "ClaimFees", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "reward", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "ClaimRewards", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Deposit", "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "reward", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "NotifyReward", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "reward", "type": "address" } ], "name": "addInitialReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "claimFees", "outputs": [ { "internalType": "uint256", "name": "claimed0", "type": "uint256" }, { "internalType": "uint256", "name": "claimed1", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address[]", "name": "requestedRewards", "type": "address[]" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "depositAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "derivedBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "derivedBalances", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "derivedSupplyPerReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "earned", "outputs": [ { "internalType": "uint256", "name": "_reward", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "exitRewardPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "feeDistributor", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getRegisteredRewards", "outputs": [ { "internalType": "address[]", "name": "_rewards", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address[]", "name": "tokens", "type": "address[]" } ], "name": "getReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "initialRewards", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_stake", "type": "address" }, { "internalType": "address", "name": "_feeDist", "type": "address" }, { "internalType": "address", "name": "_ve", "type": "address" }, { "internalType": "address", "name": "_voter", "type": "address" }, { "internalType": "bool", "name": "_forPair", "type": "bool" }, { "internalType": "address[]", "name": "_initialRewards", "type": "address[]" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "joinRewardPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "lastTimeRewardApplicable", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "left", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "notifyRewardAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "rewardData", "outputs": [ { "components": [ { "internalType": "uint256", "name": "rewardRate", "type": "uint256" }, { "internalType": "uint256", "name": "periodFinish", "type": "uint256" }, { "internalType": "uint256", "name": "lastUpdateTime", "type": "uint256" }, { "internalType": "uint256", "name": "rewardPerTokenStored", "type": "uint256" } ], "internalType": "struct IGauge.Reward", "name": "data", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "rewardPerToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardsList", "outputs": [ { "internalType": "address[]", "name": "_rewards", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardsListLength", "outputs": [ { "internalType": "uint256", "name": "_length", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "stake", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "storedRewardsPerUser", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "tokenIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "userRewardPerTokenStored", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ve", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "voter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60808060405234620000c6576000549060ff8260081c1662000074575060ff8082160362000038575b60405161340a9081620000cc8239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c9081630d43e8ad146127e35750806318160ddd146127c55780631f8507161461279e578063211dc32d146127165780632e1a7d4d146126f957806331279d3d1461239457806336925259146123445780633a4b66f11461231b5780633ca068b6146122cb57806346c96aac146122a457806348e5d9f814612206578063638634ee146121e257806363fb415b146121aa57806369af57f014611f6b57806370a0823114611354578063736fc25514611ef55780638003b61414611e6f578063853828b614611e46578063907d2aaa14611e0e57806399bcc05214611dea578063a933d5b914611da7578063b66503cf14611a13578063b6912338146119aa578063c6f678bd146113c7578063d294f0931461138c578063d35e254414611354578063dee2c3391461101d578063e2bbb15814610b13578063e688639614610af5578063f0ff49081461086a578063f12297771461083e578063f8e8e99f146101c65763fc97a3031461018c57600080fd5b346101c35760203660031901126101c35760406020916001600160a01b036101b2612808565b168152600c83522054604051908152f35b80fd5b50346101c35760603660031901126101c357602480359067ffffffffffffffff9060443582811161070b573660238201121561070b57806004013592831161082b578260051b906040519361021e6020840186612955565b845282602085019282010190368211610827578301915b81831061080257505050338452600a602052604084206040518082602082945493848152019088526020882092885b8181106107e957505061027992500382612955565b80519033151590865b83811061073b5750505050600160085403610737576002600855826004351561070b576102c385546004359030906001600160a01b03339160101c166131ae565b6102d1600435600754612da4565b600755338552600e602052604085206102ed6004358254612da4565b905515610722578060206001600160a01b0360015416604051928380926331a9108f60e11b82528860048301525afa9081156107175785916106d1575b506001600160a01b03339116036106a45750338352600c6020528160408420805415610640575b5050338352600c6020528160408420540361063c575b338352600d602052604083205490600e602052604084205491600d602052826040862055600a60205260408520906040518083602082955493848152019089526020892092895b8181106106235750506103c392500383612955565b815191865b8381106105c35750505050835b815181101561051157600190338652600a60205261040a604087206001600160a01b036104028487612d49565b5116906133a8565b610415575b016103d5565b6104316001600160a01b0361042a8386612d49565b5116612eb7565b6001600160a01b036104438386612d49565b51168752600f806020526003918260408a2001556104736001600160a01b0361046c8588612d49565b5116612db1565b6001600160a01b036104858588612d49565b5116895281602052600260408a2001556001600160a01b036104a78487612d49565b511688526020526040872001543387526010602052604087206001600160a01b036104d28487612d49565b51166000526020526040600020556001600160a01b036104f28285612d49565b51168652600b6020526040862061050a858254612da4565b905561040f565b505050816001600160a01b0360035416803b156105b45760405163530e389d60e11b815260048082018590523360248301523560448201529082908290606490829084905af180156105b8576105a0575b505060405190815260043560208201527f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1560403392a2600160085580f35b6105a99061290f565b6105b4578138610562565b5080fd5b6040513d84823e3d90fd5b806001600160a01b036105d860019385612d49565b51168952600b8060205260408a206105f1868254612d81565b90556001600160a01b036106058386612d49565b51168a526020526040892061061b888254612da4565b9055016103c8565b84548352600194850194879450602090930192016103ae565b8280fd5b55826001600160a01b0360035416803b156105b45760405163698473e360e01b8152600481018590523360248201529082908290604490829084905af180156105b857610690575b839150610351565b6106999061290f565b61063c578238610688565b60649060066040519162461bcd60e51b8352602060048401528201526510b7bbb732b960d11b6044820152fd5b90506020813d60201161070f575b816106ec60209383612955565b8101031261070b57516001600160a01b038116810361070b573861032a565b8480fd5b3d91506106df565b6040513d87823e3d90fd5b50338352600c60205260408320549150610367565b8380fd5b806001600160a01b0361075060019385612d49565b5116604061075d82612eb7565b828c52600f90816020528c6003938491200155868c6002604061077f87612db1565b9287815285602052200155610798575b50505001610282565b6107a23384612f8a565b338d52601160205260408d2084600052602052604060002055828c5260205260408b20015490338b52601060205260408b209060005260205260406000205538808061078f565b8454835260019485019486945060209093019201610264565b82356001600160a01b038116810361082257815260209283019201610235565b600080fd5b8680fd5b50634e487b7160e01b8452604160045283fd5b50346101c35760203660031901126101c357602061086261085d612808565b612eb7565b604051908152f35b50346101c3576020806003193601126105b457610885612808565b338352600a825260408320604051808285829454938481520190875285872092875b87828210610adf575050506108be92500382612955565b80519033151590855b838110610a3a5750505050338352600a82526040832091604051808483829654938481520190875283872092875b85828210610a245750505061090c92500384612955565b8251338552600d82526040852054600e8352604086205494600d8452856040882055865b8381106109cc5750505050338452600a81526040842061095a6001600160a01b03841680926133a8565b610962578480f35b600361098684610973600b96612eb7565b848952600f86528360408a200155612db1565b828752600f845260408720906002820155015433865260108352604086208260005283526040600020558452526109c260408320918254612da4565b9055388080808480f35b6001906001600160a01b03806109e28386612d49565b51168a52600b9081885260408b206109fb878254612d81565b9055610a078386612d49565b51168a52865260408920610a1c898254612da4565b905501610930565b85548452600195860195899550930192016108f5565b806001600160a01b03610a4f60019385612d49565b5116610a5a81612eb7565b818a5289868a60026040600f9485845260039687838320015585610a7d89612db1565b9489835252200155610a93575b505050016108c7565b610a9d3384612f8a565b338c5260118b5260408c20846000528b52604060002055828b52895260408a20015490338a526010895260408a20906000528852604060002055388080610a8a565b85548452600195860195879550930192016108a7565b50346101c357806003193601126101c3576020600454604051908152f35b50346101c35760403660031901126101c357602435610b30612e3e565b338352600a602052604083206040518082602082945493848152019087526020872092875b818110611004575050610b6a92500382612955565b80519033151590855b838110610f58575050505060016008540361063c576002600855816004351561073757610bb484546004359030906001600160a01b03339160101c166131ae565b610bc2600435600754612da4565b600755338452600e60205260408420610bde6004358254612da4565b905515610f4457602460206001600160a01b0360015416604051928380926331a9108f60e11b82528760048301525afa908115610f39578491610ef7575b506001600160a01b0333911603610ec957338352600c6020528160408420805415610e65575b5050338352600c6020528160408420540361063c575b338352600d602052604083205490600e602052604084205491600d602052826040862055600a60205260408520906040518083602082955493848152019089526020892092895b818110610e4c575050610cb492500383612955565b815191865b838110610dec5750505050835b815181101561051157600190338652600a602052610cf3604087206001600160a01b036104028487612d49565b610cfe575b01610cc6565b610d136001600160a01b0361042a8386612d49565b6001600160a01b03610d258386612d49565b51168752600f806020526003918260408a200155610d4e6001600160a01b0361046c8588612d49565b6001600160a01b03610d608588612d49565b5116895281602052600260408a2001556001600160a01b03610d828487612d49565b511688526020526040872001543387526010602052604087206001600160a01b03610dad8487612d49565b51166000526020526040600020556001600160a01b03610dcd8285612d49565b51168652600b60205260408620610de5858254612da4565b9055610cf8565b806001600160a01b03610e0160019385612d49565b51168952600b8060205260408a20610e1a868254612d81565b90556001600160a01b03610e2e8386612d49565b51168a5260205260408920610e44888254612da4565b905501610cb9565b8454835260019485019487945060209093019201610c9f565b55826001600160a01b0360035416803b156105b45760405163698473e360e01b8152600481018590523360248201529082908290604490829084905af180156105b857610eb5575b839150610c42565b610ebe9061290f565b61063c578238610ead565b60405162461bcd60e51b815260206004820152600660248201526510b7bbb732b960d11b6044820152606490fd5b90506020813d602011610f31575b81610f1260209383612955565b8101031261073757516001600160a01b03811681036107375738610c1c565b3d9150610f05565b6040513d86823e3d90fd5b338352600c60205260408320549150610c58565b806001600160a01b03610f6d60019385612d49565b5116610f7881612eb7565b818a52600f806020526003918260408d200155868b60026040610f9a87612db1565b9287815285602052200155610fb3575b50505001610b73565b610fbd3384612f8a565b338c52601160205260408c2084600052602052604060002055828b5260205260408a20015490338a52601060205260408a2090600052602052604060002055388080610faa565b8454835260019485019486945060209093019201610b55565b50346101c35760c03660031901126101c357611037612808565b61103f61281e565b90604435916001600160a01b03831680930361082257606435916001600160a01b038316809303610822576084359081151582036113505760a43567ffffffffffffffff811161082757611097903690600401612834565b93909487549160ff8360081c161597888099611343575b801561132c575b156112c15760ff948519948a6001878316178d556112b0575b507fffffffffffffffffffff0000000000000000000000000000000000000000ffff75ffffffffffffffffffffffffffffffffffffffff00008c549260101b169116178a556001600160a01b037fffffffffffffffffffffffff00000000000000000000000000000000000000009216826002541617600255816001541617600155600354161760035560095416911515161760095567ffffffffffffffff811161129c5768010000000000000000811161129c576006548160065580821061125b575b508160068552845b828110611220575050835b8181106111f25750505060016008556111bb5780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b806112196001600160a01b0361121361120e6001958789612d5d565b612d6d565b1661330b565b50016111a5565b600190602061122e84612d6d565b930192817ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01550161119a565b817ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f91820191015b8181106112905750611192565b60008155600101611283565b634e487b7160e01b84526041600452602484fd5b61ffff1916610101178b55386110ce565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608490fd5b50303b1580156110b55750600160ff8516146110b5565b50600160ff8516106110ae565b8580fd5b50346101c35760203660031901126101c35760406020916001600160a01b0361137b612808565b168152600e83522054604051908152f35b50346101c357806003193601126101c3576001600854036101c357600260085560406113b66130e7565b600160085582519182526020820152f35b50346101c35760203660031901126101c3576001600160a01b03600435602083546024604051809581936370a0823160e01b835233600484015260101c165afa91821561199f57839261196b575b5061141e612e3e565b338452600a602052604084206040518082602082945493848152019088526020882092885b81811061195257505061145892500382612955565b80519033151590865b8381106118a4575050505060016008540361073757600260085581831561070b5761149d846001600160a01b03875460101c16309033906131ae565b6114a984600754612da4565b600755338552600e602052604085206114c3858254612da4565b90551561189057602460206001600160a01b0360015416604051928380926331a9108f60e11b82528760048301525afa90811561071757859161184e575b506001600160a01b0333911603610ec957338452600c60205281604085208054156117ea575b5050338452600c60205281604085205403610737575b338452600d602052604084205491600e602052604085205492600d602052836040872055600a6020526040862090604051808360208295549384815201908a5260208a20928a5b8181106117d157505061159992500383612955565b815191875b8381106117715750505050845b82518110156116d157600190338752600a6020526115d8604088206001600160a01b036104028488612d49565b6115e3575b016115ab565b6115f86001600160a01b0361042a8387612d49565b6001600160a01b0361160a8387612d49565b51168852600f806020526003918260408b2001556116336001600160a01b0361046c8589612d49565b6001600160a01b036116458589612d49565b51168a5281602052600260408b2001556001600160a01b036116678488612d49565b511689526020526040882001543388526010602052604088206001600160a01b036116928488612d49565b51166000526020526040600020556001600160a01b036116b28286612d49565b51168752600b602052604087206116ca868254612da4565b90556115dd565b858286826001600160a01b0360035416803b156105b45760405163530e389d60e11b815260048101859052336024820152604481018490529082908290606490829084905af180156105b85761175d575b505060405191825260208201527f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1560403392a2600160085580f35b6117669061290f565b61063c578284611722565b806001600160a01b0361178660019385612d49565b51168a52600b8060205260408b2061179f868254612d81565b90556001600160a01b036117b38386612d49565b51168b5260205260408a206117c9898254612da4565b90550161159e565b8454835260019485019487945060209093019201611584565b55836001600160a01b0360035416803b156105b45760405163698473e360e01b8152600481018590523360248201529082908290604490829084905af180156105b85761183a575b839150611527565b6118439061290f565b610737578338611832565b90506020813d602011611888575b8161186960209383612955565b8101031261070b57516001600160a01b038116810361070b5738611501565b3d915061185c565b338452600c6020526040842054915061153d565b806001600160a01b036118b960019385612d49565b511660406118c682612eb7565b828c52600f90816020528c6003938491200155868c600260406118e887612db1565b9287815285602052200155611901575b50505001611461565b61190b3384612f8a565b338d52601160205260408d2084600052602052604060002055828c5260205260408b20015490338b52601060205260408b20906000526020526040600020553880806118f8565b8454835260019485019486945060209093019201611443565b9091506020813d602011611997575b8161198760209383612955565b8101031261082257519038611415565b3d915061197a565b6040513d85823e3d90fd5b50346101c35760203660031901126101c3576119c4612808565b6001600160a01b03908160035416330361063c576006546801000000000000000081101561129c578060016119fc92016006556128aa565b90928084549260031b9316831b921b191617905580f35b50346101c35760403660031901126101c357611a2d612808565b602490813591838052602090600a825260408520604051808285829454938481520190895285892092895b87828210611d9157505050611a6f92500382612955565b805190865b828110611d445750505060016008540361070b57600260085584546001600160a01b03848116959160101c16851461135057801561135057611ab46130e7565b5050611abf84612eb7565b93858752600f948585526003604089200155611ada8661330b565b506040516370a0823160e01b80825230600483015292858286818b5afa918215611d39578992611d08575b50611b149192309033906131ae565b60405190828252306004830152848285818a5afa8015611c71578890611cd9575b611b3f9250612d81565b93858752808452600160408820015480421015600014611c8f575085875280845262093a80850460408820555b85875280845242600260408920015562093a8090814201804211611c7c57878952818652600160408a200155604051928352306004840152848385818a5afa928315611c71578893611c42575b5086885284526040872054910410611bff57507ff70d5c697de7ea828df48e5c4573cb2194c659f1901f70110c52b066dcf50826906040519283523392a3600160085580f35b9060186064926040519262461bcd60e51b845260048401528201527f50726f76696465642072657761726420746f6f206869676800000000000000006044820152fd5b9092508481813d8311611c6a575b611c5a8183612955565b8101031261082257519138611bb9565b503d611c50565b6040513d8a823e3d90fd5b634e487b7160e01b895260116004528489fd5b611c9d611cae914290612d81565b878952828652604089205490612ddd565b80861115611cd557611cc462093a809187612da4565b048688528185526040882055611b6c565b8780fd5b508482813d8311611d01575b611cef8183612955565b8101031261082257611b3f9151611b35565b503d611ce5565b91508582813d8311611d32575b611d1f8183612955565b8101031261082257611b14915191611b05565b503d611d15565b6040513d8b823e3d90fd5b806001600160a01b03611d5960019385612d49565b5116611d6481612eb7565b818b52600f90818952600360408d200155611d7e82612db1565b918b528752600260408b20015501611a74565b8554845260019586019587955093019201611a58565b50346101c35760203660031901126101c357600435906006548210156101c35760206001600160a01b03611dda846128aa565b9190546040519260031b1c168152f35b50346101c35760203660031901126101c3576020610862611e09612808565b612df0565b50346101c35760203660031901126101c35760406020916001600160a01b03611e35612808565b168152600b83522054604051908152f35b50346101c357806003193601126101c357338152600e602052611e6c6040822054612977565b80f35b50346101c357806003193601126101c357604051600480548083529083526020808301937f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b92915b828210611ede57611eda85611ece81890382612955565b60405191829182612865565b0390f35b835486529485019460019384019390910190611eb7565b50346101c3576020806003193601126105b4576001600160a01b03611f18612808565b168252600a602052604082209160405180926020855492838152019483526020832092905b828210611f5457611eda85611ece81890382612955565b835486529485019460019384019390910190611f3d565b50346101c3576020806003193601126105b457611f86612808565b338352600a825260408320604051808285829454938481520190875285872092875b8782821061219457505050611fbf92500382612955565b80519033151590855b8381106120ef5750505050338352600a82526040832091604051808483829654938481520190875283872092875b858282106120d95750505061200d92500384612955565b8251338552600d82526040852054600e8352604086205494600d8452856040882055865b8381106120815750505050338452600a815261205b6001600160a01b036040862093168093613218565b612063578380f35b600b9184525261207860408320918254612d81565b90553880808380f35b6001906001600160a01b03806120978386612d49565b51168a52600b9081885260408b206120b0878254612d81565b90556120bc8386612d49565b51168a528652604089206120d1898254612da4565b905501612031565b8554845260019586019589955093019201611ff6565b806001600160a01b0361210460019385612d49565b511661210f81612eb7565b818a5289868a60026040600f948584526003968783832001558561213289612db1565b9489835252200155612148575b50505001611fc8565b6121523384612f8a565b338c5260118b5260408c20846000528b52604060002055828b52895260408a20015490338a526010895260408a2090600052885260406000205538808061213f565b8554845260019586019587955093019201611fa8565b50346101c35760203660031901126101c35760406020916001600160a01b036121d1612808565b168152600d83522054604051908152f35b50346101c35760203660031901126101c3576020610862612201612808565b612db1565b50346101c35760203660031901126101c35760406080916001600160a01b0361222d612808565b826060855161223b81612939565b82815282602082015282878201520152168152600f6020522060405161226081612939565b815491828252600181015460208301908152606060036002840154936040860194855201549301928352604051938452516020840152516040830152516060820152f35b50346101c357806003193601126101c35760206001600160a01b0360035416604051908152f35b50346101c35760403660031901126101c3576122e5612808565b60406122ef61281e565b926001600160a01b03809316815260106020522091166000526020526020604060002054604051908152f35b50346101c357806003193601126101c3576001600160a01b036020915460101c16604051908152f35b50346101c35760403660031901126101c35761235e612808565b604061236861281e565b926001600160a01b03809316815260116020522091166000526020526020604060002054604051908152f35b50346101c35760403660031901126101c3576123ae612808565b60243567ffffffffffffffff811161063c576123ce903690600401612834565b91906001600160a01b0380831692838652602092600a8452604087206040518082878294549384815201908b52878b20928b5b898282106126e35750505061241892500382612955565b80519086151590895b83811061264157505050506001958660085403611cd5578533148015612634575b15611cd55786600855878460035416803b156105b45781906024604051809481936363453ae160e01b83523060048401525af18015611d3957612621575b50600260085586885b82811061256a575050505050828552600a82526040852091604051808483829654938481520190895283892092895b898683831061255557505050506124d192500384612955565b8251938652600d8152604086205491600e8252604087205493600d835284604089205586885b87811061250657898260085580f35b836125118285612d49565b51168a52600b80865260408b20612529888254612d81565b9055846125368386612d49565b51168b52855260408a2061254b888254612da4565b90550187906124f7565b865485529581019589955090930192016124b8565b878a52601180885260408b208761258561120e85888a612d5d565b16600052885260406000205490816125a2575b5050018790612489565b898c52885260408b20876125ba61120e85888a612d5d565b1660005288528a6040600020556125df81876125da61120e86898b612d5d565b61305b565b887f9aa05b3d70a9e3e2f004f039648839560576334fb45c81f91b6db03ad9e2efc9898961261161120e878a8c612d5d565b1693604051908152a33880612598565b61262d9098919861290f565b9638612480565b5083600354163314612442565b808761264f60019385612d49565b51168c61265b82612eb7565b8282528b8d8b600f92838152600394856040882001558a61267b88612db1565b888852858352600260408920015561269b575b5050505050505001612421565b6126a760119288612f8a565b928652528d60408520908686525260408420558c52604082200154918c825260108c526040822091528a5260408d2055388c81808d8b8e61268e565b8554845260019586019587955093019201612401565b50346101c35760203660031901126101c357611e6c600435612977565b50346101c35760403660031901126101c357602090612733612808565b61273b61281e565b906001600160a01b039283831693848252600a865261277160408320918416809260019160005201602052604060002054151590565b156127825750506108629250612f8a565b9150915060409282526011845282822090825283522054610862565b50346101c357806003193601126101c35760206001600160a01b0360015416604051908152f35b50346101c357806003193601126101c3576020600754604051908152f35b9050346105b457816003193601126105b4576020906001600160a01b03600254168152f35b600435906001600160a01b038216820361082257565b602435906001600160a01b038216820361082257565b9181601f840112156108225782359167ffffffffffffffff8311610822576020808501948460051b01011161082257565b602090602060408183019282815285518094520193019160005b82811061288d575050505090565b83516001600160a01b03168552938101939281019260010161287f565b6006548110156128e15760066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0190600090565b634e487b7160e01b600052603260045260246000fd5b80548210156128e15760005260206000200190600090565b67ffffffffffffffff811161292357604052565b634e487b7160e01b600052604160045260246000fd5b6080810190811067ffffffffffffffff82111761292357604052565b90601f8019910116810190811067ffffffffffffffff82111761292357604052565b90600091829033600052602090600e825260409182600020548214612d38575b600a8152826000208351808284829454938481520190600052846000209260005b86828210612d22575050506129cf92500382612955565b8051903315159060005b838110612c7f575050505060019360016008540361082257600260085580948315612c3b57612a0a84600754612d81565b60075533600052600e835284600020612a24858254612d81565b90556001600160a01b0391612a4185338560005460101c1661305b565b15612c265733600052600c8352846000208054870361082257600090558160035416803b1561082257855163411b1f7760e01b815260048101889052336024820152906000908290604490829084905af18015612c1b57612c07575b505b338852600a835284882085518082868294549384815201908c52868c20928c5b8689838310612bf25750505050612ad892500382612955565b805190338a52600d8552868a2054600e8652878b205491600d875282898d20558b805b8a868210612ba557505050505050505060035416803b15610827578351633aa53b9160e21b815260048101869052336024820152604481018490529087908290606490829084905af18015612b9b57612b87575b507ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689394955082519485528401523392a26001600855565b612b91879161290f565b6113505785612b4f565b84513d89823e3d90fd5b879289612bb28487612d49565b51168152600b808c52828220612bc9888254612d81565b90558a612bd68588612d49565b511682528b5220612be8868254612da4565b9055018c90612afb565b86548552958101958795509093019201612abf565b612c1291985061290f565b60009638612a9d565b86513d6000823e3d90fd5b945033600052600c8252836000205494612a9f565b845162461bcd60e51b815260048101849052601160248201527f43616e27742077697468647261772030210000000000000000000000000000006044820152606490fd5b806001600160a01b03612c9460019385612d49565b5116612c9f81612eb7565b81600052600f808952600391828c600020015586612cbc84612db1565b84600052828b5260028d6000200155612cd9575b505050016129d9565b612ce33384612f8a565b3360005260118a528b600020846000528a528b600020558852896000200154903360005260108852896000209060005287528860002055388080612cd0565b85548452600195860195879550930192016129b8565b9250600c8352816000205492612997565b80518210156128e15760209160051b010190565b91908110156128e15760051b0190565b356001600160a01b03811681036108225790565b91908203918211612d8e57565b634e487b7160e01b600052601160045260246000fd5b91908201809211612d8e57565b6001600160a01b0316600052600f602052600160406000200154804210600014612dda57504290565b90565b81810292918115918404141715612d8e57565b6001600160a01b031680600052600f6020526001604060002001549081421015612e3757612e22612dda924290612d81565b90600052600f60205260406000205490612ddd565b5050600090565b6040519060065480835282602091602082019060066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f936000905b828210612e9457505050612e9292500383612955565b565b85546001600160a01b031684526001958601958895509381019390910190612e7c565b906001600160a01b038216916000928084526020600b81526040908186205415612f7a57600f8152612f1a612f09612ef56003858a20015496612db1565b858952600f84526002858a20015490612d81565b848852600f83528388205490612ddd565b92670de0b6b3a764000093848102948186041490151715612f66578652600b9052842054908115612f5257612dda9394500490612da4565b634e487b7160e01b85526012600452602485fd5b634e487b7160e01b87526011600452602487fd5b600f905290932060030154925050565b6040612dda926001600160a01b0380911692670de0b6b3a7640000612fe9600093868552600d602052612fe38686205491612fc486612eb7565b9089885260106020528888209616958688526020528787205490612d81565b90612ddd565b049382526011602052828220908252602052205490612da4565b3d1561303e573d9067ffffffffffffffff82116129235760405191613032601f8201601f191660200184612955565b82523d6000602084013e565b606090565b90816020910312610822575180151581036108225790565b919091803b1561082257600092838093604051906001600160a01b03602083019463a9059cbb60e01b865216602483015260448201526044815261309e81612939565b51925af16130aa613003565b816130b8575b501561082257565b80518015925082156130cd575b5050386130b0565b6130e09250602080918301019101613043565b38806130c5565b60ff60095416156131a6576000906001600160a01b03825460101c16908260408093600482518097819363d294f09360e01b83525af193841561319a57818095613162575b50507fbc567d6cbad26368064baa0ab5a757be46aae4d70f707f9203d9d9b6c8ccbfa384938295815193845260208401523392a2565b915093508284813d8311613193575b61317b8183612955565b810103126101c357506020835193015192388061312c565b503d613171565b508251903d90823e3d90fd5b600090600090565b909192813b15610822576040519260208401946323b872dd60e01b86526001600160a01b03809216602486015216604484015260648301526064825260a082019282841067ffffffffffffffff851117612923576000809493819460405251925af16130aa613003565b906001820190600092818452826020526040842054908115156000146133045760001991808301818111612f66578254908482019182116132f0578082036132a4575b505050805480156132905782019161327383836128f7565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b6132db6132b46132c493866128f7565b90549060031b1c928392866128f7565b819391549060031b91821b91600019901b19161790565b9055865284602052604086205538808061325b565b634e487b7160e01b88526011600452602488fd5b5050505090565b6000818152600560205260408120546133a3576004546801000000000000000081101561338f57600181018060045581101561337b5790826040927f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b015560045492815260056020522055600190565b634e487b7160e01b82526032600452602482fd5b634e487b7160e01b82526041600452602482fd5b905090565b6000828152600182016020526040902054612e37578054906801000000000000000082101561292357826133e66132c48460018096018555846128f7565b90558054926000520160205260406000205560019056fea164736f6c6343000816000a