60806040526363f62df0600a556363fa2270600b556363fb73f0600c556000600e556000600f553480156200003357600080fd5b50604051620024d0380380620024d0833981016040819052620000569162000200565b6040518060400160405280600a8152602001694d61676963204375626560b01b8152506040518060400160405280600a8152602001694d61676963204375626560b01b815250620000b6620000b06200010660201b60201c565b6200010a565b8151620000cb9060039060208501906200015a565b508051620000e19060049060208401906200015a565b50600060015550508051620000fe90600d9060208401906200015a565b505062000329565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200016890620002d6565b90600052602060002090601f0160209004810192826200018c5760008555620001d7565b82601f10620001a757805160ff1916838001178555620001d7565b82800160010185558215620001d7579182015b82811115620001d7578251825591602001919060010190620001ba565b50620001e5929150620001e9565b5090565b5b80821115620001e55760008155600101620001ea565b6000602080838503121562000213578182fd5b82516001600160401b03808211156200022a578384fd5b818501915085601f8301126200023e578384fd5b81518181111562000253576200025362000313565b604051601f8201601f19908116603f011681019083821181831017156200027e576200027e62000313565b81604052828152888684870101111562000296578687fd5b8693505b82841015620002b957848401860151818501870152928501926200029a565b82841115620002ca57868684830101525b98975050505050505050565b600181811c90821680620002eb57607f821691505b602082108114156200030d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61219780620003396000396000f3fe6080604052600436106101e55760003560e01c806381511e2311610103578063d986dda21161009b578063d986dda2146104ee578063dee816e614610504578063e0df5b6f1461051a578063e985e9c51461053a578063ed6661c214610583578063f0ec6b0814610599578063f2fde38b146105b9578063f43a22dc14610411578063f60f08f8146105d9578063f959680b146105f957600080fd5b806381511e23146104115780638da5cb5b1461042657806395d89b411461043b57806398d5fdca14610450578063a22cb46514610465578063b5f3b15014610485578063b88d4fde1461049b578063b9e8aa6f146104ae578063c87b56dd146104ce57600080fd5b80633ccfd60b116101815780633ccfd60b146102fb57806342842e0e146103105780634452718d146103235780634a03f8bb146103435780636222cf74146103595780636352211e1461038657806370a08231146103a6578063715018a6146103c6578063765f2079146103db57806376ad03bc146103fb57600080fd5b806301ffc9a7146101ea57806306fdde031461021f578063081812fc14610241578063095ea7b31461026e5780630f2cdd6c1461028357806318160ddd146102a657806323b872dd146102bf5780632be09561146102d25780632db11544146102e8575b600080fd5b3480156101f657600080fd5b5061020a610205366004611df4565b61060e565b60405190151581526020015b60405180910390f35b34801561022b57600080fd5b50610234610660565b6040516102169190611f35565b34801561024d57600080fd5b5061026161025c366004611e71565b6106f2565b6040516102169190611ee4565b61028161027c366004611d4a565b610736565b005b34801561028f57600080fd5b50610298600c81565b604051908152602001610216565b3480156102b257600080fd5b5060025460015403610298565b6102816102cd366004611c5d565b6107d6565b3480156102de57600080fd5b50610298600a5481565b6102816102f6366004611e71565b61095f565b34801561030757600080fd5b50610281610b4e565b61028161031e366004611c5d565b610c24565b34801561032f57600080fd5b50600954610261906001600160a01b031681565b34801561034f57600080fd5b50610298600c5481565b34801561036557600080fd5b50610298610374366004611c11565b60106020526000908152604090205481565b34801561039257600080fd5b506102616103a1366004611e71565b610c44565b3480156103b257600080fd5b506102986103c1366004611c11565b610c4f565b3480156103d257600080fd5b50610281610c9d565b3480156103e757600080fd5b506102986103f6366004611e71565b610cd8565b34801561040757600080fd5b50610298600f5481565b34801561041d57600080fd5b50610298600481565b34801561043257600080fd5b50610261610e42565b34801561044757600080fd5b50610234610e51565b34801561045c57600080fd5b50610298610e60565b34801561047157600080fd5b50610281610480366004611d10565b610ec5565b34801561049157600080fd5b50610298600e5481565b6102816104a9366004611c98565b610f31565b3480156104ba57600080fd5b506102816104c9366004611d73565b610f7b565b3480156104da57600080fd5b506102346104e9366004611e71565b61124d565b3480156104fa57600080fd5b50610298600b5481565b34801561051057600080fd5b506102986122b881565b34801561052657600080fd5b50610281610535366004611e2c565b611317565b34801561054657600080fd5b5061020a610555366004611c2b565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b34801561058f57600080fd5b506102986108ae81565b3480156105a557600080fd5b506102816105b4366004611c11565b61135d565b3480156105c557600080fd5b506102816105d4366004611c11565b6113ae565b3480156105e557600080fd5b506102986105f4366004611d73565b61144b565b34801561060557600080fd5b506102986114e4565b60006301ffc9a760e01b6001600160e01b03198316148061063f57506380ac58cd60e01b6001600160e01b03198316145b8061065a5750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606003805461066f9061207f565b80601f016020809104026020016040519081016040528092919081815260200182805461069b9061207f565b80156106e85780601f106106bd576101008083540402835291602001916106e8565b820191906000526020600020905b8154815290600101906020018083116106cb57829003601f168201915b5050505050905090565b60006106fd826114f6565b61071a576040516333d1c03960e21b815260040160405180910390fd5b506000908152600760205260409020546001600160a01b031690565b600061074182610c44565b9050336001600160a01b0382161461077a5761075d8133610555565b61077a576040516367d9dca160e11b815260040160405180910390fd5b60008281526007602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006107e18261151e565b9050836001600160a01b0316816001600160a01b0316146108145760405162a1148160e81b815260040160405180910390fd5b600082815260076020526040902080546108408187335b6001600160a01b039081169116811491141790565b61086b5761084e8633610555565b61086b57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661089257604051633a954ecd60e21b815260040160405180910390fd5b801561089d57600082555b6001600160a01b038681166000908152600660205260408082208054600019019055918716815220805460010190556108da85600160e11b61157f565b600085815260056020526040902055600160e11b831661092857600184016000818152600560205260409020546109265760015481146109265760008181526005602052604090208490555b505b83856001600160a01b0316876001600160a01b031660008051602061214283398151915260405160405180910390a4505050505050565b600a5442101561098a5760405162461bcd60e51b815260040161098190611f48565b60405180910390fd5b600b544211156109c85760405162461bcd60e51b8152602060048201526009602482015268456e64206d696e742160b81b6044820152606401610981565b6122b8816109d96002546001540390565b6109e39190611ff1565b1115610a1b5760405162461bcd60e51b81526020600482015260076024820152664e6f206d6f726560c81b6044820152606401610981565b6004811115610a3c5760405162461bcd60e51b815260040161098190611fa3565b600c81610a4833610c4f565b610a529190611ff1565b1115610a915760405162461bcd60e51b815260206004820152600e60248201526d13585e081c195c881dd85b1b195d60921b6044820152606401610981565b6000610a9c82610cd8565b905080341015610aee5760405162461bcd60e51b815260206004820152601d60248201527f506c656173652073656e642074686520657861637420616d6f756e742e0000006044820152606401610981565b610af83383611594565b60c8610b05600283612009565b610b0f9190612009565b600f54610b1c9190611ff1565b600f5533600090815260106020526040902054610b3a908390611ff1565b336000908152601060205260409020555050565b33610b57610e42565b6001600160a01b031614610b7d5760405162461bcd60e51b815260040161098190611f6e565b600c544211610bb95760405162461bcd60e51b81526020600482015260086024820152674d657267696e672160c01b6044820152606401610981565b604051600090339047908381818185875af1925050503d8060008114610bfb576040519150601f19603f3d011682016040523d82523d6000602084013e610c00565b606091505b5050905080610c215760405162461bcd60e51b815260040161098190611fc7565b50565b610c3f83838360405180602001604052806000815250610f31565b505050565b600061065a8261151e565b60006001600160a01b038216610c78576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600660205260409020546001600160401b031690565b33610ca6610e42565b6001600160a01b031614610ccc5760405162461bcd60e51b815260040161098190611f6e565b610cd660006115ae565b565b600080610ce3610e60565b90506004831115610d065760405162461bcd60e51b815260040161098190611fa3565b600081610d99576000610d1c6002546001540390565b6108ae610d2c6002546001540390565b610d369190612009565b610d41906001611ff1565b610d4d906108ae61201d565b610d57919061203c565b3360009081526010602052604090205490915080821015610d755750805b610d868466071afd498d0000611ff1565b610d90908261201d565b92505050610e3b565b6000610da86002546001540390565b6108ae610db86002546001540390565b610dc29190612009565b610dcd906001611ff1565b610dd9906108ae61201d565b610de3919061203c565b9050848110610dfd57610df6838661201d565b9150610e39565b610e0e8366071afd498d0000611ff1565b610e18828761203c565b610e22919061201d565b610e2c848361201d565b610e369190611ff1565b91505b505b9392505050565b6000546001600160a01b031690565b60606004805461066f9061207f565b600080610e706002546001540390565b905060006108ae821015610e865750600061065a565b61115c821015610e9e575066071afd498d000061065a565b611a0a821015610eb65750660e35fa931a000061065a565b50661550f7dca7000092915050565b3360008181526008602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610f3c8484846107d6565b6001600160a01b0383163b15610f7557610f58848484846115fe565b610f75576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b600b54421015610f9d5760405162461bcd60e51b815260040161098190611f48565b600c54421115610fdc5760405162461bcd60e51b815260206004820152600a602482015269456e64206d657267652160b01b6044820152606401610981565b6060810151610fed906004906120d5565b610ff8906001611ff1565b6040820151611009906004906120d5565b611014906001611ff1565b6020830151611025906004906120d5565b611030906001611ff1565b835161103e906004906120d5565b611049906001611ff1565b611053919061201d565b61105d919061201d565b611067919061201d565b6018146110a65760405162461bcd60e51b815260206004820152600d60248201526c5069656365207265706561742160981b6044820152606401610981565b60006110b18261144b565b905060005b60048110156111825760006110ee8483600481106110e457634e487b7160e01b600052603260045260246000fd5b6020020151610c44565b9050336001600160a01b038216146111425760405162461bcd60e51b815260206004820152601760248201527622b93937b91d102737ba1022a9219b99189037bbb732b960491b6044820152606401610981565b61116f84836004811061116557634e487b7160e01b600052603260045260246000fd5b60200201516116f6565b508061117a816120ba565b9150506110b6565b50600954604051637b199e7360e01b81526001600160a01b0390911690637b199e73906111b3903390600401611ee4565b600060405180830381600087803b1580156111cd57600080fd5b505af11580156111e1573d6000803e3d6000fd5b50506040516000925033915083908381818185875af1925050503d8060008114611227576040519150601f19603f3d011682016040523d82523d6000602084013e61122c565b606091505b5050905080610c3f5760405162461bcd60e51b815260040161098190611fc7565b6060611258826114f6565b6112bc5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610981565b60006112c6611701565b905060008151116112e65760405180602001604052806000815250610e3b565b806112f084611710565b604051602001611301929190611eb5565b6040516020818303038152906040529392505050565b33611320610e42565b6001600160a01b0316146113465760405162461bcd60e51b815260040161098190611f6e565b805161135990600d906020840190611ae7565b5050565b33611366610e42565b6001600160a01b03161461138c5760405162461bcd60e51b815260040161098190611f6e565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b336113b7610e42565b6001600160a01b0316146113dd5760405162461bcd60e51b815260040161098190611f6e565b6001600160a01b0381166114425760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610981565b610c21816115ae565b600060c8600e54111561146057506000919050565b600f5460005b60048110156114dd57606f84826004811061149157634e487b7160e01b600052603260045260246000fd5b60200201516114a1906001611ff1565b6114ab91906120d5565b6114cb576002600f546114be9190612009565b6114c89083611ff1565b91505b806114d5816120ba565b915050611466565b5092915050565b60006114f1600247612009565b905090565b60006001548210801561065a575050600090815260056020526040902054600160e01b161590565b60008160015481101561156657600081815260056020526040902054600160e01b8116611564575b80610e3b575060001901600081815260056020526040902054611546565b505b604051636f96cda160e11b815260040160405180910390fd5b4260a01b176001600160a01b03919091161790565b611359828260405180602001604052806000815250611752565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611633903390899088908890600401611ef8565b602060405180830381600087803b15801561164d57600080fd5b505af192505050801561167d575060408051601f3d908101601f1916820190925261167a91810190611e10565b60015b6116d8573d8080156116ab576040519150601f19603f3d011682016040523d82523d6000602084013e6116b0565b606091505b5080516116d0576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b610c218160006117bf565b6060600d805461066f9061207f565b6060600061171f6004846120d5565b61172a906001611ff1565b9050611737606f826120d5565b6117495761174681600a61201d565b90505b610e3b816118eb565b61175c8383611a04565b6001600160a01b0383163b15610c3f576001548281035b61178660008683806001019450866115fe565b6117a3576040516368d2bf6b60e11b815260040160405180910390fd5b8181106117735781600154146117b857600080fd5b5050505050565b60006117ca8361151e565b9050806000806117e886600090815260076020526040902080549091565b915091508415611828576117fd81843361082b565b6118285761180b8333610555565b61182857604051632ce44b5f60e11b815260040160405180910390fd5b801561183357600082555b6001600160a01b038316600090815260066020526040902080546001600160801b0301905561186683600360e01b61157f565b600087815260056020526040902055600160e11b84166118b457600186016000818152600560205260409020546118b25760015481146118b25760008181526005602052604090208590555b505b60405186906000906001600160a01b03861690600080516020612142833981519152908390a4505060028054600101905550505050565b60608161190f5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156119395780611923816120ba565b91506119329050600a83612009565b9150611913565b6000816001600160401b0381111561196157634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561198b576020820181803683370190505b5090505b84156116ee576119a060018361203c565b91506119ad600a866120d5565b6119b8906030611ff1565b60f81b8183815181106119db57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506119fd600a86612009565b945061198f565b60015481611a255760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b03831660009081526006602052604090208054680100000000000000018402019055611a5e836001841460e11b61157f565b6000828152600560205260408120919091556001600160a01b0384169083830190839083906000805160206121428339815191528180a4600183015b818114611ac05780836000600080516020612142833981519152600080a4600101611a9a565b5081611ade57604051622e076360e81b815260040160405180910390fd5b60015550505050565b828054611af39061207f565b90600052602060002090601f016020900481019282611b155760008555611b5b565b82601f10611b2e57805160ff1916838001178555611b5b565b82800160010185558215611b5b579182015b82811115611b5b578251825591602001919060010190611b40565b50611b67929150611b6b565b5090565b5b80821115611b675760008155600101611b6c565b60006001600160401b0380841115611b9a57611b9a612115565b604051601f8501601f19908116603f01168101908282118183101715611bc257611bc2612115565b81604052809350858152868686011115611bdb57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114611c0c57600080fd5b919050565b600060208284031215611c22578081fd5b610e3b82611bf5565b60008060408385031215611c3d578081fd5b611c4683611bf5565b9150611c5460208401611bf5565b90509250929050565b600080600060608486031215611c71578081fd5b611c7a84611bf5565b9250611c8860208501611bf5565b9150604084013590509250925092565b60008060008060808587031215611cad578081fd5b611cb685611bf5565b9350611cc460208601611bf5565b92506040850135915060608501356001600160401b03811115611ce5578182fd5b8501601f81018713611cf5578182fd5b611d0487823560208401611b80565b91505092959194509250565b60008060408385031215611d22578182fd5b611d2b83611bf5565b915060208301358015158114611d3f578182fd5b809150509250929050565b60008060408385031215611d5c578182fd5b611d6583611bf5565b946020939093013593505050565b600060808284031215611d84578081fd5b82601f830112611d92578081fd5b604051608081018181106001600160401b0382111715611db457611db4612115565b604052808360808101861015611dc8578384fd5b835b6004811015611de9578135835260209283019290910190600101611dca565b509195945050505050565b600060208284031215611e05578081fd5b8135610e3b8161212b565b600060208284031215611e21578081fd5b8151610e3b8161212b565b600060208284031215611e3d578081fd5b81356001600160401b03811115611e52578182fd5b8201601f81018413611e62578182fd5b6116ee84823560208401611b80565b600060208284031215611e82578081fd5b5035919050565b60008151808452611ea1816020860160208601612053565b601f01601f19169290920160200192915050565b60008351611ec7818460208801612053565b835190830190611edb818360208801612053565b01949350505050565b6001600160a01b0391909116815260200190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611f2b90830184611e89565b9695505050505050565b602081526000610e3b6020830184611e89565b6020808252600c908201526b506c6561736520776169742160a01b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600a908201526909ac2f040e0cae440e8f60b31b604082015260600190565b60208082526010908201526f2a3930b739b332b9103330b4b632b21760811b604082015260600190565b60008219821115612004576120046120e9565b500190565b600082612018576120186120ff565b500490565b6000816000190483118215151615612037576120376120e9565b500290565b60008282101561204e5761204e6120e9565b500390565b60005b8381101561206e578181015183820152602001612056565b83811115610f755750506000910152565b600181811c9082168061209357607f821691505b602082108114156120b457634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156120ce576120ce6120e9565b5060010190565b6000826120e4576120e46120ff565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610c2157600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209d497ec0800a552b3c4698f2e4ec4a844aa413fd9e4d5c1ae2ceb19c61d6f86e64736f6c634300080400330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004468747470733a2f2f697066732e696f2f697066732f516d555937634175564c4d5a44315462574d4a5265767365385935617752733339614d35634d3446426e41434e552f00000000000000000000000000000000000000000000000000000000