60806040526018805464ffffffffff191690553480156200001f57600080fd5b506040518060400160405280601781526020017f43697479204f6620426c6f636b2043686172616374657200000000000000000081525060405180604001604052806004815260200163434f424360e01b81525060405180606001604052806039815260200162003976603991396040518060600160405280603981526020016200397660399139835184908490620000c090600290602085019062000223565b508051620000d690600390602084019062000223565b5050600160005550620000e9336200010e565b6001600955620000f98262000160565b6200010481620001c8565b5050505062000306565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6008546001600160a01b03163314620001af5760405162461bcd60e51b81526020600482018190526024820152600080516020620039af83398151915260448201526064015b60405180910390fd5b8051620001c490600d90602084019062000223565b5050565b6008546001600160a01b03163314620002135760405162461bcd60e51b81526020600482018190526024820152600080516020620039af8339815191526044820152606401620001a6565b8051620001c490600e9060208401905b8280546200023190620002c9565b90600052602060002090601f016020900481019282620002555760008555620002a0565b82601f106200027057805160ff1916838001178555620002a0565b82800160010185558215620002a0579182015b82811115620002a057825182559160200191906001019062000283565b50620002ae929150620002b2565b5090565b5b80821115620002ae5760008155600101620002b3565b600181811c90821680620002de57607f821691505b602082108114156200030057634e487b7160e01b600052602260045260246000fd5b50919050565b61366080620003166000396000f3fe6080604052600436106102c25760003560e01c8063648e5f0d1161017f57806399a2557a116100e1578063c87b56dd1161008a578063f2c4ce1e11610064578063f2c4ce1e1461082d578063f2fde38b1461084d578063f6cc8e0d1461086d57600080fd5b8063c87b56dd146107b1578063c96f1844146107d1578063e985e9c5146107e457600080fd5b8063b88d4fde116100bb578063b88d4fde14610744578063c0fb0ec114610764578063c23dc68f1461078457600080fd5b806399a2557a146106e5578063a22cb46514610705578063b33268d71461072557600080fd5b80637bc43bdc116101435780638462151c1161011d5780638462151c146106855780638da5cb5b146106b257806395d89b41146106d057600080fd5b80637bc43bdc14610632578063818668d714610645578063820076ac1461066557600080fd5b8063648e5f0d146105a95780636c036b22146105bf57806370a08231146105dd578063715018a6146105fd57806375edcbe01461061257600080fd5b80632a3f300c1161022857806342842e0e116101ec57806355f804b3116101c657806355f804b31461053c5780635bbb21771461055c5780636352211e1461058957600080fd5b806342842e0e146104dc57806342966c68146104fc57806348105cfc1461051c57600080fd5b80632a3f300c146104545780632db1154414610474578063375a069a146104875780633ccfd60b146104a75780633d8a700a146104bc57600080fd5b8063131a32651161028a5780631dd8792b116102645780631dd8792b146103f257806322cafd3e1461041457806323b872dd1461043457600080fd5b8063131a32651461039557806318160ddd146103b55780631d0eaba6146103dc57600080fd5b806301ffc9a7146102c757806306fdde03146102fc578063081812fc1461031e578063095ea7b3146103565780630a65645014610378575b600080fd5b3480156102d357600080fd5b506102e76102e23660046130c1565b61088d565b60405190151581526020015b60405180910390f35b34801561030857600080fd5b506103116108df565b6040516102f391906133da565b34801561032a57600080fd5b5061033e610339366004613144565b610971565b6040516001600160a01b0390911681526020016102f3565b34801561036257600080fd5b50610376610371366004612ef7565b6109b5565b005b34801561038457600080fd5b50601854610100900460ff166102e7565b3480156103a157600080fd5b506103766103b0366004612f54565b610a72565b3480156103c157600080fd5b5060015460005403600019015b6040519081526020016102f3565b3480156103e857600080fd5b506103ce60195481565b3480156103fe57600080fd5b50610407610c42565b6040516102f39190613370565b34801561042057600080fd5b50601854640100000000900460ff166102e7565b34801561044057600080fd5b5061037661044f366004612e15565b610cb3565b34801561046057600080fd5b5061037661046f366004613084565b610cc3565b610376610482366004613144565b610d1e565b34801561049357600080fd5b506103766104a2366004613144565b610fc6565b3480156104b357600080fd5b5061037661113e565b3480156104c857600080fd5b506103766104d73660046131ff565b61123d565b3480156104e857600080fd5b506103766104f7366004612e15565b6112ae565b34801561050857600080fd5b50610376610517366004613144565b6112c9565b34801561052857600080fd5b50610376610537366004613084565b6112d7565b34801561054857600080fd5b506103766105573660046130fb565b61133d565b34801561056857600080fd5b5061057c610577366004612ff8565b61139c565b6040516102f39190613305565b34801561059557600080fd5b5061033e6105a4366004613144565b611463565b3480156105b557600080fd5b506103ce601a5481565b3480156105cb57600080fd5b5060185462010000900460ff166102e7565b3480156105e957600080fd5b506103ce6105f8366004612dc7565b61146e565b34801561060957600080fd5b506103766114b4565b34801561061e57600080fd5b5061037661062d36600461309f565b611508565b610376610640366004613180565b61155b565b34801561065157600080fd5b50610376610660366004613084565b61188e565b34801561067157600080fd5b50610376610680366004613084565b6118f0565b34801561069157600080fd5b506106a56106a0366004612dc7565b611954565b6040516102f391906133a2565b3480156106be57600080fd5b506008546001600160a01b031661033e565b3480156106dc57600080fd5b50610311611a5d565b3480156106f157600080fd5b506106a5610700366004612f21565b611a6c565b34801561071157600080fd5b50610376610720366004612ecd565b611bf8565b34801561073157600080fd5b506018546301000000900460ff166102e7565b34801561075057600080fd5b5061037661075f366004612e51565b611c8e565b34801561077057600080fd5b5061037661077f36600461315d565b611cd8565b34801561079057600080fd5b506107a461079f366004613144565b611e4e565b6040516102f3919061342e565b3480156107bd57600080fd5b506103116107cc366004613144565b611ec3565b6103766107df366004613180565b611f5a565b3480156107f057600080fd5b506102e76107ff366004612de2565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561083957600080fd5b506103766108483660046130fb565b612273565b34801561085957600080fd5b50610376610868366004612dc7565b6122ce565b34801561087957600080fd5b50610376610888366004613084565b612384565b60006301ffc9a760e01b6001600160e01b0319831614806108be57506380ac58cd60e01b6001600160e01b03198316145b806108d95750635b5e139f60e01b6001600160e01b03198316145b92915050565b6060600280546108ee9061351c565b80601f016020809104026020016040519081016040528092919081815260200182805461091a9061351c565b80156109675780601f1061093c57610100808354040283529160200191610967565b820191906000526020600020905b81548152906001019060200180831161094a57829003601f168201915b5050505050905090565b600061097c826123ec565b610999576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006109c082612421565b9050336001600160a01b03821614610a16576001600160a01b038116600090815260076020908152604080832033845290915290205460ff16610a16576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6008546001600160a01b03163314610abf5760405162461bcd60e51b815260206004820181905260248201526000805160206135eb83398151915260448201526064015b60405180910390fd5b60026009541415610b005760405162461bcd60e51b815260206004820152601f60248201526000805160206135cb8339815191526044820152606401610ab6565b6002600955323314610b425760405162461bcd60e51b815260206004820152601e602482015260008051602061360b8339815191526044820152606401610ab6565b601454610b509060016134b9565b610b63610b5c60005490565b835161248a565b1115610ba55760405162461bcd60e51b8152602060048201526011602482015270115e18d95959081b585e08185b5bdd5b9d607a1b6044820152606401610ab6565b601854640100000000900460ff161515600114610bf75760405162461bcd60e51b815260206004820152601060248201526f185a5c991c9bdc08191a5cd8589b195960821b6044820152606401610ab6565b60005b8151811015610c3957610c27828281518110610c1857610c18613588565b60200260200101516001612496565b80610c3181613557565b915050610bfa565b50506001600955565b610c4a612c8b565b6000604051806101400160405280600f548152602001610c6960005490565b8152601054602082015260115460408201526012546060820152601354608082015260175460a082015260145460c082015260155460e08201526016546101009091015292915050565b610cbe8383836124b0565b505050565b6008546001600160a01b03163314610d0b5760405162461bcd60e51b815260206004820181905260248201526000805160206135eb8339815191526044820152606401610ab6565b6018805460ff1916911515919091179055565b60026009541415610d5f5760405162461bcd60e51b815260206004820152601f60248201526000805160206135cb8339815191526044820152606401610ab6565b6002600955323314610da15760405162461bcd60e51b815260206004820152601e602482015260008051602061360b8339815191526044820152606401610ab6565b601854610100900460ff16610df85760405162461bcd60e51b815260206004820152601f60248201527f546865207075626c69632073616c65206973206e6f7420656e61626c656421006044820152606401610ab6565b601754421015610e4a5760405162461bcd60e51b815260206004820152601460248201527f4e6f74207965742073616c6520737461727465640000000000000000000000006044820152606401610ab6565b600081118015610e5c57506011548111155b610e785760405162461bcd60e51b8152600401610ab6906133ed565b610e846016548261267e565b3414610ec35760405162461bcd60e51b815260206004820152600e60248201526d09cdee840cadcdeeaced0408ae8d60931b6044820152606401610ab6565b601454610ed19060016134b9565b610ee3610edd60005490565b8361248a565b1115610f255760405162461bcd60e51b8152602060048201526011602482015270115e18d95959081b585e08185b5bdd5b9d607a1b6044820152606401610ab6565b601354336000908152600c6020526040902054610f42908361248a565b1115610f905760405162461bcd60e51b815260206004820152601c60248201527f457863656564206d617820616d6f756e742070657220706572736f6e000000006044820152606401610ab6565b610f9a3382612496565b336000908152600c602052604081208054839290610fb99084906134b9565b9091555050600160095550565b6008546001600160a01b0316331461100e5760405162461bcd60e51b815260206004820181905260248201526000805160206135eb8339815191526044820152606401610ab6565b6002600954141561104f5760405162461bcd60e51b815260206004820152601f60248201526000805160206135cb8339815191526044820152606401610ab6565b60026009553233146110915760405162461bcd60e51b815260206004820152601e602482015260008051602061360b8339815191526044820152606401610ab6565b600081116110d05760405162461bcd60e51b815260206004820152600c60248201526b1e995c9bc81c995c5d595cdd60a21b6044820152606401610ab6565b6014546110de9060016134b9565b6110ea610edd60005490565b111561112c5760405162461bcd60e51b8152602060048201526011602482015270115e18d95959081b585e08185b5bdd5b9d607a1b6044820152606401610ab6565b6111363382612496565b506001600955565b6008546001600160a01b031633146111865760405162461bcd60e51b815260206004820181905260248201526000805160206135eb8339815191526044820152606401610ab6565b600260095414156111c75760405162461bcd60e51b815260206004820152601f60248201526000805160206135cb8339815191526044820152606401610ab6565b600260095560006111e06008546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d806000811461122a576040519150601f19603f3d011682016040523d82523d6000602084013e61122f565b606091505b505090508061113657600080fd5b6008546001600160a01b031633146112855760405162461bcd60e51b815260206004820181905260248201526000805160206135eb8339815191526044820152606401610ab6565b600f98909855601096909655601194909455601292909255601355601755601455601555601655565b610cbe83838360405180602001604052806000815250611c8e565b6112d481600161268a565b50565b6008546001600160a01b0316331461131f5760405162461bcd60e51b815260206004820181905260248201526000805160206135eb8339815191526044820152606401610ab6565b6018805491151563010000000263ff00000019909216919091179055565b6008546001600160a01b031633146113855760405162461bcd60e51b815260206004820181905260248201526000805160206135eb8339815191526044820152606401610ab6565b805161139890600d906020840190612caa565b5050565b805160609060008167ffffffffffffffff8111156113bc576113bc61359e565b60405190808252806020026020018201604052801561140757816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816113da5790505b50905060005b82811461145b5761143685828151811061142957611429613588565b6020026020010151611e4e565b82828151811061144857611448613588565b602090810291909101015260010161140d565b509392505050565b60006108d982612421565b60008161148e576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b6008546001600160a01b031633146114fc5760405162461bcd60e51b815260206004820181905260248201526000805160206135eb8339815191526044820152606401610ab6565b611506600061281b565b565b6008546001600160a01b031633146115505760405162461bcd60e51b815260206004820181905260248201526000805160206135eb8339815191526044820152606401610ab6565b601991909155601a55565b6002600954141561159c5760405162461bcd60e51b815260206004820152601f60248201526000805160206135cb8339815191526044820152606401610ab6565b60026009553233146115de5760405162461bcd60e51b815260206004820152601e602482015260008051602061360b8339815191526044820152606401610ab6565b6018546301000000900460ff166116495760405162461bcd60e51b815260206004820152602960248201527f546865206e6f726d616c2077686974656c6973742073616c65206973206e6f7460448201526820656e61626c65642160b81b6064820152608401610ab6565b60008311801561165b57506010548311155b6116775760405162461bcd60e51b8152600401610ab6906133ed565b6116836015548461267e565b34146116c25760405162461bcd60e51b815260206004820152600e60248201526d09cdee840cadcdeeaced0408ae8d60931b6044820152606401610ab6565b6014546116d09060016134b9565b6116e26116dc60005490565b8561248a565b11156117245760405162461bcd60e51b8152602060048201526011602482015270115e18d95959081b585e08185b5bdd5b9d607a1b6044820152606401610ab6565b601254336000908152600b6020526040902054611741908561248a565b111561178f5760405162461bcd60e51b815260206004820152601c60248201527f457863656564206d617820616d6f756e742070657220706572736f6e000000006044820152606401610ab6565b6040516bffffffffffffffffffffffff193360601b16602082015260009060340160405160208183030381529060405280519060200120905061180983838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050601a54915084905061286d565b6118555760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206e6f726d616c2070726f6f662100000000000000000000006044820152606401610ab6565b61185f3385612496565b336000908152600b60205260408120805486929061187e9084906134b9565b9091555050600160095550505050565b6008546001600160a01b031633146118d65760405162461bcd60e51b815260206004820181905260248201526000805160206135eb8339815191526044820152606401610ab6565b601880549115156101000261ff0019909216919091179055565b6008546001600160a01b031633146119385760405162461bcd60e51b815260206004820181905260248201526000805160206135eb8339815191526044820152606401610ab6565b60188054911515620100000262ff000019909216919091179055565b606060008060006119648561146e565b905060008167ffffffffffffffff8111156119815761198161359e565b6040519080825280602002602001820160405280156119aa578160200160208202803683370190505b5090506119d0604080516060810182526000808252602082018190529181019190915290565b60015b838614611a51576119e381612883565b91508160400151156119f457611a49565b81516001600160a01b031615611a0957815194505b876001600160a01b0316856001600160a01b03161415611a495780838780600101985081518110611a3c57611a3c613588565b6020026020010181815250505b6001016119d3565b50909695505050505050565b6060600380546108ee9061351c565b6060818310611a8e57604051631960ccad60e11b815260040160405180910390fd5b600080611a9a60005490565b90506001851015611aaa57600194505b80841115611ab6578093505b6000611ac18761146e565b905084861015611ae05785850381811015611ada578091505b50611ae4565b5060005b60008167ffffffffffffffff811115611aff57611aff61359e565b604051908082528060200260200182016040528015611b28578160200160208202803683370190505b50905081611b3b579350611bf192505050565b6000611b4688611e4e565b905060008160400151611b57575080515b885b888114158015611b695750848714155b15611be557611b7781612883565b9250826040015115611b8857611bdd565b82516001600160a01b031615611b9d57825191505b8a6001600160a01b0316826001600160a01b03161415611bdd5780848880600101995081518110611bd057611bd0613588565b6020026020010181815250505b600101611b59565b50505092835250909150505b9392505050565b6001600160a01b038216331415611c225760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611c998484846124b0565b6001600160a01b0383163b15611cd257611cb5848484846128ee565b611cd2576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b6008546001600160a01b03163314611d205760405162461bcd60e51b815260206004820181905260248201526000805160206135eb8339815191526044820152606401610ab6565b60026009541415611d615760405162461bcd60e51b815260206004820152601f60248201526000805160206135cb8339815191526044820152606401610ab6565b6002600955323314611da35760405162461bcd60e51b815260206004820152601e602482015260008051602061360b8339815191526044820152606401610ab6565b60008211611de25760405162461bcd60e51b815260206004820152600c60248201526b1e995c9bc81c995c5d595cdd60a21b6044820152606401610ab6565b601454611df09060016134b9565b611e02611dfc60005490565b8461248a565b1115611e445760405162461bcd60e51b8152602060048201526011602482015270115e18d95959081b585e08185b5bdd5b9d607a1b6044820152606401610ab6565b610c398183612496565b60408051606080820183526000808352602080840182905283850182905284519283018552818352820181905292810192909252906001831080611e9457506000548310155b15611e9f5792915050565b611ea883612883565b9050806040015115611eba5792915050565b611bf1836129e6565b6060611ece826123ec565b611eeb57604051630a14c4b560e41b815260040160405180910390fd5b60185460ff16611f50576000611eff612a4a565b90506000815111611f1f5760405180602001604052806000815250611bf1565b80611f2984612a59565b604051602001611f3a92919061328a565b6040516020818303038152906040529392505050565b6000611eff612aa8565b60026009541415611f9b5760405162461bcd60e51b815260206004820152601f60248201526000805160206135cb8339815191526044820152606401610ab6565b6002600955323314611fdd5760405162461bcd60e51b815260206004820152601e602482015260008051602061360b8339815191526044820152606401610ab6565b60185462010000900460ff166120445760405162461bcd60e51b815260206004820152602660248201527f546865206469612077686974656c6973742073616c65206973206e6f7420656e60448201526561626c65642160d01b6064820152608401610ab6565b60008311801561205657506010548311155b6120725760405162461bcd60e51b8152600401610ab6906133ed565b61207e6015548461267e565b34146120bd5760405162461bcd60e51b815260206004820152600e60248201526d09cdee840cadcdeeaced0408ae8d60931b6044820152606401610ab6565b6014546120cb9060016134b9565b6120d76116dc60005490565b11156121195760405162461bcd60e51b8152602060048201526011602482015270115e18d95959081b585e08185b5bdd5b9d607a1b6044820152606401610ab6565b601254336000908152600a6020526040902054612136908561248a565b11156121845760405162461bcd60e51b815260206004820152601c60248201527f457863656564206d617820616d6f756e742070657220706572736f6e000000006044820152606401610ab6565b6040516bffffffffffffffffffffffff193360601b1660208201526000906034016040516020818303038152906040528051906020012090506121fe83838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050601954915084905061286d565b61224a5760405162461bcd60e51b815260206004820152601260248201527f496e76616c6964206469612070726f6f662100000000000000000000000000006044820152606401610ab6565b6122543385612496565b336000908152600a60205260408120805486929061187e9084906134b9565b6008546001600160a01b031633146122bb5760405162461bcd60e51b815260206004820181905260248201526000805160206135eb8339815191526044820152606401610ab6565b805161139890600e906020840190612caa565b6008546001600160a01b031633146123165760405162461bcd60e51b815260206004820181905260248201526000805160206135eb8339815191526044820152606401610ab6565b6001600160a01b03811661237b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab6565b6112d48161281b565b6008546001600160a01b031633146123cc5760405162461bcd60e51b815260206004820181905260248201526000805160206135eb8339815191526044820152606401610ab6565b601880549115156401000000000264ff0000000019909216919091179055565b600081600111158015612400575060005482105b80156108d9575050600090815260046020526040902054600160e01b161590565b600081806001116124715760005481101561247157600081815260046020526040902054600160e01b811661246f575b80611bf1575060001901600081815260046020526040902054612451565b505b604051636f96cda160e11b815260040160405180910390fd5b6000611bf182846134b9565b611398828260405180602001604052806000815250612ab7565b60006124bb82612421565b9050836001600160a01b0316816001600160a01b0316146124ee5760405162a1148160e81b815260040160405180910390fd5b6000828152600660205260408120546001600160a01b039081169190861633148061253c57506001600160a01b038616600090815260076020908152604080832033845290915290205460ff165b8061254f57506001600160a01b03821633145b90508061256f57604051632ce44b5f60e11b815260040160405180910390fd5b8461258d57604051633a954ecd60e21b815260040160405180910390fd5b81156125b057600084815260066020526040902080546001600160a01b03191690555b6001600160a01b03868116600090815260056020908152604080832080546000190190559288168252828220805460010190558682526004905220600160e11b4260a01b87178117909155831661263557600184016000818152600460205260409020546126335760005481146126335760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b6000611bf182846134d1565b600061269583612421565b60008481526006602052604090205490915081906001600160a01b03168315612729576000336001600160a01b03841614806126f457506001600160a01b038316600090815260076020908152604080832033845290915290205460ff165b8061270757506001600160a01b03821633145b90508061272757604051632ce44b5f60e11b815260040160405180910390fd5b505b801561274c57600085815260066020526040902080546001600160a01b03191690555b6001600160a01b038216600090815260056020908152604080832080546fffffffffffffffffffffffffffffffff01905587835260049091529020600360e01b4260a01b8417179055600160e11b83166127d457600185016000818152600460205260409020546127d25760005481146127d25760008181526004602052604090208490555b505b60405185906000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a450506001805481019055505050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008261287a8584612c1f565b14949350505050565b60408051606081018252600080825260208201819052918101919091526000828152600460205260409020546108d990604080516060810182526001600160a01b038316815260a083901c67ffffffffffffffff166020820152600160e01b90921615159082015290565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a02906129239033908990889088906004016132c9565b602060405180830381600087803b15801561293d57600080fd5b505af192505050801561296d575060408051601f3d908101601f1916820190925261296a918101906130de565b60015b6129c8573d80801561299b576040519150601f19603f3d011682016040523d82523d6000602084013e6129a0565b606091505b5080516129c0576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60408051606081018252600080825260208201819052918101919091526108d9612a0f83612421565b604080516060810182526001600160a01b038316815260a083901c67ffffffffffffffff166020820152600160e01b90921615159082015290565b6060600e80546108ee9061351c565b604080516080810191829052607f0190826030600a8206018353600a90045b8015612a9657600183039250600a81066030018353600a9004612a78565b50819003601f19909101908152919050565b6060600d80546108ee9061351c565b60005483612ad757604051622e076360e81b815260040160405180910390fd5b82612af55760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b03841660008181526005602090815260408083208054680100000000000000018902019055848352600490915290204260a01b86176001861460e11b1790558190818501903b15612bca575b60405182906001600160a01b038816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4612b9360008784806001019550876128ee565b612bb0576040516368d2bf6b60e11b815260040160405180910390fd5b808210612b48578260005414612bc557600080fd5b612c0f565b5b6040516001830192906001600160a01b038816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808210612bcb575b506000908155611cd29085838684565b600081815b845181101561145b576000858281518110612c4157612c41613588565b60200260200101519050808311612c675760008381526020829052604090209250612c78565b600081815260208490526040902092505b5080612c8381613557565b915050612c24565b604051806101400160405280600a906020820280368337509192915050565b828054612cb69061351c565b90600052602060002090601f016020900481019282612cd85760008555612d1e565b82601f10612cf157805160ff1916838001178555612d1e565b82800160010185558215612d1e579182015b82811115612d1e578251825591602001919060010190612d03565b50612d2a929150612d2e565b5090565b5b80821115612d2a5760008155600101612d2f565b600067ffffffffffffffff831115612d5d57612d5d61359e565b612d70601f8401601f1916602001613464565b9050828152838383011115612d8457600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b0381168114612db257600080fd5b919050565b80358015158114612db257600080fd5b600060208284031215612dd957600080fd5b611bf182612d9b565b60008060408385031215612df557600080fd5b612dfe83612d9b565b9150612e0c60208401612d9b565b90509250929050565b600080600060608486031215612e2a57600080fd5b612e3384612d9b565b9250612e4160208501612d9b565b9150604084013590509250925092565b60008060008060808587031215612e6757600080fd5b612e7085612d9b565b9350612e7e60208601612d9b565b925060408501359150606085013567ffffffffffffffff811115612ea157600080fd5b8501601f81018713612eb257600080fd5b612ec187823560208401612d43565b91505092959194509250565b60008060408385031215612ee057600080fd5b612ee983612d9b565b9150612e0c60208401612db7565b60008060408385031215612f0a57600080fd5b612f1383612d9b565b946020939093013593505050565b600080600060608486031215612f3657600080fd5b612f3f84612d9b565b95602085013595506040909401359392505050565b60006020808385031215612f6757600080fd5b823567ffffffffffffffff811115612f7e57600080fd5b8301601f81018513612f8f57600080fd5b8035612fa2612f9d82613495565b613464565b80828252848201915084840188868560051b8701011115612fc257600080fd5b600094505b83851015612fec57612fd881612d9b565b835260019490940193918501918501612fc7565b50979650505050505050565b6000602080838503121561300b57600080fd5b823567ffffffffffffffff81111561302257600080fd5b8301601f8101851361303357600080fd5b8035613041612f9d82613495565b80828252848201915084840188868560051b870101111561306157600080fd5b600094505b83851015612fec578035835260019490940193918501918501613066565b60006020828403121561309657600080fd5b611bf182612db7565b600080604083850312156130b257600080fd5b50508035926020909101359150565b6000602082840312156130d357600080fd5b8135611bf1816135b4565b6000602082840312156130f057600080fd5b8151611bf1816135b4565b60006020828403121561310d57600080fd5b813567ffffffffffffffff81111561312457600080fd5b8201601f8101841361313557600080fd5b6129de84823560208401612d43565b60006020828403121561315657600080fd5b5035919050565b6000806040838503121561317057600080fd5b82359150612e0c60208401612d9b565b60008060006040848603121561319557600080fd5b83359250602084013567ffffffffffffffff808211156131b457600080fd5b818601915086601f8301126131c857600080fd5b8135818111156131d757600080fd5b8760208260051b85010111156131ec57600080fd5b6020830194508093505050509250925092565b60008060008060008060008060006101208a8c03121561321e57600080fd5b505087359960208901359950604089013598606081013598506080810135975060a0810135965060c0810135955060e08101359450610100013592509050565b600081518084526132768160208601602086016134f0565b601f01601f19169290920160200192915050565b6000835161329c8184602088016134f0565b8351908301906132b08183602088016134f0565b64173539b7b760d91b9101908152600501949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526132fb608083018461325e565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611a515761335d83855180516001600160a01b0316825260208082015167ffffffffffffffff16908301526040908101511515910152565b9284019260609290920191600101613321565b6101408101818360005b600a81101561339957815183526020928301929091019060010161337a565b50505092915050565b6020808252825182820181905260009190848201906040850190845b81811015611a51578351835292840192918401916001016133be565b602081526000611bf1602083018461325e565b60208082526021908201527f546f6f206d616e79207265717565737473206f72207a65726f207265717565736040820152601d60fa1b606082015260800190565b81516001600160a01b0316815260208083015167ffffffffffffffff1690820152604080830151151590820152606081016108d9565b604051601f8201601f1916810167ffffffffffffffff8111828210171561348d5761348d61359e565b604052919050565b600067ffffffffffffffff8211156134af576134af61359e565b5060051b60200190565b600082198211156134cc576134cc613572565b500190565b60008160001904831182151516156134eb576134eb613572565b500290565b60005b8381101561350b5781810151838201526020016134f3565b83811115611cd25750506000910152565b600181811c9082168061353057607f821691505b6020821081141561355157634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561356b5761356b613572565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146112d457600080fdfe5265656e7472616e637947756172643a207265656e7472616e742063616c6c004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725468652063616c6c657220697320616e6f7468657220636f6e74726163740000a26469706673582212200b312b157ff7c1bad1eb4444575c2cbc2b97279cbd8c4406c4fed12d988c900164736f6c6343000807003368747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f636974796f66626c6f636b2f636861726163746572732f76312f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572