0x608060405261520860015560036002555f6003555f600455348015610022575f80fd5b505f80546001600160a01b0319163317905566038d7ea4c68000600355611afd8061004c5f395ff3fe60806040526004361061011b575f3560e01c806370a082311161009d578063a9059cbb11610062578063a9059cbb146102f3578063b88d4fde14610312578063c87b56dd14610331578063de44260214610350578063e985e9c514610363575f80fd5b806370a0823114610284578063777adad9146102a35780638da5cb5b146102b857806395d89b4114610153578063a22cb465146102d4575f80fd5b806323b872dd116100e357806323b872dd146101fe57806332cb6b0c1461021d5780633ccfd60b1461023257806342842e0e146102465780636352211e14610265575f80fd5b806301ffc9a71461011f57806306fdde0314610153578063081812fc14610188578063095ea7b3146101bf57806318160ddd146101e0575b5f80fd5b34801561012a575f80fd5b5061013e610139366004610dff565b610382565b60405190151581526020015b60405180910390f35b34801561015e575f80fd5b506040805180820190915260048152631253919560e21b60208201525b60405161014a9190610e48565b348015610193575f80fd5b506101a76101a2366004610e7a565b6103d3565b6040516001600160a01b03909116815260200161014a565b3480156101ca575f80fd5b506101de6101d9366004610eac565b610417565b005b3480156101eb575f80fd5b506004545b60405190815260200161014a565b348015610209575f80fd5b506101de610218366004610ed4565b6104d2565b348015610228575f80fd5b506101f060015481565b34801561023d575f80fd5b506101de6104e2565b348015610251575f80fd5b506101de610260366004610ed4565b61055c565b348015610270575f80fd5b506101a761027f366004610e7a565b610576565b34801561028f575f80fd5b506101f061029e366004610f0d565b610580565b3480156102ae575f80fd5b506101f060025481565b3480156102c3575f80fd5b505f546001600160a01b03166101a7565b3480156102df575f80fd5b506101de6102ee366004610f26565b6105c6565b3480156102fe575f80fd5b506101de61030d366004610eac565b61065a565b34801561031d575f80fd5b506101de61032c366004610f73565b610697565b34801561033c575f80fd5b5061017b61034b366004610e7a565b6106a8565b6101de61035e366004610e7a565b610775565b34801561036e575f80fd5b5061013e61037d366004611048565b610899565b5f6301ffc9a760e01b6001600160e01b0319831614806103b257506380ac58cd60e01b6001600160e01b03198316145b806103cd5750635b5e139f60e01b6001600160e01b03198316145b92915050565b5f6103df826004541190565b6103fc576040516333d1c03960e21b815260040160405180910390fd5b505f908152600760205260409020546001600160a01b031690565b5f610421826108c6565b9050806001600160a01b0316836001600160a01b031603610440575f80fd5b336001600160a01b038216146104775761045a8133610899565b610477576040516367d9dca160e11b815260040160405180910390fd5b5f8281526007602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104dd83838361092f565b505050565b5f546001600160a01b0316331461052c5760405162461bcd60e51b81526020600482015260096024820152683737ba1027bbb732b960b91b60448201526064015b60405180910390fd5b6040514790339082156108fc029083905f818181858888f19350505050158015610558573d5f803e3d5ffd5b5050565b6104dd83838360405180602001604052805f815250610697565b5f6103cd826108c6565b5f815f036105a1576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03165f9081526006602052604090205467ffffffffffffffff1690565b336001600160a01b038316036105ef5760405163b06307db60e01b815260040160405180910390fd5b335f8181526008602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6040517319bb33b4838f3368ac49d7af22089104f9147b89904780156108fc02915f818181858888f193505050501580156104dd573d5f803e3d5ffd5b6106a284848461092f565b50505050565b60605f60405180610540016040528061050f815260200161127961050f913990505f60405180610320016040528061030081526020016117c8610300913990505f826106f386610ac0565b8360405160200161070693929190611079565b60405160208183030381529060405290505f61074861072483610bc5565b60405160200161073491906110bb565b604051602081830303815290604052610bc5565b90508060405160200161075b919061117d565b60408051601f198184030181529190529695505050505050565b6001548161078260045490565b61078c91906111d5565b11156107c55760405162461bcd60e51b815260206004820152600860248201526714dbdb190813dd5d60c21b6044820152606401610523565b5f811180156107d5575060148111155b6108125760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b6044820152606401610523565b6002548111801561082d57505f546001600160a01b03163314155b1561088c576003541580159061085057508060035461084c91906111e8565b3410155b61088c5760405162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b6044820152606401610523565b6108963382610d28565b50565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205460ff1690565b5f81600454811015610916575f8181526005602052604081205490600160e01b82169003610914575b805f0361090d57505f19015f818152600560205260409020546108ef565b9392505050565b505b604051636f96cda160e11b815260040160405180910390fd5b5f610939826108c6565b9050836001600160a01b0316816001600160a01b03161461096c5760405162a1148160e81b815260040160405180910390fd5b5f828152600760205260408120546001600160a01b039081169190861633148061099b575061099b8633610899565b806109ae57506001600160a01b03821633145b9050806109ce57604051632ce44b5f60e11b815260040160405180910390fd5b81156109f0575f84815260076020526040902080546001600160a01b03191690555b6001600160a01b038681165f90815260066020908152604080832080545f1901905592881682528282208054600101905586825260059052908120600160e11b4260a01b8817811790915584169003610a7757600184015f818152600560205260408120549003610a75576004548114610a75575f8181526005602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b6060815f03610ae65750506040805180820190915260018152600360fc1b602082015290565b815f5b8115610b0f5780610af9816111ff565b9150610b089050600a8361122b565b9150610ae9565b5f8167ffffffffffffffff811115610b2957610b29610f5f565b6040519080825280601f01601f191660200182016040528015610b53576020820181803683370190505b5090505b8415610bbd57610b6860018361123e565b9150610b75600a86611251565b610b809060306111d5565b60f81b818381518110610b9557610b95611264565b60200101906001600160f81b03191690815f1a905350610bb6600a8661122b565b9450610b57565b949350505050565b80516060905f819003610be757505060408051602081019091525f8152919050565b5f6003610bf58360026111d5565b610bff919061122b565b610c0a9060046111e8565b90505f610c188260206111d5565b67ffffffffffffffff811115610c3057610c30610f5f565b6040519080825280601f01601f191660200182016040528015610c5a576020820181803683370190505b5090505f60405180606001604052806040815260200161178860409139905060018101602083015f5b86811015610ce4576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b835260049092019101610c83565b506003860660018114610cfe5760028114610d0f57610d1a565b613d3d60f01b600119830152610d1a565b603d60f81b5f198301525b505050918152949350505050565b600454825f03610d4a57604051622e076360e81b815260040160405180910390fd5b815f03610d6a5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526006602090815260408083208054680100000000000000018702019055838352600590915290204260a01b84176001841460e11b179055808083015b6040516001830192906001600160a01b038716905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808210610db45750600455505050565b5f60208284031215610e0f575f80fd5b81356001600160e01b03198116811461090d575f80fd5b5f5b83811015610e40578181015183820152602001610e28565b50505f910152565b602081525f8251806020840152610e66816040850160208701610e26565b601f01601f19169190910160400192915050565b5f60208284031215610e8a575f80fd5b5035919050565b80356001600160a01b0381168114610ea7575f80fd5b919050565b5f8060408385031215610ebd575f80fd5b610ec683610e91565b946020939093013593505050565b5f805f60608486031215610ee6575f80fd5b610eef84610e91565b9250610efd60208501610e91565b9150604084013590509250925092565b5f60208284031215610f1d575f80fd5b61090d82610e91565b5f8060408385031215610f37575f80fd5b610f4083610e91565b915060208301358015158114610f54575f80fd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215610f86575f80fd5b610f8f85610e91565b9350610f9d60208601610e91565b925060408501359150606085013567ffffffffffffffff80821115610fc0575f80fd5b818701915087601f830112610fd3575f80fd5b813581811115610fe557610fe5610f5f565b604051601f8201601f19908116603f0116810190838211818310171561100d5761100d610f5f565b816040528281528a6020848701011115611025575f80fd5b826020860160208301375f60208483010152809550505050505092959194509250565b5f8060408385031215611059575f80fd5b61106283610e91565b915061107060208401610e91565b90509250929050565b5f845161108a818460208901610e26565b84519083019061109e818360208901610e26565b84519101906110b1818360208801610e26565b0195945050505050565b7f7b226465736372697074696f6e223a20224120736f6369616c2065787065726981527f6d656e7420746f20707261637469636520696e736372697074696f6e2026204e60208201527f465420696e2074686520657468657265756d2e222c2022696d616765223a202260408201527f646174613a696d6167652f7376672b786d6c3b6261736536342c00000000000060608201525f825161116481607a850160208701610e26565b61227d60f01b607a939091019283015250607c01919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f82516111b481601d850160208701610e26565b91909101601d0192915050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156103cd576103cd6111c1565b80820281158282048414176103cd576103cd6111c1565b5f60018201611210576112106111c1565b5060010190565b634e487b7160e01b5f52601260045260245ffd5b5f8261123957611239611217565b500490565b818103818111156103cd576103cd6111c1565b5f8261125f5761125f611217565b500690565b634e487b7160e01b5f52603260045260245ffdfe3c7376672077696474683d2234303022206865696768743d223430302220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667223e3c7374796c653e2e62677b66696c6c3a233264326432643b7d2e746578747b66696c6c3a236433643063383b666f6e743a3330707820636f75726965723b7d2e74776f7b66696c6c3a236632373737613b7d2e74687265657b66696c6c3a233939636339393b7d2e666f75727b66696c6c3a236666636336363b7d2e666976657b66696c6c3a233636393963633b7d3c2f7374796c653e3c706174682069643d2270617468223e3c616e696d617465206174747269627574654e616d653d2264222066726f6d3d226d302c34302068302220746f3d226d302c34302068383030222066696c6c3d22667265657a6522206475723d22337322202f3e3c2f706174683e3c706174682069643d227061746830223e3c616e696d617465206174747269627574654e616d653d2264222066726f6d3d226d302c38302068302220746f3d226d302c38302068383030222066696c6c3d22667265657a6522206475723d2233732220626567696e3d223273222f3e3c2f706174683e3c706174682069643d227061746831223e3c616e696d617465206174747269627574654e616d653d2264222066726f6d3d226d302c3132302068302220746f3d226d302c3132302068383030222066696c6c3d22667265657a6522206475723d2233732220626567696e3d223273222f3e3c2f706174683e3c706174682069643d227061746832223e3c616e696d617465206174747269627574654e616d653d2264222066726f6d3d226d302c3136302068302220746f3d226d302c3136302068383030222066696c6c3d22667265657a6522206475723d2233732220626567696e3d223273222f3e3c2f706174683e3c706174682069643d227061746833223e3c616e696d617465206174747269627574654e616d653d2264222066726f6d3d226d302c3230302068302220746f3d226d302c3230302068383030222066696c6c3d22667265657a6522206475723d2233732220626567696e3d223273222f3e3c2f706174683e3c706174682069643d227061746834223e3c616e696d617465206174747269627574654e616d653d2264222066726f6d3d226d302c3234302068302220746f3d226d302c3234302068383030222066696c6c3d22667265657a6522206475723d2233732220626567696e3d223273222f3e3c2f706174683e3c706174682069643d227061746835223e3c616e696d617465206174747269627574654e616d653d2264222066726f6d3d226d302c3238302068302220746f3d226d302c3238302068383030222066696c6c3d22667265657a6522206475723d2233732220626567696e3d223273222f3e3c2f706174683e3c6720636c6173733d22626f78223e3c726563742077696474683d223130302522206865696768743d22313030252220636c6173733d226267222f3e3c2f673e3c7465787420783d2232302220793d2234302220636c6173733d2274657874223e3c747370616e20636c6173733d227468726565223e207e203c2f747370616e3e3c747370616e20636c6173733d2266697665223e24203c2f747370616e3e3c2f746578743e3c7465787420783d2239302220793d2234302220636c6173733d2274657874223e3c746578745061746820687265663d222370617468223e3c747370616e3e696e73637269626520233c2f747370616e3e3c747370616e3e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f3c2f747370616e3e3c2f74657874506174683e3c2f746578743e3c7465787420783d2232302220793d2238302220636c6173733d2274657874223e3c746578745061746820687265663d22237061746830223e3c747370616e20636c6173733d2266697665223e7b3c2f747370616e3e3c2f74657874506174683e3c2f746578743e3c7465787420783d2236302220793d223132302220636c6173733d2274657874223e3c746578745061746820687265663d22237061746831223e3c747370616e20636c6173733d2274776f223e2270223a203c2f747370616e3e3c747370616e3e226572632d373231223c2f747370616e3e3c2f74657874506174683e3c2f746578743e3c7465787420783d2236302220793d223136302220636c6173733d2274657874223e3c746578745061746820687265663d22237061746832223e3c747370616e20636c6173733d227468726565223e226f70223a203c2f747370616e3e3c747370616e3e226d696e74223c2f747370616e3e3c2f74657874506174683e3c2f746578743e3c7465787420783d2236302220793d223230302220636c6173733d2274657874223e3c746578745061746820687265663d22237061746833223e3c747370616e20636c6173733d2266697665223e227469636b223a203c2f747370616e3e3c747370616e3e22494e4654223c2f747370616e3e3c2f74657874506174683e3c2f746578743e3c7465787420783d2236302220793d223234302220636c6173733d2274657874223e3c746578745061746820687265663d22237061746834223e3c747370616e20636c6173733d22666f7572223e22616d74223a203c2f747370616e3e3c747370616e3e313030303c2f747370616e3e3c2f74657874506174683e3c2f746578743e3c7465787420783d2232302220793d223238302220636c6173733d2274657874223e3c746578745061746820687265663d22237061746835223e3c747370616e20636c6173733d2266697665223e7d3c2f747370616e3e3c2f74657874506174683e3c2f746578743e3c2f7376673ea26469706673582212203de9da981fa5f19dfdadaf4e0f209d0c6cc0b24f10c21bb580b27ed7d1fff88e64736f6c63430008160033