60e060405262078d98608052600f805463ffffffff60881b1916600160881b17905534801561002c575f80fd5b50604051613d34380380613d3483398101604081905261004b9161051a565b604080518082018252601081526f0a6dac2e4e89cdec8ca88e4dee084def60831b6020808301919091528251808401845260058152640a69c8884b60db1b81830152835180830185525f808252855193840190955284835289946103209493906100b5838261063f565b5060016100c2828261063f565b5050506100d582826101d660201b60201c565b506100e19050336101f4565b6100eb8282610245565b506100f6905061029a565b61011373721c0078c2328597ca70f5451fff5a7b38d4e9476102e8565b6001600160a01b03851661013a5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0382166101615760405163e6c4247b60e01b815260040160405180910390fd5b600d61016d858261063f565b50600c61017a848261063f565b50600e80546001600160a01b0319166001600160a01b03968716179055931660a0525050608051600f8054600160a81b600160e81b031916600160a81b63ffffffff9384160263ffffffff60c81b19161790551660c0526106f9565b60066101e2838261063f565b5060076101ef828261063f565b505050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b61024f8282610360565b6040516001600160601b03821681526001600160a01b038316907f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef9060200160405180910390a25050565b604080515f815273721c0078c2328597ca70f5451fff5a7b38d4e94760208201527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac910160405180910390a1565b6001600160a01b0381161561035d57803b801561035b576040805163fb2de5d760e01b81523060048201526102d1602482015290516001600160a01b0384169163fb2de5d7916044808301925f92919082900301818387803b15801561034c575f80fd5b505af19250505080156101ef57505b505b50565b6127106001600160601b03821611156103d35760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084015b60405180910390fd5b6001600160a01b0382166104295760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016103ca565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600955565b80516001600160a01b0381168114610478575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126104a0575f80fd5b81516001600160401b038111156104b9576104b961047d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104e7576104e761047d565b6040528181528382016020018510156104fe575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f805f805f60a0868803121561052e575f80fd5b61053786610462565b60208701519095506001600160401b03811115610552575f80fd5b61055e88828901610491565b604088015190955090506001600160401b0381111561057b575f80fd5b61058788828901610491565b93505061059660608701610462565b9150608086015163ffffffff811681146105ae575f80fd5b809150509295509295909350565b600181811c908216806105d057607f821691505b6020821081036105ee57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101ef57805f5260205f20601f840160051c810160208510156106195750805b601f840160051c820191505b81811015610638575f8155600101610625565b5050505050565b81516001600160401b038111156106585761065861047d565b61066c8161066684546105bc565b846105f4565b6020601f82116001811461069e575f83156106875750848201515b5f19600385901b1c1916600184901b178455610638565b5f84815260208120601f198516915b828110156106cd57878501518255602094850194600190920191016106ad565b50848210156106ea57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05160c0516135f16107435f395f61164801525f8181610c0001528181610c6f015281816113bb015281816114d30152818161170801526117ee01525f50506135f15ff3fe608060405260043610610254575f3560e01c80636352211e1161013f578063b88d4fde116100b3578063d4a8775611610078578063d4a8775614610711578063d55441b514610730578063da96b07e14610744578063e8a3d48514610757578063e985e9c51461076b578063f2fde38b1461078a575f80fd5b8063b88d4fde1461067f578063c0a4e31c1461069e578063c0e72740146106ca578063c87b56dd146106de578063cfc86f7b146106fd575f80fd5b8063938e3d7b11610104578063938e3d7b146105d057806395d89b41146105ef57806399d32fc4146106035780639e05d24014610622578063a22cb46514610641578063a9fc664e14610660575f80fd5b80636352211e146105425780636bdaa3401461056157806370a0823114610580578063715018a61461059f5780638da5cb5b146105b3575f80fd5b80630d705df6116101d65780633b1ef5421161019b5780633b1ef5421461049157806342842e0e146104b05780634a008141146104cf5780635944c753146104ef5780636221d13c1461050e578063626c20911461052e575f80fd5b80630d705df6146103cc57806323b872dd146103f35780632a15218e146104125780632a55205a1461043457806330176e1314610472575f80fd5b806306fdde031161021c57806306fdde031461032a578063081812fc1461034b578063095ea7b31461036a578063098144d4146103895780630d0b8ffe1461039d575f80fd5b8063014635461461025857806301c387361461029c57806301ffc9a7146102bd57806303fee6bc146102ec57806304634d8d1461030b575b5f80fd5b348015610263575f80fd5b5061027f73721c0078c2328597ca70f5451fff5a7b38d4e94781565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102a7575f80fd5b506102bb6102b6366004612ae2565b6107a9565b005b3480156102c8575f80fd5b506102dc6102d7366004612b17565b61082d565b6040519015158152602001610293565b3480156102f7575f80fd5b50600e5461027f906001600160a01b031681565b348015610316575f80fd5b506102bb610325366004612b48565b61083d565b348015610335575f80fd5b5061033e610853565b6040516102939190612ba7565b348015610356575f80fd5b5061027f610365366004612bb9565b6108e3565b348015610375575f80fd5b506102bb610384366004612bd0565b610908565b348015610394575f80fd5b5061027f610a21565b3480156103a8575f80fd5b50683635c9adc5dea000005b6040516001600160801b039091168152602001610293565b3480156103d7575f80fd5b506040805163657711f560e11b81526001602082015201610293565b3480156103fe575f80fd5b506102bb61040d366004612bf8565b610a5b565b34801561041d575f80fd5b50610426610a8c565b604051908152602001610293565b34801561043f575f80fd5b5061045361044e366004612c32565b610a9a565b604080516001600160a01b039093168352602083019190915201610293565b34801561047d575f80fd5b506102bb61048c366004612c52565b610b44565b34801561049c575f80fd5b506102bb6104ab366004612bb9565b610bb8565b3480156104bb575f80fd5b506102bb6104ca366004612bf8565b610c2b565b3480156104da575f80fd5b50600f546102dc90600160801b900460ff1681565b3480156104fa575f80fd5b506102bb610509366004612cc0565b610c45565b348015610519575f80fd5b50600b546102dc90600160a81b900460ff1681565b348015610539575f80fd5b50610426610c58565b34801561054d575f80fd5b5061027f61055c366004612bb9565b610ce0565b34801561056c575f80fd5b506102bb61057b366004612cf9565b610d3f565b34801561058b575f80fd5b5061042661059a366004612ae2565b610dd1565b3480156105aa575f80fd5b506102bb610e55565b3480156105be575f80fd5b506008546001600160a01b031661027f565b3480156105db575f80fd5b506102bb6105ea366004612c52565b610e68565b3480156105fa575f80fd5b5061033e610ecf565b34801561060e575f80fd5b50600f546103b4906001600160801b031681565b34801561062d575f80fd5b506102bb61063c366004612d2c565b610ede565b34801561064c575f80fd5b506102bb61065b366004612d47565b610f33565b34801561066b575f80fd5b506102bb61067a366004612ae2565b610f3e565b34801561068a575f80fd5b506102bb610699366004612d90565b610ff7565b3480156106a9575f80fd5b506106bd6106b8366004612e6d565b61102f565b6040516102939190612e9f565b3480156106d5575f80fd5b5061033e61127b565b3480156106e9575f80fd5b5061033e6106f8366004612bb9565b611307565b348015610708575f80fd5b5061033e61133a565b34801561071c575f80fd5b506102bb61072b366004612d2c565b611347565b34801561073b575f80fd5b506102bb61139c565b6102bb610752366004612ee7565b6114fa565b348015610762575f80fd5b5061033e611829565b348015610776575f80fd5b506102dc610785366004612f48565b611851565b348015610795575f80fd5b506102bb6107a4366004612ae2565b6118b4565b6107b161192a565b6001600160a01b0381166107d85760405163e6c4247b60e01b815260040160405180910390fd5b600e80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7b77641e3e43914132d91ce9450aac1cbf5aa9c28ab80d416d241a5c456d837d906020015b60405180910390a150565b5f61083782611984565b92915050565b61084561192a565b61084f82826119c3565b5050565b60606006805461086290612f70565b80601f016020809104026020016040519081016040528092919081815260200182805461088e90612f70565b80156108d95780601f106108b0576101008083540402835291602001916108d9565b820191905f5260205f20905b8154815290600101906020018083116108bc57829003601f168201915b5050505050905090565b5f6108ed82611a18565b505f908152600460205260409020546001600160a01b031690565b5f61091282610ce0565b9050806001600160a01b0316836001600160a01b0316036109845760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806109a057506109a08133611851565b610a125760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161097b565b610a1c8383611a76565b505050565b600b5461010090046001600160a01b031680610a5857600b5460ff16610a58575073721c0078c2328597ca70f5451fff5a7b38d4e9475b90565b610a653382611ae3565b610a815760405162461bcd60e51b815260040161097b90612fa8565b610a1c838383611b41565b5f610a95611cb8565b905090565b5f828152600a602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610b0e5750604080518082019091526009546001600160a01b0381168252600160a01b90046001600160601b031660208201525b60208101515f9061271090610b2c906001600160601b031687613009565b610b369190613020565b915196919550909350505050565b610b4c61192a565b5f819003610b6d576040516341cc6b2160e01b815260040160405180910390fd5b600d610b7a828483613083565b507fe6e4cd5c2dc7d2c20519b41832cd550fd3ea1186bf299d108179bf71fb8e00e58282604051610bac92919061313d565b60405180910390a15050565b610bc061192a565b6040518181527f65b09eea04b6df90dff75de9ed57261250e71c1b7941a4e41e431e1437fc92c09060200160405180910390a1610c286001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611cf6565b50565b610a1c83838360405180602001604052805f815250610ff7565b610c4d61192a565b610a1c838383611d61565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610cbc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a95919061316b565b5f818152600260205260408120546001600160a01b0316806108375760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161097b565b610d4761192a565b683635c9adc5dea000006001600160801b0382161115610d7a5760405163af2eb37360e01b815260040160405180910390fd5b600f80546fffffffffffffffffffffffffffffffff19166001600160801b0383169081179091556040519081527fd4f078baf1dafb7f08f112fcd0a7bfe7ac292dde3a636b48cca227dc686c367d90602001610822565b5f6001600160a01b038216610e3a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161097b565b506001600160a01b03165f9081526003602052604090205490565b610e5d61192a565b610e665f611dbb565b565b610e7061192a565b5f819003610e91576040516341cc6b2160e01b815260040160405180910390fd5b600c610e9e828483613083565b507f905d981207a7d0b6c62cc46ab0be2a076d0298e4a86d0ab79882dbd01ac37378600c604051610bac9190613182565b60606007805461086290612f70565b610ee6611e0c565b600b8054821515600160a81b0260ff60a81b199091161790556040517f6787c7f9a80aa0f5ceddab2c54f1f5169c0b88e75dd5e19d5e858a64144c7dbc9061082290831515815260200190565b61084f338383611e36565b610f46611e0c565b6001600160a01b038116803b15159015801590610f61575080155b15610f7f576040516332483afb60e01b815260040160405180910390fd5b7fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac610fa8610a21565b604080516001600160a01b03928316815291851660208301520160405180910390a1600b80546001600160a01b038416610100026001600160a81b031990911617600117905561084f82611efb565b6110013383611ae3565b61101d5760405162461bcd60e51b815260040161097b90612fa8565b61102984848484611f79565b50505050565b606061103961192a565b8163ffffffff165f0361105f576040516302a34b0f60e31b815260040160405180910390fd5b6001600160a01b0383166110865760405163e6c4247b60e01b815260040160405180910390fd5b600f5463ffffffff808416600160a81b9092041610156110b9576040516341cc6b2160e01b815260040160405180910390fd5b5f8263ffffffff1667ffffffffffffffff8111156110d9576110d9612d7c565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b5090505f5b8363ffffffff168163ffffffff16101561123257600f54611136908690600160881b900463ffffffff16611fac565b600f60119054906101000a900463ffffffff16828263ffffffff168151811061116157611161613209565b63ffffffff9283166020918202929092010152600f8054909160199161118f91600160c81b9091041661321d565b91906101000a81548163ffffffff021916908363ffffffff160217905550600f601581819054906101000a900463ffffffff166111cb90613241565b91906101000a81548163ffffffff021916908363ffffffff160217905550600f601181819054906101000a900463ffffffff166112079061321d565b91906101000a81548163ffffffff021916908363ffffffff1602179055508080600101915050611107565b50836001600160a01b03167ff4fee83651f9a1519a23d60e3406f990e34ef8fe115174a2fde30a44a13e07328260405161126c9190612e9f565b60405180910390a25092915050565b600c805461128890612f70565b80601f01602080910402602001604051908101604052809291908181526020018280546112b490612f70565b80156112ff5780601f106112d6576101008083540402835291602001916112ff565b820191905f5260205f20905b8154815290600101906020018083116112e257829003601f168201915b505050505081565b606061131282611a18565b600d60405160200161132491906132cd565b6040516020818303038152906040529050919050565b600d805461128890612f70565b61134f61192a565b600f8054821515600160801b0260ff60801b199091161790556040517f5e3f6ff8ea2235d60e824a2ad40aaa526bbf7720612d8f19b7ef8a6b67b897389061082290831515815260200190565b6113a461192a565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611408573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061142c919061316b565b9050805f0361144e57604051632d4dd87f60e01b815260040160405180910390fd5b5f611457611cb8565b90505f818311611467575f611471565b61147182846132ee565b9050805f0361149357604051632d4dd87f60e01b815260040160405180910390fd5b6040518181527fb6deef47dcb3d0a897412bc9f5d1d147d7cd6d742c46045f40db924bfa67e8b39060200160405180910390a1610a1c6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338361214a565b61150261217a565b600f54600160801b900460ff1661152b576040516282b42960e81b815260040160405180910390fd5b5f81900361154b576040516282b42960e81b815260040160405180910390fd5b600f546001600160801b031634146115765760405163af2eb37360e01b815260040160405180910390fd5b600f545f90600160c81b900463ffffffff16815b838110156116b2575f811180156115dd57508484828181106115ae576115ae613209565b9050602002013585856001846115c491906132ee565b8181106115d3576115d3613209565b9050602002013510155b156115fb576040516341cc6b2160e01b815260040160405180910390fd5b3361161d86868481811061161157611611613209565b90506020020135610ce0565b6001600160a01b031614611643576040516282b42960e81b815260040160405180910390fd5b6116727f000000000000000000000000000000000000000000000000000000000000000063ffffffff166121e7565b61167c9084613301565b925061168782613241565b91506116aa85858381811061169e5761169e613209565b905060200201356122dd565b60010161158a565b50815f036116d35760405163500802a160e11b815260040160405180910390fd5b600f805463ffffffff60c81b1916600160c81b63ffffffff8416021790556040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611755573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611779919061316b565b90508281101561179c57604051632d4dd87f60e01b815260040160405180910390fd5b336001600160a01b03167f3e67d62d1b38c9813e78dc7ca4d11a08c8a4cc2d860dc98214787b83b447e8eb8686866040516117d993929190613314565b60405180910390a26118156001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338561214a565b61181e34612385565b50505061084f6123ba565b6060600c60405160200161183d9190613350565b604051602081830303815290604052905090565b6001600160a01b038281165f9081526005602090815260408083209385168352929052205460ff168061083757600b54600160a81b900460ff161561083757611898610a21565b6001600160a01b0316826001600160a01b031614905092915050565b6118bc61192a565b6001600160a01b0381166119215760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161097b565b610c2881611dbb565b6008546001600160a01b03163314610e665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097b565b5f6001600160e01b03198216632b435fdb60e21b14806119b457506001600160e01b0319821663503e914d60e11b145b806108375750610837826123e4565b6119cd8282612408565b6040516001600160601b03821681526001600160a01b038316907f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef9060200160405180910390a25050565b5f818152600260205260409020546001600160a01b0316610c285760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161097b565b5f81815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611aaa82610ce0565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f80611aee83610ce0565b9050806001600160a01b0316846001600160a01b03161480611b155750611b158185611851565b80611b395750836001600160a01b0316611b2e846108e3565b6001600160a01b0316145b949350505050565b826001600160a01b0316611b5482610ce0565b6001600160a01b031614611b7a5760405162461bcd60e51b815260040161097b9061335b565b6001600160a01b038216611bdc5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161097b565b611be983838360016124c2565b826001600160a01b0316611bfc82610ce0565b6001600160a01b031614611c225760405162461bcd60e51b815260040161097b9061335b565b5f81815260046020908152604080832080546001600160a01b03199081169091556001600160a01b038781168086526003855283862080545f1901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4610a1c83838360016124ef565b600f545f90600160c81b900463ffffffff1681611cd76012600a613483565b611ce3906103e8613009565b9050611cef8183613009565b9250505090565b6040516001600160a01b03808516602483015283166044820152606481018290526110299085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612515565b611d6c8383836125e6565b6040516001600160601b03821681526001600160a01b0383169084907f7f5b076c952c0ec86e5425963c1326dd0f03a3595c19f81d765e8ff559a6e33c906020015b60405180910390a3505050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6008546001600160a01b03163314610e66576040516282b42960e81b815260040160405180910390fd5b816001600160a01b0316836001600160a01b031603611e975760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161097b565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101611dae565b6001600160a01b03811615610c2857803b801561084f576040805163fb2de5d760e01b81523060048201526102d1602482015290516001600160a01b0384169163fb2de5d7916044808301925f92919082900301818387803b158015611f5f575f80fd5b505af1925050508015611f70575060015b1561084f575050565b611f84848484611b41565b611f90848484846126b0565b6110295760405162461bcd60e51b815260040161097b90613497565b6001600160a01b0382166120025760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161097b565b5f818152600260205260409020546001600160a01b0316156120665760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161097b565b6120735f838360016124c2565b5f818152600260205260409020546001600160a01b0316156120d75760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161097b565b6001600160a01b0382165f81815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461084f5f838360016124ef565b6040516001600160a01b038316602482015260448101829052610a1c90849063a9059cbb60e01b90606401611d2a565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c156121ba57604051633ee5aeb560e01b815260040160405180910390fd5b610e6660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b906127ad565b5f428211806121f4575081155b1561221257604051634d0b0a4160e01b815260040160405180910390fd5b5f6201518061222184426132ee565b61222b9190613020565b6103e89250905060c86103205f83900361225c5761224b6012600a613483565b6122559083613009565b93506122d5565b6102da83111561227c576122726012600a613483565b6122559085613009565b5f6102da8461228d6012600a613483565b6122979085613009565b6122a19190613009565b6122ab9190613020565b90505f6122ba6012600a613483565b6122c49085613009565b90506122d08282613301565b955050505b505050919050565b5f6122e782610ce0565b90506122f6815f8460016124c2565b6122ff82610ce0565b5f83815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080545f190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a461084f815f8460016124ef565b600e545f906001600160a01b03168180808086855af1915081610a1c576040516282b42960e81b815260040160405180910390fd5b610e665f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f006121e1565b5f6001600160e01b0319821663152a902d60e11b14806108375750610837826127b4565b6127106001600160601b03821611156124335760405162461bcd60e51b815260040161097b906134e9565b6001600160a01b0382166124895760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c696420726563656976657200000000000000604482015260640161097b565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600955565b5f5b818110156124e8576124e085856124db8487613301565b612803565b6001016124c4565b5050505050565b5f5b818110156124e85761250d85856125088487613301565b612859565b6001016124f1565b5f612569826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128a09092919063ffffffff16565b805190915015610a1c57808060200190518101906125879190613533565b610a1c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161097b565b6127106001600160601b03821611156126115760405162461bcd60e51b815260040161097b906134e9565b6001600160a01b0382166126675760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d65746572730000000000604482015260640161097b565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182525f968752600a90529190942093519051909116600160a01b029116179055565b5f6001600160a01b0384163b156127a257604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906126f390339089908890889060040161354e565b6020604051808303815f875af192505050801561272d575060408051601f3d908101601f1916820190925261272a9181019061358a565b60015b612788573d80801561275a576040519150601f19603f3d011682016040523d82523d5f602084013e61275f565b606091505b5080515f036127805760405162461bcd60e51b815260040161097b90613497565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611b39565b506001949350505050565b80825d5050565b5f6001600160e01b031982166380ac58cd60e01b14806127e457506001600160e01b03198216635b5e139f60e01b145b8061083757506301ffc9a760e01b6001600160e01b0319831614610837565b6001600160a01b03838116159083161581801561281d5750805b1561283b57604051635cbd944160e01b815260040160405180910390fd5b8115612847575b6124e8565b80612842576124e833868686346128ae565b6001600160a01b0383811615908316158180156128735750805b1561289157604051635cbd944160e01b815260040160405180910390fd5b816128425780612842576124e8565b6060611b3984845f85612953565b5f6128b7610a21565b90506001600160a01b0381161561294b576001600160a01b03811633036128de57506124e8565b60405163657711f560e11b81526001600160a01b038781166004830152868116602483015285811660448301526064820185905282169063caee23ea906084015f6040518083038186803b158015612934575f80fd5b505afa158015612946573d5f803e3d5ffd5b505050505b505050505050565b6060824710156129b45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161097b565b5f80866001600160a01b031685876040516129cf91906135a5565b5f6040518083038185875af1925050503d805f8114612a09576040519150601f19603f3d011682016040523d82523d5f602084013e612a0e565b606091505b5091509150612a1f87838387612a2a565b979650505050505050565b60608315612a985782515f03612a91576001600160a01b0385163b612a915760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161097b565b5081611b39565b611b398383815115612aad5781518083602001fd5b8060405162461bcd60e51b815260040161097b9190612ba7565b80356001600160a01b0381168114612add575f80fd5b919050565b5f60208284031215612af2575f80fd5b612afb82612ac7565b9392505050565b6001600160e01b031981168114610c28575f80fd5b5f60208284031215612b27575f80fd5b8135612afb81612b02565b80356001600160601b0381168114612add575f80fd5b5f8060408385031215612b59575f80fd5b612b6283612ac7565b9150612b7060208401612b32565b90509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f612afb6020830184612b79565b5f60208284031215612bc9575f80fd5b5035919050565b5f8060408385031215612be1575f80fd5b612bea83612ac7565b946020939093013593505050565b5f805f60608486031215612c0a575f80fd5b612c1384612ac7565b9250612c2160208501612ac7565b929592945050506040919091013590565b5f8060408385031215612c43575f80fd5b50508035926020909101359150565b5f8060208385031215612c63575f80fd5b823567ffffffffffffffff811115612c79575f80fd5b8301601f81018513612c89575f80fd5b803567ffffffffffffffff811115612c9f575f80fd5b856020828401011115612cb0575f80fd5b6020919091019590945092505050565b5f805f60608486031215612cd2575f80fd5b83359250612ce260208501612ac7565b9150612cf060408501612b32565b90509250925092565b5f60208284031215612d09575f80fd5b81356001600160801b0381168114612afb575f80fd5b8015158114610c28575f80fd5b5f60208284031215612d3c575f80fd5b8135612afb81612d1f565b5f8060408385031215612d58575f80fd5b612d6183612ac7565b91506020830135612d7181612d1f565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215612da3575f80fd5b612dac85612ac7565b9350612dba60208601612ac7565b925060408501359150606085013567ffffffffffffffff811115612ddc575f80fd5b8501601f81018713612dec575f80fd5b803567ffffffffffffffff811115612e0657612e06612d7c565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612e3557612e35612d7c565b604052818152828201602001891015612e4c575f80fd5b816020840160208301375f6020838301015280935050505092959194509250565b5f8060408385031215612e7e575f80fd5b612e8783612ac7565b9150602083013563ffffffff81168114612d71575f80fd5b602080825282518282018190525f918401906040840190835b81811015612edc57835163ffffffff16835260209384019390920191600101612eb8565b509095945050505050565b5f8060208385031215612ef8575f80fd5b823567ffffffffffffffff811115612f0e575f80fd5b8301601f81018513612f1e575f80fd5b803567ffffffffffffffff811115612f34575f80fd5b8560208260051b8401011115612cb0575f80fd5b5f8060408385031215612f59575f80fd5b612f6283612ac7565b9150612b7060208401612ac7565b600181811c90821680612f8457607f821691505b602082108103612fa257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761083757610837612ff5565b5f8261303a57634e487b7160e01b5f52601260045260245ffd5b500490565b601f821115610a1c57805f5260205f20601f840160051c810160208510156130645750805b601f840160051c820191505b818110156124e8575f8155600101613070565b67ffffffffffffffff83111561309b5761309b612d7c565b6130af836130a98354612f70565b8361303f565b5f601f8411600181146130e0575f85156130c95750838201355b5f19600387901b1c1916600186901b1783556124e8565b5f83815260208120601f198716915b8281101561310f57868501358255602094850194600190920191016130ef565b508682101561312b575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f6020828403121561317b575f80fd5b5051919050565b602081525f80835461319381612f70565b806020860152600182165f81146131b157600181146131cd576131fe565b60ff1983166040870152604082151560051b87010193506131fe565b865f5260205f205f5b838110156131f5578154888201604001526001909101906020016131d6565b87016040019450505b509195945050505050565b634e487b7160e01b5f52603260045260245ffd5b5f63ffffffff821663ffffffff810361323857613238612ff5565b60010192915050565b5f63ffffffff82168061325657613256612ff5565b5f190192915050565b5f815461326b81612f70565b6001821680156132825760018114613297576132c4565b60ff19831686528115158202860193506132c4565b845f5260205f205f5b838110156132bc578154888201526001909101906020016132a0565b505081860193505b50505092915050565b5f6132d8828461325f565b6518973539b7b760d11b81526006019392505050565b8181038181111561083757610837612ff5565b8082018082111561083757610837612ff5565b604080825281018390525f6001600160fb1b03841115613332575f80fd5b8360051b808660608501376020830193909352500160600192915050565b5f612afb828461325f565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6001815b60018411156133db578085048111156133bf576133bf612ff5565b60018416156133cd57908102905b60019390931c9280026133a4565b935093915050565b5f826133f157506001610837565b816133fd57505f610837565b8160018114613413576002811461341d57613439565b6001915050610837565b60ff84111561342e5761342e612ff5565b50506001821b610837565b5060208310610133831016604e8410600b841016171561345c575081810a610837565b6134685f1984846133a0565b805f190482111561347b5761347b612ff5565b029392505050565b5f612afb6001600160801b038416836133e3565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602a908201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646040820152692073616c65507269636560b01b606082015260800190565b5f60208284031215613543575f80fd5b8151612afb81612d1f565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061358090830184612b79565b9695505050505050565b5f6020828403121561359a575f80fd5b8151612afb81612b02565b5f82518060208501845e5f92019182525091905056fea26469706673582212201fa31a1be59a1ae43607069f82c37e41e50b7caf053c409b728a23e83f621f4c64736f6c634300081a00330000000000000000000000008e93ae06a3aa1dc901af08d8b1029b95a3ce12d400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001000000000000000000000000003e62fed35c97145e6b445704b8ce74b2544776a90000000000000000000000000000000000000000000000000000000067638c30000000000000000000000000000000000000000000000000000000000000002d68747470733a2f2f63646e2e6561726e6d2e636f6d2f6e66742f64726f70626f782f736d6172746e6f6465732f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003f68747470733a2f2f63646e2e6561726e6d2e636f6d2f6e66742f64726f70626f782f736d6172746e6f6465732f636f6e74726163745f6d6574612e6a736f6e00