60806040526040516109043803806109048339810160408190526100229161014e565b828161002d826100b7565b80511561009e576000826001600160a01b03168260405161004e9190610211565b600060405180830381855af49150503d8060008114610089576040519150601f19603f3d011682016040523d82523d6000602084013e61008e565b606091505b505090508061009c57600080fd5b505b506100a69050565b6100af82610124565b5050506102d2565b6001600160a01b03811615806100db57506100db8161014860201b6102ed1760201c565b6101005760405162461bcd60e51b81526004016100f79061022d565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b3b151590565b600080600060608486031215610162578283fd5b835161016d816102ba565b602085015190935061017e816102ba565b60408501519092506001600160401b038082111561019a578283fd5b818601915086601f8301126101ad578283fd5b8151818111156101bb578384fd5b604051601f8201601f1916810160200183811182821017156101db578586fd5b6040528181528382016020018910156101f2578485fd5b61020382602083016020870161028a565b809450505050509250925092565b6000825161022381846020870161028a565b9190910192915050565b6020808252603b908201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60408201527f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000606082015260800190565b60005b838110156102a557818101518382015260200161028d565b838111156102b4576000848401525b50505050565b6001600160a01b03811681146102cf57600080fd5b50565b610623806102e16000396000f3fe60806040526004361061004e5760003560e01c80630fd5b6ae146100655780631646cbb8146100905780636726eb16146100a55780639fea0eb1146100b8578063e405236b146100d85761005d565b3661005d5761005b6100f8565b005b61005b6100f8565b34801561007157600080fd5b5061007a61012f565b60405161008791906104e8565b60405180910390f35b34801561009c57600080fd5b5061007a61013e565b61005b6100b336600461044d565b610148565b3480156100c457600080fd5b5061005b6100d336600461041f565b610202565b3480156100e457600080fd5b5061005b6100f336600461041f565b6102ac565b610101336102ed565b801561010b575036155b156101155761012d565b61011d61012d565b61012d6101286102f3565b610318565b565b60006101396102f3565b905090565b600061013961033c565b61015061033c565b6001600160a01b0316336001600160a01b0316146101895760405162461bcd60e51b81526004016101809061056c565b60405180910390fd5b61019283610361565b6000836001600160a01b031683836040516101ae9291906104d8565b600060405180830381855af49150503d80600081146101e9576040519150601f19603f3d011682016040523d82523d6000602084013e6101ee565b606091505b50509050806101fc57600080fd5b50505050565b61020a61033c565b6001600160a01b0316336001600160a01b03161461023a5760405162461bcd60e51b81526004016101809061056c565b6001600160a01b0381166102605760405162461bcd60e51b815260040161018090610516565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61028961033c565b826040516102989291906104fc565b60405180910390a16102a9816103a1565b50565b6102b461033c565b6001600160a01b0316336001600160a01b0316146102e45760405162461bcd60e51b81526004016101809061056c565b6102a981610361565b3b151590565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610337573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61036a816103c5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6001600160a01b03811615806103df57506103df816102ed565b6103fb5760405162461bcd60e51b815260040161018090610590565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b600060208284031215610430578081fd5b81356001600160a01b0381168114610446578182fd5b9392505050565b600080600060408486031215610461578182fd5b83356001600160a01b0381168114610477578283fd5b9250602084013567ffffffffffffffff80821115610493578384fd5b818601915086601f8301126104a6578384fd5b8135818111156104b4578485fd5b8760208285010111156104c5578485fd5b6020830194508093505050509250925092565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b60208082526036908201527f43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f604082015275787920746f20746865207a65726f206164647265737360501b606082015260800190565b6020808252600a908201526937b7363c9030b236b4b760b11b604082015260600190565b6020808252603b908201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60408201527f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000060608201526080019056fea26469706673582212209ab909b19d269de0f9f4fa855dba241af5e086e8187ddd442a0b304006e2f64264736f6c634300060c0033000000000000000000000000fae467238ed1aa9d043003a98acbc04895e949b7000000000000000000000000f26d94d535107a5e0c5a24f6ce3edcc8352f01e200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000