0x60806040523480156200001157600080fd5b5060405180604001604052806008815260200167417573444465466960c01b81525060405180604001604052806004815260200163105554d160e21b815250600062000062620000ed60201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508151620000c1906004906020850190620000f1565b508051620000d7906005906020840190620000f1565b50506006805460ff19166012179055506200018d565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013457805160ff191683800117855562000164565b8280016001018555821562000164579182015b828111156200016457825182559160200191906001019062000147565b506200017292915062000176565b5090565b5b8082111562000172576000815560010162000177565b6124e9806200019d6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80637ecebe0011610104578063a457c2d7116100a2578063dd62ed3e11610071578063dd62ed3e146103a5578063e7a324dc146103b8578063f1127ed8146103c0578063f2fde38b146103e1576101cf565b8063a457c2d714610359578063a9059cbb1461036c578063b4b5ea571461037f578063c3cda52014610392576101cf565b80638da5cb5b116100de5780638da5cb5b1461032357806395d89b411461032b5780639dc29fac14610333578063a0712d6814610346576101cf565b80637ecebe0014610300578063893d20e8146103135780638d4394ea1461031b576101cf565b806340c10f19116101715780636fcfff451161014b5780636fcfff45146102b257806370a08231146102d2578063715018a6146102e5578063782d6fe1146102ed576101cf565b806340c10f191461026a578063587cde1e1461027f5780635c19a95c1461029f576101cf565b806320606b70116101ad57806320606b701461022757806323b872dd1461022f578063313ce567146102425780633950935114610257576101cf565b806306fdde03146101d4578063095ea7b3146101f257806318160ddd14610212575b600080fd5b6101dc6103f4565b6040516101e99190611ece565b60405180910390f35b610205610200366004611d03565b6104a8565b6040516101e99190611e3a565b61021a6104c6565b6040516101e99190611e45565b61021a6104cc565b61020561023d366004611cc3565b6104f0565b61024a610591565b6040516101e991906123b9565b610205610265366004611d03565b61059a565b61027d610278366004611d03565b6105f5565b005b61029261028d366004611c74565b6106b1565b6040516101e99190611e19565b61027d6102ad366004611c74565b6106dc565b6102c56102c0366004611c74565b6106e9565b6040516101e99190612392565b61021a6102e0366004611c74565b610701565b61027d610729565b61021a6102fb366004611d03565b61080b565b61021a61030e366004611c74565b610ab6565b610292610ac8565b61027d610ad7565b610292610b7a565b6101dc610b96565b61027d610341366004611d03565b610c15565b610205610354366004611dcb565b610c92565b610205610367366004611d03565b610d20565b61020561037a366004611d03565b610d95565b61021a61038d366004611c74565b610da9565b61027d6103a0366004611d2d565b610e45565b61021a6103b3366004611c8f565b61109f565b61021a6110d7565b6103d36103ce366004611d8c565b6110fb565b6040516101e99291906123a3565b61027d6103ef366004611c74565b611128565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561049e5780601f106104735761010080835404028352916020019161049e565b820191906000526020600020905b81548152906001019060200180831161048157829003601f168201915b5050505050905090565b60006104bc6104b56111e8565b84846111ec565b5060015b92915050565b60035490565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b60006104fd8484846112fb565b610587846105096111e8565b6105828560405180606001604052806028815260200161241f6028913973ffffffffffffffffffffffffffffffffffffffff8a166000908152600260205260408120906105546111e8565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919061147a565b6111ec565b5060019392505050565b60065460ff1690565b60006104bc6105a76111e8565b8461058285600260006105b86111e8565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c1681529252902054906114c0565b6105fd6111e8565b73ffffffffffffffffffffffffffffffffffffffff1661061b610b7a565b73ffffffffffffffffffffffffffffffffffffffff1614610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612121565b60405180910390fd5b61067b82826114ff565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600760205260408120546106ad9216836115f4565b5050565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600760205260409020541690565b6106e633826117da565b50565b60096020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b6107316111e8565b73ffffffffffffffffffffffffffffffffffffffff1661074f610b7a565b73ffffffffffffffffffffffffffffffffffffffff161461079c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612121565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000438210610846576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106689061226d565b73ffffffffffffffffffffffffffffffffffffffff831660009081526009602052604090205463ffffffff16806108815760009150506104c0565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260086020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8601811685529252909120541683106109465773ffffffffffffffffffffffffffffffffffffffff841660009081526008602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052206001015490506104c0565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260086020908152604080832083805290915290205463ffffffff1683101561098e5760009150506104c0565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff161115610a7257600282820363ffffffff160481036109de611c39565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260086020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915290871415610a4d576020015194506104c09350505050565b805163ffffffff16871115610a6457819350610a6b565b6001820392505b50506109b4565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260086020908152604080832063ffffffff9094168352929052206001015491505092915050565b600a6020526000908152604090205481565b6000610ad2610b7a565b905090565b73441e04809c92cb43d3b1d0e2d8314408e5048bb15b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60058054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561049e5780601f106104735761010080835404028352916020019161049e565b610c1d6111e8565b73ffffffffffffffffffffffffffffffffffffffff16610c3b610b7a565b73ffffffffffffffffffffffffffffffffffffffff1614610c88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612121565b6106ad82826118a1565b6000610c9c6111e8565b73ffffffffffffffffffffffffffffffffffffffff16610cba610b7a565b73ffffffffffffffffffffffffffffffffffffffff1614610d07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612121565b610d18610d126111e8565b836114ff565b506001919050565b60006104bc610d2d6111e8565b846105828560405180606001604052806025815260200161246d6025913960026000610d576111e8565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919061147a565b60006104bc610da26111e8565b84846112fb565b73ffffffffffffffffffffffffffffffffffffffff811660009081526009602052604081205463ffffffff1680610de1576000610e3e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260086020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86011684529091529020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866610e706103f4565b80519060200120610e7f6119b9565b30604051602001610e939493929190611e7f565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf888888604051602001610ee49493929190611e4e565b60405160208183030381529060405280519060200120905060008282604051602001610f11929190611de3565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610f4e9493929190611eb0565b6020604051602081039080840390855afa158015610f70573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610fe8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612156565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a60205260409020805460018101909155891461104e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610668906122ca565b87421115611088576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106689061208d565b611092818b6117da565b505050505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60086020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6111306111e8565b73ffffffffffffffffffffffffffffffffffffffff1661114e610b7a565b73ffffffffffffffffffffffffffffffffffffffff161461119b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612121565b73ffffffffffffffffffffffffffffffffffffffff8116610aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890611ff9565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316611239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890611f9c565b73ffffffffffffffffffffffffffffffffffffffff8216611286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612327565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906112ee908590611e45565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890611f3f565b73ffffffffffffffffffffffffffffffffffffffff8216611395576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610668906121b3565b6113df816040518060600160405280602681526020016124476026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040902054919061147a565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461141b90826114c0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112ee908590611e45565b600081848411156114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106689190611ece565b505050900390565b600082820183811015610e3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612056565b73ffffffffffffffffffffffffffffffffffffffff821661154c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610668906120ea565b60035461155990826114c0565b60035573ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461158c90826114c0565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115e8908590611e45565b60405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116305750600081115b156117d55773ffffffffffffffffffffffffffffffffffffffff8316156117075773ffffffffffffffffffffffffffffffffffffffff831660009081526009602052604081205463ffffffff16908161168a5760006116e7565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260086020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87011684529091529020600101545b905060006116f582856119bd565b9050611703868484846119ff565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156117d55773ffffffffffffffffffffffffffffffffffffffff821660009081526009602052604081205463ffffffff16908161175c5760006117b9565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260086020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87011684529091529020600101545b905060006117c782856114c0565b9050611097858484846119ff565b505050565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600760205260408120549091169061180e84610701565b73ffffffffffffffffffffffffffffffffffffffff85811660008181526007602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461189b8284836115f4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff82166118ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612210565b611938816040518060600160405280602281526020016124926022913973ffffffffffffffffffffffffffffffffffffffff8516600090815260016020526040902054919061147a565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205560035461196b90826119bd565b60035560405160009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115e8908590611e45565b4690565b6000610e3e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061147a565b6000611a23436040518060600160405280603581526020016123ea60359139611bef565b905060008463ffffffff16118015611a97575073ffffffffffffffffffffffffffffffffffffffff8516600090815260086020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b15611aff5773ffffffffffffffffffffffffffffffffffffffff8516600090815260086020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff89011684529091529020600101829055611b98565b60408051808201825263ffffffff8084168252602080830186815273ffffffffffffffffffffffffffffffffffffffff8a166000818152600884528681208b861682528452868120955186549086167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000918216178755925160019687015590815260099092529390208054928801909116919092161790555b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051611be0929190612384565b60405180910390a25050505050565b6000816401000000008410611c31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106689190611ece565b509192915050565b604080518082019091526000808252602082015290565b803573ffffffffffffffffffffffffffffffffffffffff811681146104c057600080fd5b600060208284031215611c85578081fd5b610e3e8383611c50565b60008060408385031215611ca1578081fd5b611cab8484611c50565b9150611cba8460208501611c50565b90509250929050565b600080600060608486031215611cd7578081fd5b8335611ce2816123c7565b92506020840135611cf2816123c7565b929592945050506040919091013590565b60008060408385031215611d15578182fd5b611d1f8484611c50565b946020939093013593505050565b60008060008060008060c08789031215611d45578182fd5b611d4f8888611c50565b95506020870135945060408701359350606087013560ff81168114611d72578283fd5b9598949750929560808101359460a0909101359350915050565b60008060408385031215611d9e578182fd5b611da88484611c50565b9150602083013563ffffffff81168114611dc0578182fd5b809150509250929050565b600060208284031215611ddc578081fd5b5035919050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b90815260200190565b93845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b9384526020840192909252604083015273ffffffffffffffffffffffffffffffffffffffff16606082015260800190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b81811015611efa57858101830151858201604001528201611ede565b81811115611f0b5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526025908201527f42455032303a207472616e736665722066726f6d20746865207a65726f20616460408201527f6472657373000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460408201527f7265737300000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526027908201527f544f4b454e3a3a64656c656761746542795369673a207369676e61747572652060408201527f6578706972656400000000000000000000000000000000000000000000000000606082015260800190565b6020808252601f908201527f42455032303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526027908201527f544f4b454e3a3a64656c656761746542795369673a20696e76616c696420736960408201527f676e617475726500000000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260408201527f6573730000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f42455032303a206275726e2066726f6d20746865207a65726f2061646472657360408201527f7300000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526028908201527f544f4b454e3a3a6765745072696f72566f7465733a206e6f742079657420646560408201527f7465726d696e6564000000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f544f4b454e3a3a64656c656761746542795369673a20696e76616c6964206e6f60408201527f6e63650000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f42455032303a20617070726f766520746f20746865207a65726f20616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b918252602082015260400190565b63ffffffff91909116815260200190565b63ffffffff929092168252602082015260400190565b60ff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff811681146106e657600080fdfe544f4b454e3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747342455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f42455032303a206275726e20616d6f756e7420657863656564732062616c616e6365a26469706673582212207d05e3b78ababb216a3f2452f82c162bd6718173aea48002b7ea69533eadd8b264736f6c634300060c0033
0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80637ecebe0011610104578063a457c2d7116100a2578063dd62ed3e11610071578063dd62ed3e146103a5578063e7a324dc146103b8578063f1127ed8146103c0578063f2fde38b146103e1576101cf565b8063a457c2d714610359578063a9059cbb1461036c578063b4b5ea571461037f578063c3cda52014610392576101cf565b80638da5cb5b116100de5780638da5cb5b1461032357806395d89b411461032b5780639dc29fac14610333578063a0712d6814610346576101cf565b80637ecebe0014610300578063893d20e8146103135780638d4394ea1461031b576101cf565b806340c10f19116101715780636fcfff451161014b5780636fcfff45146102b257806370a08231146102d2578063715018a6146102e5578063782d6fe1146102ed576101cf565b806340c10f191461026a578063587cde1e1461027f5780635c19a95c1461029f576101cf565b806320606b70116101ad57806320606b701461022757806323b872dd1461022f578063313ce567146102425780633950935114610257576101cf565b806306fdde03146101d4578063095ea7b3146101f257806318160ddd14610212575b600080fd5b6101dc6103f4565b6040516101e99190611ece565b60405180910390f35b610205610200366004611d03565b6104a8565b6040516101e99190611e3a565b61021a6104c6565b6040516101e99190611e45565b61021a6104cc565b61020561023d366004611cc3565b6104f0565b61024a610591565b6040516101e991906123b9565b610205610265366004611d03565b61059a565b61027d610278366004611d03565b6105f5565b005b61029261028d366004611c74565b6106b1565b6040516101e99190611e19565b61027d6102ad366004611c74565b6106dc565b6102c56102c0366004611c74565b6106e9565b6040516101e99190612392565b61021a6102e0366004611c74565b610701565b61027d610729565b61021a6102fb366004611d03565b61080b565b61021a61030e366004611c74565b610ab6565b610292610ac8565b61027d610ad7565b610292610b7a565b6101dc610b96565b61027d610341366004611d03565b610c15565b610205610354366004611dcb565b610c92565b610205610367366004611d03565b610d20565b61020561037a366004611d03565b610d95565b61021a61038d366004611c74565b610da9565b61027d6103a0366004611d2d565b610e45565b61021a6103b3366004611c8f565b61109f565b61021a6110d7565b6103d36103ce366004611d8c565b6110fb565b6040516101e99291906123a3565b61027d6103ef366004611c74565b611128565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561049e5780601f106104735761010080835404028352916020019161049e565b820191906000526020600020905b81548152906001019060200180831161048157829003601f168201915b5050505050905090565b60006104bc6104b56111e8565b84846111ec565b5060015b92915050565b60035490565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b60006104fd8484846112fb565b610587846105096111e8565b6105828560405180606001604052806028815260200161241f6028913973ffffffffffffffffffffffffffffffffffffffff8a166000908152600260205260408120906105546111e8565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919061147a565b6111ec565b5060019392505050565b60065460ff1690565b60006104bc6105a76111e8565b8461058285600260006105b86111e8565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c1681529252902054906114c0565b6105fd6111e8565b73ffffffffffffffffffffffffffffffffffffffff1661061b610b7a565b73ffffffffffffffffffffffffffffffffffffffff1614610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612121565b60405180910390fd5b61067b82826114ff565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600760205260408120546106ad9216836115f4565b5050565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600760205260409020541690565b6106e633826117da565b50565b60096020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b6107316111e8565b73ffffffffffffffffffffffffffffffffffffffff1661074f610b7a565b73ffffffffffffffffffffffffffffffffffffffff161461079c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612121565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000438210610846576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106689061226d565b73ffffffffffffffffffffffffffffffffffffffff831660009081526009602052604090205463ffffffff16806108815760009150506104c0565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260086020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8601811685529252909120541683106109465773ffffffffffffffffffffffffffffffffffffffff841660009081526008602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052206001015490506104c0565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260086020908152604080832083805290915290205463ffffffff1683101561098e5760009150506104c0565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff161115610a7257600282820363ffffffff160481036109de611c39565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260086020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915290871415610a4d576020015194506104c09350505050565b805163ffffffff16871115610a6457819350610a6b565b6001820392505b50506109b4565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260086020908152604080832063ffffffff9094168352929052206001015491505092915050565b600a6020526000908152604090205481565b6000610ad2610b7a565b905090565b73441e04809c92cb43d3b1d0e2d8314408e5048bb15b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60058054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561049e5780601f106104735761010080835404028352916020019161049e565b610c1d6111e8565b73ffffffffffffffffffffffffffffffffffffffff16610c3b610b7a565b73ffffffffffffffffffffffffffffffffffffffff1614610c88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612121565b6106ad82826118a1565b6000610c9c6111e8565b73ffffffffffffffffffffffffffffffffffffffff16610cba610b7a565b73ffffffffffffffffffffffffffffffffffffffff1614610d07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612121565b610d18610d126111e8565b836114ff565b506001919050565b60006104bc610d2d6111e8565b846105828560405180606001604052806025815260200161246d6025913960026000610d576111e8565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919061147a565b60006104bc610da26111e8565b84846112fb565b73ffffffffffffffffffffffffffffffffffffffff811660009081526009602052604081205463ffffffff1680610de1576000610e3e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260086020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86011684529091529020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866610e706103f4565b80519060200120610e7f6119b9565b30604051602001610e939493929190611e7f565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf888888604051602001610ee49493929190611e4e565b60405160208183030381529060405280519060200120905060008282604051602001610f11929190611de3565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610f4e9493929190611eb0565b6020604051602081039080840390855afa158015610f70573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610fe8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612156565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a60205260409020805460018101909155891461104e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610668906122ca565b87421115611088576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106689061208d565b611092818b6117da565b505050505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60086020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6111306111e8565b73ffffffffffffffffffffffffffffffffffffffff1661114e610b7a565b73ffffffffffffffffffffffffffffffffffffffff161461119b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612121565b73ffffffffffffffffffffffffffffffffffffffff8116610aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890611ff9565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316611239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890611f9c565b73ffffffffffffffffffffffffffffffffffffffff8216611286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612327565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906112ee908590611e45565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890611f3f565b73ffffffffffffffffffffffffffffffffffffffff8216611395576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610668906121b3565b6113df816040518060600160405280602681526020016124476026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040902054919061147a565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461141b90826114c0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112ee908590611e45565b600081848411156114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106689190611ece565b505050900390565b600082820183811015610e3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612056565b73ffffffffffffffffffffffffffffffffffffffff821661154c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610668906120ea565b60035461155990826114c0565b60035573ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461158c90826114c0565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115e8908590611e45565b60405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116305750600081115b156117d55773ffffffffffffffffffffffffffffffffffffffff8316156117075773ffffffffffffffffffffffffffffffffffffffff831660009081526009602052604081205463ffffffff16908161168a5760006116e7565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260086020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87011684529091529020600101545b905060006116f582856119bd565b9050611703868484846119ff565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156117d55773ffffffffffffffffffffffffffffffffffffffff821660009081526009602052604081205463ffffffff16908161175c5760006117b9565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260086020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87011684529091529020600101545b905060006117c782856114c0565b9050611097858484846119ff565b505050565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600760205260408120549091169061180e84610701565b73ffffffffffffffffffffffffffffffffffffffff85811660008181526007602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461189b8284836115f4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff82166118ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612210565b611938816040518060600160405280602281526020016124926022913973ffffffffffffffffffffffffffffffffffffffff8516600090815260016020526040902054919061147a565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205560035461196b90826119bd565b60035560405160009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115e8908590611e45565b4690565b6000610e3e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061147a565b6000611a23436040518060600160405280603581526020016123ea60359139611bef565b905060008463ffffffff16118015611a97575073ffffffffffffffffffffffffffffffffffffffff8516600090815260086020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b15611aff5773ffffffffffffffffffffffffffffffffffffffff8516600090815260086020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff89011684529091529020600101829055611b98565b60408051808201825263ffffffff8084168252602080830186815273ffffffffffffffffffffffffffffffffffffffff8a166000818152600884528681208b861682528452868120955186549086167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000918216178755925160019687015590815260099092529390208054928801909116919092161790555b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051611be0929190612384565b60405180910390a25050505050565b6000816401000000008410611c31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106689190611ece565b509192915050565b604080518082019091526000808252602082015290565b803573ffffffffffffffffffffffffffffffffffffffff811681146104c057600080fd5b600060208284031215611c85578081fd5b610e3e8383611c50565b60008060408385031215611ca1578081fd5b611cab8484611c50565b9150611cba8460208501611c50565b90509250929050565b600080600060608486031215611cd7578081fd5b8335611ce2816123c7565b92506020840135611cf2816123c7565b929592945050506040919091013590565b60008060408385031215611d15578182fd5b611d1f8484611c50565b946020939093013593505050565b60008060008060008060c08789031215611d45578182fd5b611d4f8888611c50565b95506020870135945060408701359350606087013560ff81168114611d72578283fd5b9598949750929560808101359460a0909101359350915050565b60008060408385031215611d9e578182fd5b611da88484611c50565b9150602083013563ffffffff81168114611dc0578182fd5b809150509250929050565b600060208284031215611ddc578081fd5b5035919050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b90815260200190565b93845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b9384526020840192909252604083015273ffffffffffffffffffffffffffffffffffffffff16606082015260800190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b81811015611efa57858101830151858201604001528201611ede565b81811115611f0b5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526025908201527f42455032303a207472616e736665722066726f6d20746865207a65726f20616460408201527f6472657373000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460408201527f7265737300000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526027908201527f544f4b454e3a3a64656c656761746542795369673a207369676e61747572652060408201527f6578706972656400000000000000000000000000000000000000000000000000606082015260800190565b6020808252601f908201527f42455032303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526027908201527f544f4b454e3a3a64656c656761746542795369673a20696e76616c696420736960408201527f676e617475726500000000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260408201527f6573730000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f42455032303a206275726e2066726f6d20746865207a65726f2061646472657360408201527f7300000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526028908201527f544f4b454e3a3a6765745072696f72566f7465733a206e6f742079657420646560408201527f7465726d696e6564000000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f544f4b454e3a3a64656c656761746542795369673a20696e76616c6964206e6f60408201527f6e63650000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f42455032303a20617070726f766520746f20746865207a65726f20616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b918252602082015260400190565b63ffffffff91909116815260200190565b63ffffffff929092168252602082015260400190565b60ff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff811681146106e657600080fdfe544f4b454e3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747342455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f42455032303a206275726e20616d6f756e7420657863656564732062616c616e6365a26469706673582212207d05e3b78ababb216a3f2452f82c162bd6718173aea48002b7ea69533eadd8b264736f6c634300060c0033