60806040526040516200110a3803806200110a8339810160408190526200002691620003fc565b62000035858585858562000040565b5050505050620005eb565b60006200004c6200012b565b90506001600160a01b03811615806200006d5750336001600160a01b038216145b6200007757600080fd5b62000082866200013f565b6200008d8562000152565b6200009884620001b5565b620000a3836200020f565b81511562000123576000620000b762000222565b6001600160a01b031683604051620000d09190620004e6565b600060405180830381855af49150503d80600081146200010d576040519150601f19603f3d011682016040523d82523d6000602084013e62000112565b606091505b50509050806200012157600080fd5b505b505050505050565b6000805160206200108a8339815191525490565b6000805160206200108a83398151915255565b6001600160a01b03811615806200017a57506200017a816200026560201b620003f11760201c565b620001a25760405162461bcd60e51b815260040162000199906200050d565b60405180910390fd5b600080516020620010aa83398151915255565b6001600160a01b0381161580620001dd5750620001dd816200026560201b620003f11760201c565b620001fc5760405162461bcd60e51b815260040162000199906200056a565b600080516020620010ca83398151915255565b600080516020620010ea83398151915255565b6000620002396200026b60201b620003f71760201c565b90506001600160a01b03811662000262576200025f6200027f60201b6200041c1760201c565b90505b90565b3b151590565b600080516020620010aa8339815191525490565b6000806200028c62000391565b905060006200029a620003a5565b9050620002b2826200026560201b620003f11760201c565b15620003855780156200034b57604051630b2bcd6760e01b81526001600160a01b03831690630b2bcd6790620002ed90849060040162000504565b60206040518083038186803b1580156200030657600080fd5b505afa1580156200031b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003419190620003d7565b9250505062000262565b816001600160a01b031663cda6415b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030657600080fd5b60009250505062000262565b600080516020620010ca8339815191525490565b600080516020620010ea8339815191525490565b80516001600160a01b0381168114620003d157600080fd5b92915050565b600060208284031215620003e9578081fd5b620003f58383620003b9565b9392505050565b600080600080600060a0868803121562000414578081fd5b620004208787620003b9565b9450620004318760208801620003b9565b9350620004428760408801620003b9565b6060870151608088015191945092506001600160401b038082111562000466578283fd5b818801915088601f8301126200047a578283fd5b81518181111562000489578384fd5b604051601f8201601f191681016020018381118282101715620004aa578586fd5b6040528181528382016020018b1015620004c2578485fd5b620004d5826020830160208701620005b8565b809450505050509295509295909350565b60008251620004fa818460208701620005b8565b9190910192915050565b90815260200190565b6020808252603b908201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60408201527f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000606082015260800190565b6020808252602e908201527f43616e6e6f7420736574206120666163746f727920746f2061206e6f6e2d636f60408201526d6e7472616374206164647265737360901b606082015260800190565b60005b83811015620005d5578181015183820152602001620005bb565b83811115620005e5576000848401525b50505050565b610a8f80620005fb6000396000f3fe6080604052600436106100595760003560e01c80630fd5b6ae146100705780631646cbb81461009b5780633f407fb9146100b05780636726eb16146100c35780639fea0eb1146100d6578063e405236b146100f657610068565b3661006857610066610116565b005b610066610116565b34801561007c57600080fd5b5061008561015b565b60405161009291906108e8565b60405180910390f35b3480156100a757600080fd5b5061008561016b565b6100666100be366004610742565b610175565b6100666100d136600461081f565b61024c565b3480156100e257600080fd5b506100666100f1366004610703565b610306565b34801561010257600080fd5b50610066610111366004610703565b6103b0565b61011f336103f1565b8015610129575036155b801561013757506108fc5a11155b1561014157610159565b610149610159565b610159610154610512565b610534565b565b6000610165610512565b90505b90565b6000610165610558565b600061017f610558565b90506001600160a01b038116158061019f5750336001600160a01b038216145b6101a857600080fd5b6101b18661057d565b6101ba856105a1565b6101c3846105fb565b6101cc83610655565b8151156102445760006101dd610512565b6001600160a01b0316836040516101f491906108af565b600060405180830381855af49150503d806000811461022f576040519150601f19603f3d011682016040523d82523d6000602084013e610234565b606091505b505090508061024257600080fd5b505b505050505050565b610254610558565b6001600160a01b0316336001600160a01b03161461028d5760405162461bcd60e51b815260040161028490610975565b60405180910390fd5b61029683610679565b6000836001600160a01b031683836040516102b292919061089f565b600060405180830381855af49150503d80600081146102ed576040519150601f19603f3d011682016040523d82523d6000602084013e6102f2565b606091505b505090508061030057600080fd5b50505050565b61030e610558565b6001600160a01b0316336001600160a01b03161461033e5760405162461bcd60e51b815260040161028490610975565b6001600160a01b0381166103645760405162461bcd60e51b81526004016102849061091f565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61038d610558565b8260405161039c9291906108fc565b60405180910390a16103ad8161057d565b50565b6103b8610558565b6001600160a01b0316336001600160a01b0316146103e85760405162461bcd60e51b815260040161028490610975565b6103ad81610679565b3b151590565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6000806104276106b9565b905060006104336106de565b905061043e826103f1565b156105075780156104ce57604051630b2bcd6760e01b81526001600160a01b03831690630b2bcd6790610475908490600401610916565b60206040518083038186803b15801561048d57600080fd5b505afa1580156104a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c59190610726565b92505050610168565b816001600160a01b031663cda6415b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561048d57600080fd5b600092505050610168565b600061051c6103f7565b90506001600160a01b0381166101685761016561041c565b3660008037600080366000845af43d6000803e808015610553573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6001600160a01b03811615806105bb57506105bb816103f1565b6105d75760405162461bcd60e51b815260040161028490610999565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6001600160a01b03811615806106155750610615816103f1565b6106315760405162461bcd60e51b8152600401610284906109f6565b7f7a45a402e4cb6e08ebc196f20f66d5d30e67285a2a8aa80503fa409e727a4af155565b7f4cd9b827ca535ceb0880425d70eff88561ecdf04dc32fcf7ff3b15c587f8a87055565b610682816105a1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7f7a45a402e4cb6e08ebc196f20f66d5d30e67285a2a8aa80503fa409e727a4af15490565b7f4cd9b827ca535ceb0880425d70eff88561ecdf04dc32fcf7ff3b15c587f8a8705490565b600060208284031215610714578081fd5b813561071f81610a44565b9392505050565b600060208284031215610737578081fd5b815161071f81610a44565b600080600080600060a08688031215610759578081fd5b853561076481610a44565b945060208681013561077581610a44565b9450604087013561078581610a44565b935060608701359250608087013567ffffffffffffffff808211156107a8578384fd5b818901915089601f8301126107bb578384fd5b8135818111156107c9578485fd5b604051601f8201601f19168101850183811182821017156107e8578687fd5b60405281815283820185018c10156107fe578586fd5b81858501868301378585838301015280955050505050509295509295909350565b600080600060408486031215610833578283fd5b833561083e81610a44565b9250602084013567ffffffffffffffff8082111561085a578384fd5b818601915086601f83011261086d578384fd5b81358181111561087b578485fd5b87602082850101111561088c578485fd5b6020830194508093505050509250925092565b6000828483379101908152919050565b60008251815b818110156108cf57602081860181015185830152016108b5565b818111156108dd5782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b90815260200190565b60208082526036908201527f43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f604082015275787920746f20746865207a65726f206164647265737360501b606082015260800190565b6020808252600a908201526937b7363c9030b236b4b760b11b604082015260600190565b6020808252603b908201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60408201527f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000606082015260800190565b6020808252602e908201527f43616e6e6f7420736574206120666163746f727920746f2061206e6f6e2d636f60408201526d6e7472616374206164647265737360901b606082015260800190565b6001600160a01b03811681146103ad57600080fdfea2646970667358221220104ce7c2a9f72fa427e9b5b18d3813d26f6736da9ddd812bc0293fd981cbc92164736f6c634300060c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc7a45a402e4cb6e08ebc196f20f66d5d30e67285a2a8aa80503fa409e727a4af14cd9b827ca535ceb0880425d70eff88561ecdf04dc32fcf7ff3b15c587f8a87000000000000000000000000035442a5eafb1dd68748e1279aac31be75d7ac1d60000000000000000000000002d7c1854f68ff40db69026ebab2b956a9a204f660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000