6101606040526016805460ff1916600117905534801561001d575f5ffd5b506040516162cf3803806162cf83398101604081905261003c91610691565b84848484848481805f015133805f888880805f01518160200151815f908161006491906107f7565b50600161007182826107f7565b505050606081810151600a805462010000600160b01b031916620100006001600160a01b0393841602179055608092830151600b80546001600160a01b031916918316919091179055602085015183528451811660a09081529185015164ffffffffff1660c0529184015160e05283015161010052604090920151600e805461ffff191661ffff9092169190911790555082166101555760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600e80546001600160a01b03808516620100000262010000600160b01b03199092169190911790915581161561018e5761018e8161028f565b5050506001600160a01b0381166101b85760405163d92e233d60e01b815260040160405180910390fd5b601080546001600160a01b0319166001600160a01b039283161790556020820151610120526040820151610140528216610200600e546201000090046001600160a01b031690565b6001600160a01b031614610217576102178261033f565b50508351601180546001600160a01b039283166001600160a01b0319918216179091556020860151601280549184169190921617905560408501516013805460609097015163ffffffff16600160a01b026001600160c01b0319909716919092161794909417909355506108b1975050505050505050565b336001600160a01b038216036102e75760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640161014c565b600f80546001600160a01b0319166001600160a01b03838116918217909255600e5460405191926201000090910416907fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278905f90a350565b610347610353565b6103508161028f565b50565b600e546201000090046001600160a01b031633146103b35760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015260640161014c565b565b6001600160a01b0381168114610350575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b03811182821017156103ff576103ff6103c9565b60405290565b60405160a081016001600160401b03811182821017156103ff576103ff6103c9565b604051608081016001600160401b03811182821017156103ff576103ff6103c9565b604051601f8201601f191681016001600160401b0381118282101715610471576104716103c9565b604052919050565b805161ffff8116811461048a575f5ffd5b919050565b5f60c0828403121561049f575f5ffd5b6104a76103dd565b905081516104b4816103b5565b8152602082810151908201526104cc60408301610479565b6040820152606082015164ffffffffff811681146104e8575f5ffd5b60608201526080828101519082015260a09182015191810191909152919050565b5f82601f830112610518575f5ffd5b81516001600160401b03811115610531576105316103c9565b610544601f8201601f1916602001610449565b818152846020838601011115610558575f5ffd5b5f5b828110156105765760208186018101518383018201520161055a565b505f918101602001919091529392505050565b5f60a08284031215610599575f5ffd5b6105a1610405565b82519091506001600160401b038111156105b9575f5ffd5b6105c584828501610509565b82525060208201516001600160401b038111156105e0575f5ffd5b6105ec84828501610509565b6020830152506105fe60408301610479565b60408201526060820151610611816103b5565b60608201526080820151610624816103b5565b608082015292915050565b5f6060828403121561063f575f5ffd5b604051606081016001600160401b0381118282101715610661576106616103c9565b80604052508091508251610674816103b5565b815260208381015190820152604092830151920191909152919050565b5f5f5f5f5f8587036101e08112156106a7575f5ffd5b86516106b2816103b5565b95506080601f19820112156106c5575f5ffd5b506106ce610427565b60208701516106dc816103b5565b815260408701516106ec816103b5565b602082015260608701516106ff816103b5565b6040820152608087015163ffffffff8116811461071a575f5ffd5b6060820152935061072e8760a0880161048f565b6101608701519093506001600160401b0381111561074a575f5ffd5b61075688828901610589565b92505061076787610180880161062f565b90509295509295909350565b600181811c9082168061078757607f821691505b6020821081036107a557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156107f257805f5260205f20601f840160051c810160208510156107d05750805b601f840160051c820191505b818110156107ef575f81556001016107dc565b50505b505050565b81516001600160401b03811115610810576108106103c9565b6108248161081e8454610773565b846107ab565b6020601f821160018114610856575f831561083f5750848201515b5f19600385901b1c1916600184901b1784556107ef565b5f84815260208120601f198516915b828110156108855787850151825560209485019460019092019101610865565b50848210156108a257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05160c05160e05161010051610120516101405161596461096b5f395f61330c01525f6132e901525f8181610ca5015261260401525f81816105d3015281816126510152612c1b01525f8181610d2a0152818161158c01528181611a7d01528181611f8301528181612a03015261348d01525f8181610a97015261358e01525f8181610902015281816115b501528181611aa601528181611fac01528181612a2c015281816134b6015261351501526159645ff3fe608060405260043610610483575f3560e01c806372052e8711610251578063a85c38ef1161013c578063e8a3d485116100b7578063f6c34c9911610087578063f84ddf0b1161006d578063f84ddf0b14610e50578063f8c5ce8714610e65578063ffa1ad7414610e9d575f5ffd5b8063f6c34c9914610e1e578063f6fafbbb14610e3d575f5ffd5b8063e8a3d48514610d8a578063e985e9c514610d9e578063f063ad4914610de5578063f2fde38b14610dff575f5ffd5b8063c06abfc71161010c578063caa49f2b116100f2578063caa49f2b14610d19578063cbe075ee14610d4c578063cbf9b84b14610d6b575f5ffd5b8063c06abfc714610cdb578063c87b56dd14610cfa575f5ffd5b8063a85c38ef14610c46578063b88d4fde14610c75578063bac2439414610c94578063bd60b83f14610cc7575f5ffd5b80638fa07c48116101cc5780639eccacf61161019c578063a41bfe9e11610182578063a41bfe9e14610c00578063a49062d414610c13578063a50884d914610c27575f5ffd5b80639eccacf614610bc2578063a22cb46514610be1575f5ffd5b80638fa07c4814610b1a5780639119276514610b7557806395d89b4114610b8f5780639caf93a214610ba3575f5ffd5b80638ada6b0f116102215780638da5cb5b116102075780638da5cb5b14610ab95780638e3d566414610adc5780638ea9811714610afb575f5ffd5b80638ada6b0f14610a675780638be4ceda14610a86575f5ffd5b806372052e87146109de578063729ad39e14610a155780637688a89214610a3457806379ba509714610a53575f5ffd5b8063253191351161037157806357c388cc116102ec5780636352211e116102bc5780636e8b371a116102a25780636e8b371a1461098157806370a08231146109a057806371d63e70146109bf575f5ffd5b80636352211e14610943578063641abc3a14610962575f5ffd5b806357c388cc1461088b5780635b65778e146108b75780635f705d96146108f1578063600dc8cf14610924575f5ffd5b80633ebbabeb1161034157806342842e0e1161032757806342842e0e1461082e5780634f6ccce71461084d57806356d3163d1461086c575f5ffd5b80633ebbabeb146107de5780633f585d39146107fd575f5ffd5b806325319135146107435780632a55205a1461075c5780632f745c591461079a57806338af3eed146107b9575f5ffd5b80630f1d27e51161040157806316c4a408116103d15780631958bf6b116103b75780631958bf6b146106d95780631fe543e31461070557806323b872dd14610724575f5ffd5b806316c4a408146106a657806318160ddd146106c5575f5ffd5b80630f1d27e514610622578063111c17b71461065457806313ff574f146106735780631621226514610692575f5ffd5b8063081812fc116104565780630cdcb5351161043c5780630cdcb535146105875780630d1940f9146105c25780630d4a687614610603575f5ffd5b8063081812fc14610531578063095ea7b314610568575f5ffd5b806301ffc9a71461048757806303c6fe52146104bb57806306fdde03146104ef57806307d6f99714610510575b5f5ffd5b348015610492575f5ffd5b506104a66104a13660046147f0565b610ee2565b60405190151581526020015b60405180910390f35b3480156104c6575f5ffd5b506104da6104d5366004614819565b610f1f565b604080519283526020830191909152016104b2565b3480156104fa575f5ffd5b50610503611116565b6040516104b29190614881565b34801561051b575f5ffd5b5061052f61052a3660046148a2565b6111a5565b005b34801561053c575f5ffd5b5061055061054b3660046148bd565b6111c5565b6040516001600160a01b0390911681526020016104b2565b348015610573575f5ffd5b5061052f6105823660046148e8565b6111ec565b348015610592575f5ffd5b5061052f6105a1366004614912565b5f918252600d6020526040909120805460ff191660ff909216919091179055565b3480156105cd575f5ffd5b506105f57f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016104b2565b34801561060e575f5ffd5b5061052f61061d366004614940565b6111fb565b34801561062d575f5ffd5b5061064161063c366004614819565b611241565b60405161ffff90911681526020016104b2565b34801561065f575f5ffd5b50601354610550906001600160a01b031681565b34801561067e575f5ffd5b5061052f61068d3660046148bd565b611263565b34801561069d575f5ffd5b5061052f61126f565b3480156106b1575f5ffd5b506105f56106c0366004614963565b611283565b3480156106d0575f5ffd5b506008546105f5565b3480156106e4575f5ffd5b506106f86106f33660046148bd565b61128d565b6040516104b291906149cf565b348015610710575f5ffd5b5061052f61071f366004614a22565b6113dd565b34801561072f575f5ffd5b5061052f61073e366004614a6a565b61142d565b34801561074e575f5ffd5b506016546104a69060ff1681565b348015610767575f5ffd5b5061077b610776366004614aa8565b6114b6565b604080516001600160a01b0390931683526020830191909152016104b2565b3480156107a5575f5ffd5b506105f56107b43660046148e8565b611527565b3480156107c4575f5ffd5b50600a54610550906201000090046001600160a01b031681565b3480156107e9575f5ffd5b5061052f6107f8366004614ac8565b61158a565b348015610808575f5ffd5b5061081c610817366004614912565b6118e2565b60405160ff90911681526020016104b2565b348015610839575f5ffd5b5061052f610848366004614a6a565b611903565b348015610858575f5ffd5b506105f56108673660046148bd565b61191d565b348015610877575f5ffd5b5061052f610886366004614963565b611972565b348015610896575f5ffd5b506108aa6108a5366004614b34565b61199c565b6040516104b29190614b73565b3480156108c2575f5ffd5b506104a66108d13660046148bd565b5f908152600d6020526040902054610100900464ffffffffff1642101590565b3480156108fc575f5ffd5b506105f57f000000000000000000000000000000000000000000000000000000000000000081565b34801561092f575f5ffd5b5061052f61093e366004614bd6565b611a7b565b34801561094e575f5ffd5b5061055061095d3660046148bd565b611f6c565b34801561096d575f5ffd5b5061081c61097c366004614912565b611f76565b34801561098c575f5ffd5b5061052f61099b366004614b34565b611f81565b3480156109ab575f5ffd5b506105f56109ba366004614963565b61226f565b3480156109ca575f5ffd5b506105f56109d9366004614ca4565b6122b4565b3480156109e9575f5ffd5b506014546109fd906001600160601b031681565b6040516001600160601b0390911681526020016104b2565b348015610a20575f5ffd5b5061052f610a2f366004614b34565b6122d4565b348015610a3f575f5ffd5b50601254610550906001600160a01b031681565b348015610a5e575f5ffd5b5061052f612341565b348015610a72575f5ffd5b50600b54610550906001600160a01b031681565b348015610a91575f5ffd5b506105507f000000000000000000000000000000000000000000000000000000000000000081565b348015610ac4575f5ffd5b50600e546201000090046001600160a01b0316610550565b348015610ae7575f5ffd5b5061052f610af6366004614963565b61241c565b348015610b06575f5ffd5b5061052f610b15366004614963565b612446565b348015610b25575f5ffd5b50610b56610b343660046148bd565b600d6020525f908152604090205460ff811690610100900464ffffffffff1682565b6040805160ff909316835264ffffffffff9091166020830152016104b2565b348015610b80575f5ffd5b50600a546106419061ffff1681565b348015610b9a575f5ffd5b50610503612542565b348015610bae575f5ffd5b5061052f610bbd366004614963565b612551565b348015610bcd575f5ffd5b50601054610550906001600160a01b031681565b348015610bec575f5ffd5b5061052f610bfb366004614cdd565b61257b565b61052f610c0e366004614d09565b612586565b348015610c1e575f5ffd5b5061081c601481565b348015610c32575f5ffd5b5061052f610c41366004614963565b61267a565b348015610c51575f5ffd5b50610c65610c603660046148bd565b6126a4565b6040516104b29493929190614d55565b348015610c80575f5ffd5b5061052f610c8f366004614e15565b612777565b348015610c9f575f5ffd5b506105f57f000000000000000000000000000000000000000000000000000000000000000081565b348015610cd2575f5ffd5b5061081c600181565b348015610ce6575f5ffd5b50601154610550906001600160a01b031681565b348015610d05575f5ffd5b50610503610d143660046148bd565b61278e565b348015610d24575f5ffd5b506105f57f000000000000000000000000000000000000000000000000000000000000000081565b348015610d57575f5ffd5b506105f5610d66366004614ebd565b61285e565b348015610d76575f5ffd5b5061052f610d85366004614ed9565b6128db565b348015610d95575f5ffd5b5061050361295f565b348015610da9575f5ffd5b506104a6610db8366004614efc565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b348015610df0575f5ffd5b50600e546106419061ffff1681565b348015610e0a575f5ffd5b5061052f610e19366004614963565b6129f0565b348015610e29575f5ffd5b5061052f610e38366004614f28565b612a01565b61052f610e4b366004614819565b612c15565b348015610e5b575f5ffd5b506105f5600c5481565b348015610e70575f5ffd5b50601354610e8890600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016104b2565b348015610ea8575f5ffd5b5060408051808201909152600581527f302e352e300000000000000000000000000000000000000000000000000000006020820152610503565b5f6001600160e01b031982161580610f0a57506001600160e01b0319821663152a902d60e11b145b80610f195750610f1982612c3f565b92915050565b5f5f8260ff16600103610f3757506001905080915091565b8260ff16600203610f4e5750600190506003915091565b8260ff16600303610f655750600290506004915091565b8260ff16600403610f7c5750600390506006915091565b8260ff16600503610f935750600390506008915091565b8260ff16600603610faa575060049050600a915091565b8260ff16600703610fc1575060059050600c915091565b8260ff16600803610fd8575060069050600f915091565b8260ff16600903610fef5750600790506012915091565b8260ff16600a036110065750600890506014915091565b8260ff16600b0361101d5750600990506018915091565b8260ff16600c036110345750600a9050601a915091565b8260ff16600d0361104b5750600b9050601d915091565b8260ff16600e036110625750600c90506020915091565b8260ff16600f036110795750600e90506024915091565b8260ff166010036110905750600f90506028915091565b8260ff166011036110a7575060109050602b915091565b8260ff166012036110be575060129050602e915091565b8260ff166013036110d55750601390506032915091565b8260ff166014036110ec5750601490506035915091565b6040516384343aaf60e01b815260ff84166004820152601460248201526044015b60405180910390fd5b60605f805461112490614f67565b80601f016020809104026020016040519081016040528092919081815260200182805461115090614f67565b801561119b5780601f106111725761010080835404028352916020019161119b565b820191905f5260205f20905b81548152906001019060200180831161117e57829003601f168201915b5050505050905090565b6111ad612c63565b600a805461ffff191661ffff92909216919091179055565b5f6111cf82612cc5565b505f828152600460205260409020546001600160a01b0316610f19565b6111f7828233612cfd565b5050565b611203612c63565b6013805463ffffffff909216600160a01b027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b5f600160ff83161161125457505f919050565b610f1960ff8316614e20614fc7565b61126c81612d0a565b50565b611277612c63565b6016805460ff19169055565b5f610f1982612d42565b6112c46040518060a001604052805f8152602001606081526020015f81526020015f81526020015f6001600160a01b031681525090565b60405163c87b56dd60e01b8152600481018390525f90309063c87b56dd906024015f60405180830381865afa1580156112ff573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611326919081019061502c565b5f848152600d60205260408082205490516331a9108f60e11b81526004810187905292935060ff81169261010090910464ffffffffff1691903090636352211e90602401602060405180830381865afa158015611385573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a9919061505e565b6040805160a0810182529788526020880195909552938601929092526060850152506001600160a01b031660808301525090565b6010546001600160a01b0316331461141d5760105460405163073e64fd60e21b81523360048201526001600160a01b03909116602482015260440161110d565b611428838383612d87565b505050565b6001600160a01b03821661145657604051633250574960e11b81525f600482015260240161110d565b5f6114628383336130a6565b9050836001600160a01b0316816001600160a01b0316146114b0576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161110d565b50505050565b5f828152600d60205260408120548190849060ff166114eb57604051631d0ebf5160e11b815260040161110d91815260200190565b50600a546001600160a01b036201000082041690612710906115119061ffff1686615079565b61151b9190615090565b915091505b9250929050565b5f6115318361226f565b82106115625760405163295f44f760e21b81526001600160a01b03841660048201526024810183905260440161110d565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b7f00000000000000000000000000000000000000000000000000000000000000004211806115e057507f00000000000000000000000000000000000000000000000000000000000000006115dd60085490565b10155b6115fd57604051639662d10f60e01b815260040160405180910390fd5b82811461161d576040516302a60aff60e31b815260040160405180910390fd5b5f805b828110156117e0575f84848381811061163b5761163b6150a3565b9050602002013590505f878784818110611657576116576150a3565b905060200201602081019061166c9190614819565b90503361167883611f6c565b6001600160a01b03161461169f5760405163680721b360e11b815260040160405180910390fd5b8060ff165f036116c2576040516331ae754360e11b815260040160405180910390fd5b5f828152600d602052604081208054909160ff909116906116e384836150b7565b905084601460ff83168110156117185760405163546c0a8160e11b8152600481019290925260ff16602482015260440161110d565b50505f611725838661285e565b61173790670de0b6b3a7640000615079565b905061174381896150d0565b60135490985061176090600160a01b900463ffffffff16426150d0565b845464ffffffffff919091166101000265ffffffffff00199091161784556117888686613179565b85337fc1a10237b571512519ba13c6f4b5e6e222bb85ccbeec287f10fa144cacec92a46117bd670de0b6b3a764000085615090565b60405190815260200160405180910390a350506001909401935061162092505050565b506011546040516370a0823160e01b81523360048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611827573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061184b91906150e3565b905081818181101561187957604051638ea10df360e01b81526004810192909252602482015260440161110d565b505060115460405163079cc67960e41b8152336004820152602481018490526001600160a01b03909116906379cc6790906044015f604051808303815f87803b1580156118c4575f5ffd5b505af11580156118d6573d5f5f3e3d5ffd5b50505050505050505050565b5f6118ed8383613289565b50505f908152600d602052604090205460ff1690565b61142883838360405180602001604052805f815250612777565b5f61192760085490565b821061194f5760405163295f44f760e21b81525f60048201526024810183905260440161110d565b60088281548110611962576119626150a3565b905f5260205f2001549050919050565b61197a612c63565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f8267ffffffffffffffff8111156119b8576119b8614da9565b604051908082528060200260200182016040528015611a2057816020015b611a0d6040518060a001604052805f8152602001606081526020015f81526020015f81526020015f6001600160a01b031681525090565b8152602001906001900390816119d65790505b5090505f5b83811015611a7357611a4e858583818110611a4257611a426150a3565b9050602002013561128d565b828281518110611a6057611a606150a3565b6020908102919091010152600101611a25565b509392505050565b7f0000000000000000000000000000000000000000000000000000000000000000421180611ad157507f0000000000000000000000000000000000000000000000000000000000000000611ace60085490565b10155b611aee57604051639662d10f60e01b815260040160405180910390fd5b868581148015611afd57508082145b8015611b0857508084145b611b25576040516302a60aff60e31b815260040160405180910390fd5b506015545f80805b88811015611d7457898982818110611b4757611b476150a3565b9050602002016020810190611b5c9190614819565b60ff165f03611b7e576040516302c81c9560e51b815260040160405180910390fd5b878782818110611b9057611b906150a3565b9050602002016020810190611ba591906150fa565b15611be557898982818110611bbc57611bbc6150a3565b9050602002016020810190611bd19190614819565b611bde9060ff16836150d0565b9150611c1c565b898982818110611bf757611bf76150a3565b9050602002016020810190611c0c9190614819565b611c199060ff16846150d0565b92505b5f600d5f8e8e85818110611c3257611c326150a3565b602090810292909201358352508101919091526040015f205460ff169050600181118d8d84818110611c6657611c666150a3565b9050602002013560019091611c9a5760405163709c1e1760e01b8152600481019290925260ff16602482015260440161110d565b50508c8c83818110611cae57611cae6150a3565b90506020020135336001600160a01b0316867f6b2c964d8a4d60cc2a8304ea2ff15b6238da47709838a164ca59c4aa8a1d3f948c8c87818110611cf357611cf36150a3565b9050602002016020810190611d0891906150fa565b8f8f88818110611d1a57611d1a6150a3565b9050602002016020810190611d2f9190614819565b8c8c89818110611d4157611d416150a3565b9050602002810190611d539190615115565b604051611d639493929190615180565b60405180910390a450600101611b2d565b508115611df0575f611d8e83670de0b6b3a7640000615079565b60115460405163079cc67960e41b8152336004820152602481018390529192506001600160a01b0316906379cc6790906044015f604051808303815f87803b158015611dd8575f5ffd5b505af1158015611dea573d5f5f3e3d5ffd5b50505050505b8015611e5d57601254604051637a94c56560e11b815233600482015260016024820152604481018390526001600160a01b039091169063f5298aca906064015f604051808303815f87803b158015611e46575f5ffd5b505af1158015611e58573d5f5f3e3d5ffd5b505050505b604080516080810190915260159080600181526020014264ffffffffff1681526020018460ff168152602001338e8e8e8e8e8e8e8e604051602001611eaa999897969594939291906152aa565b60408051601f1981840301815291905290528154600181810184555f9384526020909320825160029283029091018054939490939192849260ff191691908490811115611ef957611ef9614d41565b021790555060208201518154604084015160ff1666010000000000000266ff0000000000001964ffffffffff909316610100029290921666ffffffffffff00199091161717815560608201516001820190611f549082615386565b505050611f5f6132da565b5050505050505050505050565b5f610f1982612cc5565b5f6118ed8383613179565b7f0000000000000000000000000000000000000000000000000000000000000000421180611fd757507f0000000000000000000000000000000000000000000000000000000000000000611fd460085490565b10155b611ff457604051639662d10f60e01b815260040160405180910390fd5b806120125760405163a8f5642360e01b815260040160405180910390fd5b5f5b81811015612134575f83838381811061202f5761202f6150a3565b602090810292909201355f818152600d909352604090922091925033905061205683611f6c565b6001600160a01b03161482339091612093576040516311ea2dc560e21b815260048101929092526001600160a01b0316602482015260440161110d565b50505f828152600d6020526040902054610100900464ffffffffff164210158154839161010090910464ffffffffff16906120f1576040516332bf5eb960e01b8152600481019290925264ffffffffff16602482015260440161110d565b505060135461210d90600160a01b900463ffffffff16426150d0565b815464ffffffffff919091166101000265ffffffffff001990911617905550600101612014565b508181604051612145929190615441565b60405190819003812060155490917f2a4b33404e3919c2728c4a9d5fb0ae4927834d21292682c127780cdecd56c1e0905f90a3604080516080810190915260159080600281526020014264ffffffffff1681526020018484905060ff16815260200184846040516020016121ba929190615468565b60408051601f1981840301815291905290528154600181810184555f9384526020909320825160029283029091018054939490939192849260ff19169190849081111561220957612209614d41565b021790555060208201518154604084015160ff1666010000000000000266ff0000000000001964ffffffffff909316610100029290921666ffffffffffff001990911617178155606082015160018201906122649082615386565b5050506111f76132da565b5f6001600160a01b038216612299576040516322718ad960e21b81525f600482015260240161110d565b506001600160a01b03165f9081526003602052604090205490565b5f6122be83612d42565b9050610f19816122cf60018561547b565b613179565b6122dc612c63565b60165460ff166122ff5760405163f4f9876160e01b815260040160405180910390fd5b5f5b818110156114285761233883838381811061231e5761231e6150a3565b90506020020160208101906123339190614963565b612d42565b50600101612301565b600f546001600160a01b0316331461239b5760405162461bcd60e51b815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e657200000000000000000000604482015260640161110d565b600e80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff8116620100003381810292909217909355600f80546001600160a01b0319169055604051929091046001600160a01b03169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a350565b612424612c63565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b600e546201000090046001600160a01b03166001600160a01b0316336001600160a01b03161415801561248457506010546001600160a01b03163314155b156124c757600e5460105460405163061db9c160e01b81523360048201526001600160a01b0362010000909304831660248201529116604482015260640161110d565b6001600160a01b0381166124ee5760405163d92e233d60e01b815260040160405180910390fd5b601080546001600160a01b0319166001600160a01b0383169081179091556040519081527fd1a6a14209a385a964d036e404cb5cfb71f4000cdb03c9366292430787261be69060200160405180910390a150565b60606001805461112490614f67565b612559612c63565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6111f73383836133d6565b600e805460ff851691905f906125a190849061ffff16615494565b92506101000a81548161ffff021916908361ffff1602179055505f336040516020016125e5919060609190911b6bffffffffffffffffffffffff1916815260140190565b60405160208183030381529060405280519060200120905061262983837f000000000000000000000000000000000000000000000000000000000000000084613474565b6126465760405163c03d10bd60e01b815260040160405180910390fd5b6114b08461267560027f0000000000000000000000000000000000000000000000000000000000000000615090565b61348b565b612682612c63565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b601581815481106126b3575f80fd5b5f9182526020909120600290910201805460018201805460ff808416955064ffffffffff610100850416946601000000000000909404169291906126f690614f67565b80601f016020809104026020016040519081016040528092919081815260200182805461272290614f67565b801561276d5780601f106127445761010080835404028352916020019161276d565b820191905f5260205f20905b81548152906001019060200180831161275057829003601f168201915b5050505050905084565b61278284848461142d565b6114b08484848461369e565b5f818152600d6020526040902054606090829060ff166127c457604051631d0ebf5160e11b815260040161110d91815260200190565b50600b54604051630497486560e31b8152306004820152602481018490526001600160a01b03909116906324ba4328906044015f60405180830381865afa158015612811573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612838919081019061502c565b60405160200161284891906154ae565b6040516020818303038152906040529050919050565b5f808061286b84866150b7565b905080601460ff82168110156128a1576040516384343aaf60e01b815260ff92831660048201529116602482015260440161110d565b508590505b8160ff168160ff1610156128d1576128bd816137c4565b6128c790846150d0565b92506001016128a6565b5090949350505050565b6128e3612c63565b5f1982036128ef574791505b5f816001600160a01b0316836040515f6040518083038185875af1925050503d805f8114612938576040519150601f19603f3d011682016040523d82523d5f602084013e61293d565b606091505b505090508061142857604051634b202ef360e11b815260040160405180910390fd5b600b54604051630edb4ceb60e31b81523060048201526060916001600160a01b0316906376da6758906024015f60405180830381865afa1580156129a5573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526129cc919081019061502c565b6040516020016129dc91906154ae565b604051602081830303815290604052905090565b6129f8612c63565b61126c81613966565b7f0000000000000000000000000000000000000000000000000000000000000000421180612a5757507f0000000000000000000000000000000000000000000000000000000000000000612a5460085490565b10155b612a7457604051639662d10f60e01b815260040160405180910390fd5b6013546001600160a01b03163314612a9f5760405163c67976cd60e01b815260040160405180910390fd5b5f8211612abf57604051636b79a39b60e11b815260040160405180910390fd5b6015546040805184815261ffff841660208201526001600160a01b03861692917f9e4d88f3105da7ebb9f29636c0751d8d481d698d3c29ee421ae081f5864159db910160405180910390a36040805160808101909152601590805f81526020014264ffffffffff1681526020018460ff1681526020018584604051602001612b609291906001600160a01b0392909216825261ffff16602082015260400190565b60408051601f1981840301815291905290528154600181810184555f9384526020909320825160029283029091018054939490939192849260ff191691908490811115612baf57612baf614d41565b021790555060208201518154604084015160ff1666010000000000000266ff0000000000001964ffffffffff909316610100029290921666ffffffffffff00199091161717815560608201516001820190612c0a9082615386565b5050506114286132da565b61126c817f000000000000000000000000000000000000000000000000000000000000000061348b565b5f6001600160e01b0319821663780e9d6360e01b1480610f195750610f1982613a16565b600e546201000090046001600160a01b03163314612cc35760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015260640161110d565b565b5f818152600260205260408120546001600160a01b031680610f1957604051637e27328960e01b81526004810184905260240161110d565b6114288383836001613a65565b5f612d165f835f6130a6565b90506001600160a01b0381166111f757604051637e27328960e01b81526004810183905260240161110d565b600c80545f9182612d52836154f2565b9091555050600c80545f908152600d60205260409020805460ff1916600117905554612d7f908390613b87565b5050600c5490565b6015546014545f9182916001600160601b03165b606484108015612db3575081816001600160601b0316105b15613079575f6015826001600160601b031681548110612dd557612dd56150a3565b905f5260205f2090600202016040518060800160405290815f82015f9054906101000a900460ff166002811115612e0e57612e0e614d41565b6002811115612e1f57612e1f614d41565b81528154610100810464ffffffffff1660208301526601000000000000900460ff166040820152600182018054606090920191612e5b90614f67565b80601f0160208091040260200160405190810160405280929190818152602001828054612e8790614f67565b8015612ed25780601f10612ea957610100808354040283529160200191612ed2565b820191905f5260205f20905b815481529060010190602001808311612eb557829003601f168201915b505050505081525050905042816020015164ffffffffff1603612ef55750613079565b6064816040015160ff1686612f0a91906150d0565b1115612f165750613079565b6040810151612f289060ff16866150d0565b94505f87875f818110612f3d57612f3d6150a3565b905060200201358580612f4f906154f2565b9650612f5c60014361550a565b60408051602081019490945283019190915240606082015260800160408051601f19818403018152919052805160209091012090505f82516002811115612fa557612fa5614d41565b03612fc357612fbe836001600160601b03168383613be8565b61301f565b600182516002811115612fd857612fd8614d41565b03612ff157612fbe836001600160601b03168383613d28565b60028251600281111561300657613006614d41565b0361301f5761301f836001600160601b03168383614176565b60158361302b8161551d565b94506001600160601b031681548110613046576130466150a3565b5f91825260208220600290910201805466ffffffffffffff19168155906130706001830182614791565b50505050612d9b565b601480546bffffffffffffffffffffffff19166001600160601b0392909216919091179055505050505050565b5f5f6130b3858585614321565b90506001600160a01b03811661310f5761310a84600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b613132565b846001600160a01b0316816001600160a01b031614613132576131328185614413565b6001600160a01b03851661314e57613149846144a0565b613171565b846001600160a01b0316816001600160a01b031614613171576131718585614547565b949350505050565b5f828152600d602052604081205461319590839060ff166150b7565b905082601460ff83168110156131ca5760405163546c0a8160e11b8152600481019290925260ff16602482015260440161110d565b5050826131d684611f6c565b5f858152600d602090815260409182902054825160ff9182168152908616918101919091526001600160a01b0392909216917f1d7f8187aadfd68cdbf0f4b081a6146f430445529c78136441e455732aba3262910160405180910390a36040518381527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15f928352600d6020526040909220805460ff191660ff9093169290921790915550565b5f828152600d60205260408120546132a590839060ff1661547b565b905082600160ff83168111156131ca5760405163709c1e1760e01b8152600481019290925260ff16602482015260440161110d565b6010546040805160c0810182527f000000000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006020808301919091526001828401819052622625a060608401526080830181905283519182019093529182526001600160a01b0390921691639b1c385e9160a082019061337790614595565b8152506040518263ffffffff1660e01b81526004016133969190615547565b6020604051808303815f875af11580156133b2573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126c91906150e3565b6001600160a01b03821661340857604051630b61174360e31b81526001600160a01b038316600482015260240161110d565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b5f8261348186868561461b565b1495945050505050565b7f00000000000000000000000000000000000000000000000000000000000000004211806134e057507f00000000000000000000000000000000000000000000000000000000000000006134de60085490565b145b156134fe5760405163191858a160e31b815260040160405180910390fd5b5f61353e8360ff1661350f60085490565b613539907f000000000000000000000000000000000000000000000000000000000000000061550a565b61465c565b90505f61354b8383615079565b90508034101561356e57604051636d9294b160e11b815260040160405180910390fd5b5f5b8281101561358a5761358133612d42565b50600101613570565b505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826040515f6040518083038185875af1925050503d805f81146135f4576040519150601f19603f3d011682016040523d82523d5f602084013e6135f9565b606091505b505090508061361b57604051634b202ef360e11b815260040160405180910390fd5b5f613626833461550a565b90508015613696576040515f90339083908381818185875af1925050503d805f811461366d576040519150601f19603f3d011682016040523d82523d5f602084013e613672565b606091505b505090508061369457604051634b202ef360e11b815260040160405180910390fd5b505b505050505050565b6001600160a01b0383163b156114b057604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906136e09033908890879087906004016155a3565b6020604051808303815f875af192505050801561371a575060408051601f3d908101601f19168201909252613717918101906155d9565b60015b613781573d808015613747576040519150601f19603f3d011682016040523d82523d5f602084013e61374c565b606091505b5080515f0361377957604051633250574960e11b81526001600160a01b038516600482015260240161110d565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146137bd57604051633250574960e11b81526001600160a01b038516600482015260240161110d565b5050505050565b5f8160ff166001036137d857506001919050565b8160ff166002036137eb57506003919050565b8160ff166003036137fe57506005919050565b8160ff1660040361381157506008919050565b8160ff166005036138245750600b919050565b8160ff166006036138375750600f919050565b8160ff1660070361384a57506013919050565b8160ff1660080361385d57506017919050565b8160ff166009036138705750601b919050565b8160ff16600a0361388357506020919050565b8160ff16600b0361389657506024919050565b8160ff16600c036138a95750602a919050565b8160ff16600d036138bc5750602f919050565b8160ff16600e036138cf57506034919050565b8160ff16600f036138e25750603a919050565b8160ff166010036138f557506040919050565b8160ff1660110361390857506046919050565b8160ff1660120361391b5750604c919050565b8160ff1660130361392e57506053919050565b8160ff166014036139415750605a919050565b6040516384343aaf60e01b815260ff831660048201526014602482015260440161110d565b336001600160a01b038216036139be5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640161110d565b600f80546001600160a01b0319166001600160a01b03838116918217909255600e5460405191926201000090910416907fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278905f90a350565b5f6001600160e01b031982166380ac58cd60e01b1480613a4657506001600160e01b03198216635b5e139f60e01b145b80610f1957506301ffc9a760e01b6001600160e01b0319831614610f19565b8080613a7957506001600160a01b03821615155b15613b58575f613a8884612cc5565b90506001600160a01b03831615801590613ab45750826001600160a01b0316816001600160a01b031614155b8015613ae557506001600160a01b038082165f9081526005602090815260408083209387168352929052205460ff16155b15613b0e5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161110d565b8115613b565783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038216613bb057604051633250574960e11b81525f600482015260240161110d565b5f613bbc83835f6130a6565b90506001600160a01b03811615611428576040516339e3563760e11b81525f600482015260240161110d565b5f5f8360600151806020019051810190613c0291906155f4565b90925090505f5b846040015160ff1681101561369657604080516020808201879052818301849052825180830384018152606090920190925280519101205f90613c4f9061271090615621565b90508261ffff16811015613cc8575f613c6785612d42565b604080518281526020810185905261ffff8716818301526001606082015290519192506001600160a01b038716918a917f64edb56d9b9d09c1930872d499100352616ac89453eb1439bf0882dba2089485919081900360800190a350613d1f565b604080515f8082526020820184905261ffff861682840152606082015290516001600160a01b0386169189917f64edb56d9b9d09c1930872d499100352616ac89453eb1439bf0882dba20894859181900360800190a35b50600101613c09565b5f5f5f5f5f8660600151806020019051810190613d459190615803565b9398509196509450925090505f5b845181101561416b575f600d5f878481518110613d7257613d726150a3565b60209081029190910181015182528101919091526040015f9081205460ff16915081905b868481518110613da857613da86150a3565b602002602001015160ff1681101561412457600160ff8316111580613e1457505f6001600160a01b0316613e09898681518110613de757613de76150a3565b60200260200101515f908152600260205260409020546001600160a01b031690565b6001600160a01b0316145b15613ec857878481518110613e2b57613e2b6150a3565b6020026020010151896001600160a01b03168d7f0e49360a228136def6a0346b3613402fc57b3dbf5aa4c1068a6f32cbec7298ad613e748c8981518110613de757613de76150a3565b8a8981518110613e8657613e866150a3565b60200260200101515f5f8c8c81518110613ea257613ea26150a3565b6020026020010151604051613ebb9594939291906158cf565b60405180910390a461411c565b858481518110613eda57613eda6150a3565b602002602001015115613f775760048260ff1611613ef9576001613f04565b613f0460048361547b565b9150878481518110613f1857613f186150a3565b6020026020010151896001600160a01b03168d7f0e49360a228136def6a0346b3613402fc57b3dbf5aa4c1068a6f32cbec7298ad613f618c8981518110613de757613de76150a3565b6001805f8c8c81518110613ea257613ea26150a3565b5f613f8183611241565b60408051602081018e90529081018790526060810184905261ffff9190911691505f9061271090608001604051602081830303815290604052805190602001205f1c613fcd9190615621565b90508181101561408757613fee6001613fe6818761547b565b60ff16614673565b9350898681518110614002576140026150a3565b60200260200101518b6001600160a01b03168f7f0e49360a228136def6a0346b3613402fc57b3dbf5aa4c1068a6f32cbec7298ad61404b8e8b81518110613de757613de76150a3565b5f6001878e8e81518110614061576140616150a3565b602002602001015160405161407a9594939291906158cf565b60405180910390a4614119565b898681518110614099576140996150a3565b60200260200101518b6001600160a01b03168f7f0e49360a228136def6a0346b3613402fc57b3dbf5aa4c1068a6f32cbec7298ad6140e28e8b81518110613de757613de76150a3565b5f5f878e8e815181106140f7576140f76150a3565b60200260200101516040516141109594939291906158cf565b60405180910390a45b50505b600101613d96565b508160ff168160ff16101561416157614161878481518110614148576141486150a3565b6020026020010151828461415c919061547b565b613289565b5050600101613d53565b505050505050505050565b5f826060015180602001905181019061418f9190615911565b90505f5b81518110156137bd575f8282815181106141af576141af6150a3565b6020908102919091018101515f818152600d909252604082205490925081906141da9060ff16610f1f565b90925090505f6141ea838361550a565b6141f59060016150d0565b60408051602081018a9052908101879052606001604051602081830303815290604052805190602001205f1c61422b9190615621565b90505f61423882856150d0565b90505f61424486611f6c565b905085816001600160a01b03168c7f6ed7239bbd55b9214988b2a39a81505ba88b6404164be054f18fd818a72251db8560405161428391815260200190565b60405180910390a4811561430f576011546001600160a01b03166340c10f19826142b585670de0b6b3a7640000615079565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b1580156142f8575f5ffd5b505af115801561430a573d5f5f3e3d5ffd5b505050505b50506001909401935061419392505050565b5f828152600260205260408120546001600160a01b039081169083161561434d5761434d818486614681565b6001600160a01b03811615614387576143685f855f5f613a65565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b038516156143b5576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f61441d8361226f565b5f8381526007602052604090205490915080821461446e576001600160a01b0384165f9081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b505f9182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008545f906144b19060019061550a565b5f83815260096020526040812054600880549394509092849081106144d8576144d86150a3565b905f5260205f200154905080600883815481106144f7576144f76150a3565b5f91825260208083209091019290925582815260099091526040808220849055858252812055600880548061452e5761452e615943565b600190038181905f5260205f20015f9055905550505050565b5f60016145538461226f565b61455d919061550a565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b60607f92fd13387c7fe7befbc38d303d6468778fb9731bc4583f17d92989c6fcfdeaaa826040516024016145ce91511515815260200190565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199093169290921790915292915050565b5f81815b84811015614653576146498287878481811061463d5761463d6150a3565b905060200201356146e5565b915060010161461f565b50949350505050565b5f81831061466a578161466c565b825b9392505050565b5f81831161466a578161466c565b61468c838383614711565b611428576001600160a01b0383166146ba57604051637e27328960e01b81526004810182905260240161110d565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161110d565b5f8183106146ff575f82815260208490526040902061466c565b5f83815260208390526040902061466c565b5f6001600160a01b038316158015906131715750826001600160a01b0316846001600160a01b0316148061476957506001600160a01b038085165f9081526005602090815260408083209387168352929052205460ff165b806131715750505f908152600460205260409020546001600160a01b03908116911614919050565b50805461479d90614f67565b5f825580601f106147ac575050565b601f0160209004905f5260205f209081019061126c91905b808211156147d7575f81556001016147c4565b5090565b6001600160e01b03198116811461126c575f5ffd5b5f60208284031215614800575f5ffd5b813561466c816147db565b60ff8116811461126c575f5ffd5b5f60208284031215614829575f5ffd5b813561466c8161480b565b5f5b8381101561484e578181015183820152602001614836565b50505f910152565b5f815180845261486d816020860160208601614834565b601f01601f19169290920160200192915050565b602081525f61466c6020830184614856565b61ffff8116811461126c575f5ffd5b5f602082840312156148b2575f5ffd5b813561466c81614893565b5f602082840312156148cd575f5ffd5b5035919050565b6001600160a01b038116811461126c575f5ffd5b5f5f604083850312156148f9575f5ffd5b8235614904816148d4565b946020939093013593505050565b5f5f60408385031215614923575f5ffd5b8235915060208301356149358161480b565b809150509250929050565b5f60208284031215614950575f5ffd5b813563ffffffff8116811461466c575f5ffd5b5f60208284031215614973575f5ffd5b813561466c816148d4565b805182525f602082015160a0602085015261499c60a0850182614856565b905060408301516040850152606083015160608501526001600160a01b0360808401511660808501528091505092915050565b602081525f61466c602083018461497e565b5f5f83601f8401126149f1575f5ffd5b50813567ffffffffffffffff811115614a08575f5ffd5b6020830191508360208260051b8501011115611520575f5ffd5b5f5f5f60408486031215614a34575f5ffd5b83359250602084013567ffffffffffffffff811115614a51575f5ffd5b614a5d868287016149e1565b9497909650939450505050565b5f5f5f60608486031215614a7c575f5ffd5b8335614a87816148d4565b92506020840135614a97816148d4565b929592945050506040919091013590565b5f5f60408385031215614ab9575f5ffd5b50508035926020909101359150565b5f5f5f5f60408587031215614adb575f5ffd5b843567ffffffffffffffff811115614af1575f5ffd5b614afd878288016149e1565b909550935050602085013567ffffffffffffffff811115614b1c575f5ffd5b614b28878288016149e1565b95989497509550505050565b5f5f60208385031215614b45575f5ffd5b823567ffffffffffffffff811115614b5b575f5ffd5b614b67858286016149e1565b90969095509350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614bca57603f19878603018452614bb585835161497e565b94506020938401939190910190600101614b99565b50929695505050505050565b5f5f5f5f5f5f5f5f6080898b031215614bed575f5ffd5b883567ffffffffffffffff811115614c03575f5ffd5b614c0f8b828c016149e1565b909950975050602089013567ffffffffffffffff811115614c2e575f5ffd5b614c3a8b828c016149e1565b909750955050604089013567ffffffffffffffff811115614c59575f5ffd5b614c658b828c016149e1565b909550935050606089013567ffffffffffffffff811115614c84575f5ffd5b614c908b828c016149e1565b999c989b5096995094979396929594505050565b5f5f60408385031215614cb5575f5ffd5b8235614cc0816148d4565b915060208301356149358161480b565b801515811461126c575f5ffd5b5f5f60408385031215614cee575f5ffd5b8235614cf9816148d4565b9150602083013561493581614cd0565b5f5f5f60408486031215614d1b575f5ffd5b8335614d268161480b565b9250602084013567ffffffffffffffff811115614a51575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b5f60038610614d7257634e487b7160e01b5f52602160045260245ffd5b85825264ffffffffff8516602083015260ff8416604083015260806060830152614d9f6080830184614856565b9695505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614de657614de6614da9565b604052919050565b5f67ffffffffffffffff821115614e0757614e07614da9565b50601f01601f191660200190565b5f5f5f5f60808587031215614e28575f5ffd5b8435614e33816148d4565b93506020850135614e43816148d4565b925060408501359150606085013567ffffffffffffffff811115614e65575f5ffd5b8501601f81018713614e75575f5ffd5b8035614e88614e8382614dee565b614dbd565b818152886020838501011115614e9c575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f5f60408385031215614ece575f5ffd5b8235614cc08161480b565b5f5f60408385031215614eea575f5ffd5b823591506020830135614935816148d4565b5f5f60408385031215614f0d575f5ffd5b8235614f18816148d4565b91506020830135614935816148d4565b5f5f5f60608486031215614f3a575f5ffd5b8335614f45816148d4565b9250602084013591506040840135614f5c81614893565b809150509250925092565b600181811c90821680614f7b57607f821691505b602082108103614f9957634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f61ffff831680614fda57614fda614f9f565b8061ffff84160491505092915050565b5f82601f830112614ff9575f5ffd5b8151615007614e8382614dee565b81815284602083860101111561501b575f5ffd5b613171826020830160208701614834565b5f6020828403121561503c575f5ffd5b815167ffffffffffffffff811115615052575f5ffd5b61317184828501614fea565b5f6020828403121561506e575f5ffd5b815161466c816148d4565b8082028115828204841417610f1957610f19614fb3565b5f8261509e5761509e614f9f565b500490565b634e487b7160e01b5f52603260045260245ffd5b60ff8181168382160190811115610f1957610f19614fb3565b80820180821115610f1957610f19614fb3565b5f602082840312156150f3575f5ffd5b5051919050565b5f6020828403121561510a575f5ffd5b813561466c81614cd0565b5f5f8335601e1984360301811261512a575f5ffd5b83018035915067ffffffffffffffff821115615144575f5ffd5b602001915036819003821315611520575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b841515815260ff84166020820152606060408201525f614d9f606083018486615158565b8183525f6001600160fb1b038311156151bb575f5ffd5b8260051b80836020870137939093016020019392505050565b8183526020830192505f815f5b8481101561520b5781356151f481614cd0565b1515865260209586019591909101906001016151e1565b5093949350505050565b5f8383855260208501945060208460051b820101835f5b8681101561529e57838303601f19018852813536879003601e19018112615251575f5ffd5b860160208101903567ffffffffffffffff81111561526d575f5ffd5b80360382131561527b575f5ffd5b615286858284615158565b60209a8b019a9095509390930192505060010161522c565b50909695505050505050565b6001600160a01b038a16815260a060208201525f6152cc60a083018a8c6151a4565b828103604084015287815288906020015f5b898110156153085782356152f18161480b565b60ff168252602092830192909101906001016152de565b50838103606085015261531c81888a6151d4565b9150508281036080840152615332818587615215565b9c9b505050505050505050505050565b601f82111561142857805f5260205f20601f840160051c810160208510156153675750805b601f840160051c820191505b818110156137bd575f8155600101615373565b815167ffffffffffffffff8111156153a0576153a0614da9565b6153b4816153ae8454614f67565b84615342565b6020601f8211600181146153e6575f83156153cf5750848201515b5f19600385901b1c1916600184901b1784556137bd565b5f84815260208120601f198516915b8281101561541557878501518255602094850194600190920191016153f5565b508482101561543257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f6001600160fb1b03831115615455575f5ffd5b8260051b80858437919091019392505050565b602081525f6131716020830184866151a4565b60ff8281168282160390811115610f1957610f19614fb3565b61ffff8281168282160390811115610f1957610f19614fb3565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f82516154e581601d850160208701614834565b91909101601d0192915050565b5f6001820161550357615503614fb3565b5060010190565b81810381811115610f1957610f19614fb3565b5f6001600160601b0382166001600160601b03810361553e5761553e614fb3565b60010192915050565b60208152815160208201526020820151604082015261ffff604083015116606082015263ffffffff606083015116608082015263ffffffff60808301511660a08201525f60a083015160c08084015261317160e0840182614856565b6001600160a01b03851681526001600160a01b0384166020820152826040820152608060608201525f614d9f6080830184614856565b5f602082840312156155e9575f5ffd5b815161466c816147db565b5f5f60408385031215615605575f5ffd5b8251615610816148d4565b602084015190925061493581614893565b5f8261562f5761562f614f9f565b500690565b5f67ffffffffffffffff82111561564d5761564d614da9565b5060051b60200190565b5f82601f830112615666575f5ffd5b8151615674614e8382615634565b8082825260208201915060208360051b860101925085831115615695575f5ffd5b602085015b838110156156b257805183526020928301920161569a565b5095945050505050565b5f82601f8301126156cb575f5ffd5b81516156d9614e8382615634565b8082825260208201915060208360051b8601019250858311156156fa575f5ffd5b602085015b838110156156b25780516157128161480b565b8352602092830192016156ff565b5f82601f83011261572f575f5ffd5b815161573d614e8382615634565b8082825260208201915060208360051b86010192508583111561575e575f5ffd5b602085015b838110156156b257805161577681614cd0565b835260209283019201615763565b5f82601f830112615793575f5ffd5b81516157a1614e8382615634565b8082825260208201915060208360051b8601019250858311156157c2575f5ffd5b602085015b838110156156b257805167ffffffffffffffff8111156157e5575f5ffd5b6157f4886020838a0101614fea565b845250602092830192016157c7565b5f5f5f5f5f60a08688031215615817575f5ffd5b8551615822816148d4565b602087015190955067ffffffffffffffff81111561583e575f5ffd5b61584a88828901615657565b945050604086015167ffffffffffffffff811115615866575f5ffd5b615872888289016156bc565b935050606086015167ffffffffffffffff81111561588e575f5ffd5b61589a88828901615720565b925050608086015167ffffffffffffffff8111156158b6575f5ffd5b6158c288828901615784565b9150509295509295909350565b6001600160a01b03861681528415156020820152831515604082015282606082015260a060808201525f61590660a0830184614856565b979650505050505050565b5f60208284031215615921575f5ffd5b815167ffffffffffffffff811115615937575f5ffd5b61317184828501615657565b634e487b7160e01b5f52603160045260245ffdfea164736f6c634300081b000a000000000000000000000000a8e5d8553f584b8f62b065de783c696e925fd8e00000000000000000000000001bddd40ec706f87ec1f5bd52a827999aa90a521a000000000000000000000000f6b13f269a9500f3b476e7afd7e46019a3a366990000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000a8e5d8553f584b8f62b065de783c696e925fd8e000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000005c210ef41cd1a72de73bf76ec39637bb0d3d7bee9e1344a1247c8a1785d0a4681a27152bffdb43666ae5bf7d14d24a5efd44bf714de11436b19913145a0df75dc3923964df17ded242fd394f11c9e5823329ca3f00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8e5d8553f584b8f62b065de783c696e925fd8e000000000000000000000000024790f3c806da3b11b6696b496d7c84cd504dfda0000000000000000000000000000000000000000000000000000000000000010456767205761727320436869636b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034557430000000000000000000000000000000000000000000000000000000000