0x608060405260043610610220575f3560e01c806378109e541161011e578063b2bdfa7b116100a8578063df20fd491161006d578063df20fd4914610643578063e96fada214610662578063f2fde38b14610681578063f4293890146106a0578063f887ea40146106b4575f80fd5b8063b2bdfa7b14610584578063c0cbdea4146105a2578063dc084dd8146105c1578063dd62ed3e146105e0578063ded1e43814610624575f80fd5b80638da5cb5b116100ee5780638da5cb5b146104e957806395d89b4114610505578063a70419d214610532578063a8aa1b3114610546578063a9059cbb14610565575f80fd5b806378109e54146104a05780637d1db4a5146104b557806382528791146104ca578063893d20e8146104e9575f80fd5b8063313ce567116101aa5780636ddd17131161016f5780636ddd17131461040557806370a0823114610425578063715018a614610459578063751039fc1461046d57806377b54bad14610481575f80fd5b8063313ce5671461036157806350ac6c221461037c57806355265669146103b3578063571ac8b0146103c75780635d83e1d5146103e6575f80fd5b806318160ddd116101f057806318160ddd146102da57806323b872dd146102ee578063282c87491461030d578063293230b81461032e57806330c9a6a014610342575f80fd5b80630445b6671461022b57806306fdde031461025357806308fd3d051461028b578063095ea7b3146102bb575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b50610240601f5481565b6040519081526020015b60405180910390f35b34801561025e575f80fd5b50604080518082019091526007815266426162794a657760c81b60208201525b60405161024a9190611c8a565b348015610296575f80fd5b50601e546102ab90600160a01b900460ff1681565b604051901515815260200161024a565b3480156102c6575f80fd5b506102ab6102d5366004611cf0565b6106d3565b3480156102e5575f80fd5b50600354610240565b3480156102f9575f80fd5b506102ab610308366004611d18565b61073f565b348015610318575f80fd5b5061032c610327366004611d51565b6107fd565b005b348015610339575f80fd5b5061032c6108d3565b34801561034d575f80fd5b5061024061035c366004611d90565b61091f565b34801561036c575f80fd5b506040516012815260200161024a565b348015610387575f80fd5b5060195461039b906001600160a01b031681565b6040516001600160a01b03909116815260200161024a565b3480156103be575f80fd5b50610240610964565b3480156103d2575f80fd5b506102ab6103e1366004611da7565b6109d4565b3480156103f1575f80fd5b5061032c610400366004611d90565b6109e0565b348015610410575f80fd5b50601e546102ab90600160a81b900460ff1681565b348015610430575f80fd5b5061024061043f366004611da7565b6001600160a01b03165f9081526006602052604090205490565b348015610464575f80fd5b5061032c610a6c565b348015610478575f80fd5b5061032c610add565b34801561048c575f80fd5b506102ab61049b366004611cf0565b610b13565b3480156104ab575f80fd5b5061024060055481565b3480156104c0575f80fd5b5061024060045481565b3480156104d5575f80fd5b5061032c6104e4366004611dc0565b610c3a565b3480156104f4575f80fd5b505f546001600160a01b031661039b565b348015610510575f80fd5b5060408051808201909152600581526442424a455760d81b602082015261027e565b34801561053d575f80fd5b5061032c610d11565b348015610551575f80fd5b50601e5461039b906001600160a01b031681565b348015610570575f80fd5b506102ab61057f366004611cf0565b610d4b565b34801561058f575f80fd5b505f5461039b906001600160a01b031681565b3480156105ad575f80fd5b5061032c6105bc366004611e21565b610d57565b3480156105cc575f80fd5b5061032c6105db366004611e4a565b610d91565b3480156105eb575f80fd5b506102406105fa366004611e4a565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b34801561062f575f80fd5b506102ab61063e366004611e7b565b610e29565b34801561064e575f80fd5b5061032c61065d366004611ea8565b610e3c565b34801561066d575f80fd5b5060155461039b906001600160a01b031681565b34801561068c575f80fd5b5061032c61069b366004611da7565b610ec7565b3480156106ab575f80fd5b5061032c610fae565b3480156106bf575f80fd5b50601c5461039b906001600160a01b031681565b335f8181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061072d9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383165f9081526007602090815260408083203384529091528120545f19146107e8576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526007825283812033825290915291909120546107c4918490610fe7565b6001600160a01b0385165f9081526007602090815260408083203384529091529020555b6107f384848461101f565b90505b9392505050565b5f546001600160a01b0316331461082f5760405162461bcd60e51b815260040161082690611ec4565b60405180910390fd5b600a869055600d859055600b849055600c839055600e8290556108608261085a858188818c8c611376565b90611376565b600f556010819055610873600282611f0d565b600f54106108c35760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e203530250000006044820152606401610826565b6108cb6113d4565b505050505050565b5f546001600160a01b031633146108fc5760405162461bcd60e51b815260040161082690611ec4565b601e805460ff60a01b1916600160a01b17905560c860128190556011555f601355565b5f61073961092b610964565b601e546001600160a01b03165f9081526006602052604090205461095e90610957906002905b9061146f565b859061146f565b906114ed565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead5f9081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225460035491926109cf9290916109c9919061152e565b9061152e565b905090565b5f610739825f196106d3565b5f546001600160a01b03163314610a095760405162461bcd60e51b815260040161082690611ec4565b6001811015610a16575f80fd5b6103e881600354610a279190611f2c565b610a319190611f0d565b60058190556040519081527f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be519060200160405180910390a150565b5f546001600160a01b03163314610a955760405162461bcd60e51b815260040161082690611ec4565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610b065760405162461bcd60e51b815260040161082690611ec4565b6003546004819055600555565b5f815f03610b84576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610b5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b819190611f43565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160145460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610c16573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f69190611f5a565b5f546001600160a01b03163314610c635760405162461bcd60e51b815260040161082690611ec4565b601480546001600160a01b038781166001600160a01b031992831617909255601580548784169083168117909155601680548785169084168117909155601880548786169085168117909155601780549587169590941685179093556040805192835260208301949094529281019190915260608101919091527f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b159060800160405180910390a15050505050565b5f546001600160a01b03163314610d3a5760405162461bcd60e51b815260040161082690611ec4565b60c86012556103e86011555f601355565b5f6107f633848461101f565b5f546001600160a01b03163314610d805760405162461bcd60e51b815260040161082690611ec4565b601191909155601291909155601355565b5f546001600160a01b03163314610dba5760405162461bcd60e51b815260040161082690611ec4565b601980546001600160a01b038481166001600160a01b03199283168117909355601580549185169190921681179091556040805192835260208301919091527f60e9d62fc17e911c17a5b5e31abe9a940e86a890600b0631df4e4da5add7e4d291015b60405180910390a15050565b5f82610e348361091f565b119392505050565b5f546001600160a01b03163314610e655760405162461bcd60e51b815260040161082690611ec4565b601e805460ff60a81b1916600160a81b84151581029190911791829055601f8390556040805184815260ff9290930491909116151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee609101610e1d565b5f546001600160a01b03163314610ef05760405162461bcd60e51b815260040161082690611ec4565b6001600160a01b038116610f555760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610826565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6014546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610fe4573d5f803e3d5ffd5b50565b5f818484111561100a5760405162461bcd60e51b81526004016108269190611c8a565b505f6110168486611f75565b95945050505050565b6020545f9060ff161561103e5761103784848461156f565b90506107f6565b6001600160a01b0384165f9081526001602052604090205460ff1615801561107e57506001600160a01b0383165f9081526001602052604090205460ff16155b156110d357601e54600160a01b900460ff166110d35760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610826565b6001600160a01b0384165f9081526001602052604090205460ff1615801561110457506001600160a01b0383163014155b801561111b57506001600160a01b03831661dead14155b80156111355750601e546001600160a01b03848116911614155b801561114f57506018546001600160a01b03848116911614155b801561116957506015546001600160a01b03848116911614155b801561118d57506001600160a01b0383165f9081526009602052604090205460ff16155b1561122d576001600160a01b0383165f908152600660205260409020546005546111b78483611f88565b111561122b5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610826565b505b611237848361163f565b61123f6116ab565b1561124c5761124c6116ff565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526006909152919091205461129d918490610fe7565b6001600160a01b0385165f90815260066020908152604080832093909355600890529081205460ff16806112e857506001600160a01b0384165f9081526008602052604090205460ff165b6112fc576112f7858486611ac7565b6112fe565b825b6001600160a01b0385165f908152600660205260409020549091506113239082611376565b6001600160a01b038086165f8181526006602052604090819020939093559151908716905f8051602061204a833981519152906113639085815260200190565b60405180910390a3506001949350505050565b5f806113828385611f88565b9050838110156107f65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610826565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b932800611411606461095e601254600f5461146f90919063ffffffff16565b61142d606461095e601154600f5461146f90919063ffffffff16565b611449606461095e601354600f5461146f90919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b5f825f0361147e57505f610739565b5f6114898385611f2c565b9050826114968583611f0d565b146107f65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610826565b5f6107f683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c5e565b5f6107f683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fe7565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526006909152918220546115bf918490610fe7565b6001600160a01b038086165f9081526006602052604080822093909355908516815220546115ed9083611376565b6001600160a01b038085165f8181526006602052604090819020939093559151908616905f8051602061204a8339815191529061162d9086815260200190565b60405180910390a35060019392505050565b6004548111158061166757506001600160a01b0382165f9081526009602052604090205460ff165b6116a75760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610826565b5050565b601e545f906001600160a01b031633148015906116cb575060205460ff16155b80156116e05750601e54600160a81b900460ff165b80156109cf575050601f54305f90815260066020526040902054101590565b6020805460ff19166001179055601a54601b545f9161171d91610e29565b61172957600a5461172b565b5f5b90505f61174e600261095e600f5461095e86601f5461146f90919063ffffffff16565b90505f61176682601f5461152e90919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061179e5761179e611f9b565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106117cf576117cf611f9b565b6001600160a01b039283166020918202929092010152601c5460405163791ac94760e01b81524792919091169063791ac947906118189086905f90879030904290600401611faf565b5f604051808303815f87803b15801561182f575f80fd5b505af1158015611841573d5f803e3d5ffd5b505050505f611859824761152e90919063ffffffff16565b90505f61187361186a8860026114ed565b600f549061152e565b90505f611887600261095e8481878d61146f565b90505f6118a38361095e600b548761146f90919063ffffffff16565b90505f6118bf8461095e600d548861146f90919063ffffffff16565b90505f6118db8561095e600c548961146f90919063ffffffff16565b6015546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f811461192a576040519150601f19603f3d011682016040523d82523d5f602084013e61192f565b606091505b50506016546040519192506001600160a01b03169083905f81818185875af1925050503d805f811461197c576040519150601f19603f3d011682016040523d82523d5f602084013e611981565b606091505b50506017546040519192506001600160a01b03169084905f81818185875af1925050503d805f81146119ce576040519150601f19603f3d011682016040523d82523d5f602084013e6119d3565b606091505b505f9250508b159050611aaf57601c5460145460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611a4d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611a72919061201e565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506020805460ff1916905550505050505050505050565b601354601e545f91906001600160a01b0390811690841603611aec5750601154611b07565b601e546001600160a01b0390811690861603611b0757506012545b5f611b336010546064611b1a9190611f2c565b61095e84610951600f548a61146f90919063ffffffff16565b90505f611b51600f5461095e600e548561146f90919063ffffffff16565b90505f611b5e838361152e565b6019546001600160a01b03165f90815260066020526040902054909150611b859082611376565b6019546001600160a01b039081165f908152600660205260408082209390935560185490911681522054611bb99083611376565b6018546001600160a01b039081165f9081526006602090815260409182902093909355601954905184815290821692918b16915f8051602061204a833981519152910160405180910390a38115611c4857600354611c17908361152e565b6003556040518281525f906001600160a01b038a16905f8051602061204a8339815191529060200160405180910390a35b611c52878461152e565b98975050505050505050565b5f8183611c7e5760405162461bcd60e51b81526004016108269190611c8a565b505f6110168486611f0d565b5f6020808352835180828501525f5b81811015611cb557858101830151858201604001528201611c99565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611ceb575f80fd5b919050565b5f8060408385031215611d01575f80fd5b611d0a83611cd5565b946020939093013593505050565b5f805f60608486031215611d2a575f80fd5b611d3384611cd5565b9250611d4160208501611cd5565b9150604084013590509250925092565b5f805f805f8060c08789031215611d66575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f60208284031215611da0575f80fd5b5035919050565b5f60208284031215611db7575f80fd5b6107f682611cd5565b5f805f805f60a08688031215611dd4575f80fd5b611ddd86611cd5565b9450611deb60208701611cd5565b9350611df960408701611cd5565b9250611e0760608701611cd5565b9150611e1560808701611cd5565b90509295509295909350565b5f805f60608486031215611e33575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611e5b575f80fd5b611e6483611cd5565b9150611e7260208401611cd5565b90509250929050565b5f8060408385031215611e8c575f80fd5b50508035926020909101359150565b8015158114610fe4575f80fd5b5f8060408385031215611eb9575f80fd5b8235611d0a81611e9b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f82611f2757634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761073957610739611ef9565b5f60208284031215611f53575f80fd5b5051919050565b5f60208284031215611f6a575f80fd5b81516107f681611e9b565b8181038181111561073957610739611ef9565b8082018082111561073957610739611ef9565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611ffd5784516001600160a01b031683529383019391830191600101611fd8565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612030575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d3d6e2685163db21ac4e7e4152168d9041984c7de065556742fb150e4bba61a464736f6c63430008140033
0x6080604052620000126012600a6200068a565b620000239064e8d4a510006200069a565b600381905562000044906064906200003d90600562000467565b90620004fa565b6004556003546200005e906064906200003d908262000467565b6005555f600a556008600b556002600c555f600d555f600e55600e54600c54600a54600b54600d54620000929190620006b4565b6200009e9190620006b4565b620000aa9190620006b4565b620000b69190620006b4565b600f556103e860108190556064601181905560128190556013819055601980546001600160a01b03191673b923ffc3c33af4a8a1f4256b98b2c65748b66a47179055601e601a819055601b91909155805461ffff60a01b1916600160a81b179055600354620001279060466200069a565b620001339190620006ca565b601f5534801562000142575f80fd5b505f80546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015620001ff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002259190620006ea565b600280546001600160a01b0319166001600160a01b03928316179055601c546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000282573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a89190620006ea565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015620002f7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200031d9190620006ea565b601e80546001600160a01b039283166001600160a01b031991821681178355601d805483169091179055305f818152600760209081526040808320601c548816845282528083205f1990553380845260088352818420805460ff1990811660019081179092556009855283862080548216831790559754891685528285208054891682179055601580548a16865283862080548a1683179055601980548b16875284872080548b168417905596865283862080549099169091179097556014805487168217905593548654861697169690961790945560168054841683179055601780548416831790556018805490931661dead179092556003548183526006909352838220839055925190917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200045991815260200190565b60405180910390a36200075f565b5f825f036200047857505f620004f4565b5f6200048583856200069a565b905082620004948583620006ca565b14620004f15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f620004f183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200054360201b60201c565b5f8183620005665760405162461bcd60e51b8152600401620004e8919062000712565b505f620005748486620006ca565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005d157815f1904821115620005b557620005b56200057d565b80851615620005c357918102915b93841c939080029062000596565b509250929050565b5f82620005e957506001620004f4565b81620005f757505f620004f4565b81600181146200061057600281146200061b576200063b565b6001915050620004f4565b60ff8411156200062f576200062f6200057d565b50506001821b620004f4565b5060208310610133831016604e8410600b841016171562000660575081810a620004f4565b6200066c838362000591565b805f19048211156200068257620006826200057d565b029392505050565b5f620004f160ff841683620005d9565b8082028115828204841417620004f457620004f46200057d565b80820180821115620004f457620004f46200057d565b5f82620006e557634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620006fb575f80fd5b81516001600160a01b0381168114620004f1575f80fd5b5f6020808352835180828501525f5b818110156200073f5785810183015185820160400152820162000721565b505f604082860101526040601f19601f8301168501019250505092915050565b61209f806200076d5f395ff3fe608060405260043610610220575f3560e01c806378109e541161011e578063b2bdfa7b116100a8578063df20fd491161006d578063df20fd4914610643578063e96fada214610662578063f2fde38b14610681578063f4293890146106a0578063f887ea40146106b4575f80fd5b8063b2bdfa7b14610584578063c0cbdea4146105a2578063dc084dd8146105c1578063dd62ed3e146105e0578063ded1e43814610624575f80fd5b80638da5cb5b116100ee5780638da5cb5b146104e957806395d89b4114610505578063a70419d214610532578063a8aa1b3114610546578063a9059cbb14610565575f80fd5b806378109e54146104a05780637d1db4a5146104b557806382528791146104ca578063893d20e8146104e9575f80fd5b8063313ce567116101aa5780636ddd17131161016f5780636ddd17131461040557806370a0823114610425578063715018a614610459578063751039fc1461046d57806377b54bad14610481575f80fd5b8063313ce5671461036157806350ac6c221461037c57806355265669146103b3578063571ac8b0146103c75780635d83e1d5146103e6575f80fd5b806318160ddd116101f057806318160ddd146102da57806323b872dd146102ee578063282c87491461030d578063293230b81461032e57806330c9a6a014610342575f80fd5b80630445b6671461022b57806306fdde031461025357806308fd3d051461028b578063095ea7b3146102bb575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b50610240601f5481565b6040519081526020015b60405180910390f35b34801561025e575f80fd5b50604080518082019091526007815266426162794a657760c81b60208201525b60405161024a9190611c8a565b348015610296575f80fd5b50601e546102ab90600160a01b900460ff1681565b604051901515815260200161024a565b3480156102c6575f80fd5b506102ab6102d5366004611cf0565b6106d3565b3480156102e5575f80fd5b50600354610240565b3480156102f9575f80fd5b506102ab610308366004611d18565b61073f565b348015610318575f80fd5b5061032c610327366004611d51565b6107fd565b005b348015610339575f80fd5b5061032c6108d3565b34801561034d575f80fd5b5061024061035c366004611d90565b61091f565b34801561036c575f80fd5b506040516012815260200161024a565b348015610387575f80fd5b5060195461039b906001600160a01b031681565b6040516001600160a01b03909116815260200161024a565b3480156103be575f80fd5b50610240610964565b3480156103d2575f80fd5b506102ab6103e1366004611da7565b6109d4565b3480156103f1575f80fd5b5061032c610400366004611d90565b6109e0565b348015610410575f80fd5b50601e546102ab90600160a81b900460ff1681565b348015610430575f80fd5b5061024061043f366004611da7565b6001600160a01b03165f9081526006602052604090205490565b348015610464575f80fd5b5061032c610a6c565b348015610478575f80fd5b5061032c610add565b34801561048c575f80fd5b506102ab61049b366004611cf0565b610b13565b3480156104ab575f80fd5b5061024060055481565b3480156104c0575f80fd5b5061024060045481565b3480156104d5575f80fd5b5061032c6104e4366004611dc0565b610c3a565b3480156104f4575f80fd5b505f546001600160a01b031661039b565b348015610510575f80fd5b5060408051808201909152600581526442424a455760d81b602082015261027e565b34801561053d575f80fd5b5061032c610d11565b348015610551575f80fd5b50601e5461039b906001600160a01b031681565b348015610570575f80fd5b506102ab61057f366004611cf0565b610d4b565b34801561058f575f80fd5b505f5461039b906001600160a01b031681565b3480156105ad575f80fd5b5061032c6105bc366004611e21565b610d57565b3480156105cc575f80fd5b5061032c6105db366004611e4a565b610d91565b3480156105eb575f80fd5b506102406105fa366004611e4a565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b34801561062f575f80fd5b506102ab61063e366004611e7b565b610e29565b34801561064e575f80fd5b5061032c61065d366004611ea8565b610e3c565b34801561066d575f80fd5b5060155461039b906001600160a01b031681565b34801561068c575f80fd5b5061032c61069b366004611da7565b610ec7565b3480156106ab575f80fd5b5061032c610fae565b3480156106bf575f80fd5b50601c5461039b906001600160a01b031681565b335f8181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061072d9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383165f9081526007602090815260408083203384529091528120545f19146107e8576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526007825283812033825290915291909120546107c4918490610fe7565b6001600160a01b0385165f9081526007602090815260408083203384529091529020555b6107f384848461101f565b90505b9392505050565b5f546001600160a01b0316331461082f5760405162461bcd60e51b815260040161082690611ec4565b60405180910390fd5b600a869055600d859055600b849055600c839055600e8290556108608261085a858188818c8c611376565b90611376565b600f556010819055610873600282611f0d565b600f54106108c35760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e203530250000006044820152606401610826565b6108cb6113d4565b505050505050565b5f546001600160a01b031633146108fc5760405162461bcd60e51b815260040161082690611ec4565b601e805460ff60a01b1916600160a01b17905560c860128190556011555f601355565b5f61073961092b610964565b601e546001600160a01b03165f9081526006602052604090205461095e90610957906002905b9061146f565b859061146f565b906114ed565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead5f9081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225460035491926109cf9290916109c9919061152e565b9061152e565b905090565b5f610739825f196106d3565b5f546001600160a01b03163314610a095760405162461bcd60e51b815260040161082690611ec4565b6001811015610a16575f80fd5b6103e881600354610a279190611f2c565b610a319190611f0d565b60058190556040519081527f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be519060200160405180910390a150565b5f546001600160a01b03163314610a955760405162461bcd60e51b815260040161082690611ec4565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610b065760405162461bcd60e51b815260040161082690611ec4565b6003546004819055600555565b5f815f03610b84576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610b5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b819190611f43565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160145460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610c16573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f69190611f5a565b5f546001600160a01b03163314610c635760405162461bcd60e51b815260040161082690611ec4565b601480546001600160a01b038781166001600160a01b031992831617909255601580548784169083168117909155601680548785169084168117909155601880548786169085168117909155601780549587169590941685179093556040805192835260208301949094529281019190915260608101919091527f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b159060800160405180910390a15050505050565b5f546001600160a01b03163314610d3a5760405162461bcd60e51b815260040161082690611ec4565b60c86012556103e86011555f601355565b5f6107f633848461101f565b5f546001600160a01b03163314610d805760405162461bcd60e51b815260040161082690611ec4565b601191909155601291909155601355565b5f546001600160a01b03163314610dba5760405162461bcd60e51b815260040161082690611ec4565b601980546001600160a01b038481166001600160a01b03199283168117909355601580549185169190921681179091556040805192835260208301919091527f60e9d62fc17e911c17a5b5e31abe9a940e86a890600b0631df4e4da5add7e4d291015b60405180910390a15050565b5f82610e348361091f565b119392505050565b5f546001600160a01b03163314610e655760405162461bcd60e51b815260040161082690611ec4565b601e805460ff60a81b1916600160a81b84151581029190911791829055601f8390556040805184815260ff9290930491909116151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee609101610e1d565b5f546001600160a01b03163314610ef05760405162461bcd60e51b815260040161082690611ec4565b6001600160a01b038116610f555760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610826565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6014546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610fe4573d5f803e3d5ffd5b50565b5f818484111561100a5760405162461bcd60e51b81526004016108269190611c8a565b505f6110168486611f75565b95945050505050565b6020545f9060ff161561103e5761103784848461156f565b90506107f6565b6001600160a01b0384165f9081526001602052604090205460ff1615801561107e57506001600160a01b0383165f9081526001602052604090205460ff16155b156110d357601e54600160a01b900460ff166110d35760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610826565b6001600160a01b0384165f9081526001602052604090205460ff1615801561110457506001600160a01b0383163014155b801561111b57506001600160a01b03831661dead14155b80156111355750601e546001600160a01b03848116911614155b801561114f57506018546001600160a01b03848116911614155b801561116957506015546001600160a01b03848116911614155b801561118d57506001600160a01b0383165f9081526009602052604090205460ff16155b1561122d576001600160a01b0383165f908152600660205260409020546005546111b78483611f88565b111561122b5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610826565b505b611237848361163f565b61123f6116ab565b1561124c5761124c6116ff565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526006909152919091205461129d918490610fe7565b6001600160a01b0385165f90815260066020908152604080832093909355600890529081205460ff16806112e857506001600160a01b0384165f9081526008602052604090205460ff165b6112fc576112f7858486611ac7565b6112fe565b825b6001600160a01b0385165f908152600660205260409020549091506113239082611376565b6001600160a01b038086165f8181526006602052604090819020939093559151908716905f8051602061204a833981519152906113639085815260200190565b60405180910390a3506001949350505050565b5f806113828385611f88565b9050838110156107f65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610826565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b932800611411606461095e601254600f5461146f90919063ffffffff16565b61142d606461095e601154600f5461146f90919063ffffffff16565b611449606461095e601354600f5461146f90919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b5f825f0361147e57505f610739565b5f6114898385611f2c565b9050826114968583611f0d565b146107f65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610826565b5f6107f683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c5e565b5f6107f683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fe7565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526006909152918220546115bf918490610fe7565b6001600160a01b038086165f9081526006602052604080822093909355908516815220546115ed9083611376565b6001600160a01b038085165f8181526006602052604090819020939093559151908616905f8051602061204a8339815191529061162d9086815260200190565b60405180910390a35060019392505050565b6004548111158061166757506001600160a01b0382165f9081526009602052604090205460ff165b6116a75760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610826565b5050565b601e545f906001600160a01b031633148015906116cb575060205460ff16155b80156116e05750601e54600160a81b900460ff165b80156109cf575050601f54305f90815260066020526040902054101590565b6020805460ff19166001179055601a54601b545f9161171d91610e29565b61172957600a5461172b565b5f5b90505f61174e600261095e600f5461095e86601f5461146f90919063ffffffff16565b90505f61176682601f5461152e90919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061179e5761179e611f9b565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106117cf576117cf611f9b565b6001600160a01b039283166020918202929092010152601c5460405163791ac94760e01b81524792919091169063791ac947906118189086905f90879030904290600401611faf565b5f604051808303815f87803b15801561182f575f80fd5b505af1158015611841573d5f803e3d5ffd5b505050505f611859824761152e90919063ffffffff16565b90505f61187361186a8860026114ed565b600f549061152e565b90505f611887600261095e8481878d61146f565b90505f6118a38361095e600b548761146f90919063ffffffff16565b90505f6118bf8461095e600d548861146f90919063ffffffff16565b90505f6118db8561095e600c548961146f90919063ffffffff16565b6015546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f811461192a576040519150601f19603f3d011682016040523d82523d5f602084013e61192f565b606091505b50506016546040519192506001600160a01b03169083905f81818185875af1925050503d805f811461197c576040519150601f19603f3d011682016040523d82523d5f602084013e611981565b606091505b50506017546040519192506001600160a01b03169084905f81818185875af1925050503d805f81146119ce576040519150601f19603f3d011682016040523d82523d5f602084013e6119d3565b606091505b505f9250508b159050611aaf57601c5460145460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611a4d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611a72919061201e565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506020805460ff1916905550505050505050505050565b601354601e545f91906001600160a01b0390811690841603611aec5750601154611b07565b601e546001600160a01b0390811690861603611b0757506012545b5f611b336010546064611b1a9190611f2c565b61095e84610951600f548a61146f90919063ffffffff16565b90505f611b51600f5461095e600e548561146f90919063ffffffff16565b90505f611b5e838361152e565b6019546001600160a01b03165f90815260066020526040902054909150611b859082611376565b6019546001600160a01b039081165f908152600660205260408082209390935560185490911681522054611bb99083611376565b6018546001600160a01b039081165f9081526006602090815260409182902093909355601954905184815290821692918b16915f8051602061204a833981519152910160405180910390a38115611c4857600354611c17908361152e565b6003556040518281525f906001600160a01b038a16905f8051602061204a8339815191529060200160405180910390a35b611c52878461152e565b98975050505050505050565b5f8183611c7e5760405162461bcd60e51b81526004016108269190611c8a565b505f6110168486611f0d565b5f6020808352835180828501525f5b81811015611cb557858101830151858201604001528201611c99565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611ceb575f80fd5b919050565b5f8060408385031215611d01575f80fd5b611d0a83611cd5565b946020939093013593505050565b5f805f60608486031215611d2a575f80fd5b611d3384611cd5565b9250611d4160208501611cd5565b9150604084013590509250925092565b5f805f805f8060c08789031215611d66575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f60208284031215611da0575f80fd5b5035919050565b5f60208284031215611db7575f80fd5b6107f682611cd5565b5f805f805f60a08688031215611dd4575f80fd5b611ddd86611cd5565b9450611deb60208701611cd5565b9350611df960408701611cd5565b9250611e0760608701611cd5565b9150611e1560808701611cd5565b90509295509295909350565b5f805f60608486031215611e33575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611e5b575f80fd5b611e6483611cd5565b9150611e7260208401611cd5565b90509250929050565b5f8060408385031215611e8c575f80fd5b50508035926020909101359150565b8015158114610fe4575f80fd5b5f8060408385031215611eb9575f80fd5b8235611d0a81611e9b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f82611f2757634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761073957610739611ef9565b5f60208284031215611f53575f80fd5b5051919050565b5f60208284031215611f6a575f80fd5b81516107f681611e9b565b8181038181111561073957610739611ef9565b8082018082111561073957610739611ef9565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611ffd5784516001600160a01b031683529383019391830191600101611fd8565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612030575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d3d6e2685163db21ac4e7e4152168d9041984c7de065556742fb150e4bba61a464736f6c63430008140033