0x608060405234801561001057600080fd5b50611362806100206000396000f3fe6080604052600436106100f35760003560e01c80637a78b9c71161008a578063bc4b336511610059578063bc4b336514610294578063d6c9b6a5146102b4578063db6b5246146102d4578063f2fde38b146102dc57600080fd5b80637a78b9c7146102075780638129fc1c146102275780638da5cb5b1461023c578063b91816111461026457600080fd5b80634f065632116100c65780634f065632146101625780634fb2e45d14610182578063715018a6146101a25780637729d644146101b757600080fd5b8063143531c0146100f85780632d1fb3891461011a578063447e346f1461013a57806347e7ef2414610142575b600080fd5b34801561010457600080fd5b50610118610113366004610f7b565b6102fc565b005b34801561012657600080fd5b506101186101353660046110b1565b6103d0565b610118610403565b34801561014e57600080fd5b5061011861015d3660046110e9565b610434565b34801561016e57600080fd5b5061011861017d366004611040565b6104db565b34801561018e57600080fd5b5061011861019d366004610f5f565b610667565b3480156101ae57600080fd5b506101186106db565b3480156101c357600080fd5b506101f26101d2366004611117565b805160208183018101805160668252928201919093012091525460ff1681565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b50610118610222366004610fa6565b61072b565b34801561023357600080fd5b506101186108ad565b34801561024857600080fd5b506033546040516001600160a01b0390911681526020016101fe565b34801561027057600080fd5b506101f261027f366004610f5f565b60656020526000908152604090205460ff1681565b3480156102a057600080fd5b506101186102af3660046110e9565b6109d7565b3480156102c057600080fd5b506101186102cf366004611000565b610a1f565b610118610a67565b3480156102e857600080fd5b506101186102f7366004610f5f565b610aa1565b3360009081526065602052604090205460ff166103345760405162461bcd60e51b815260040161032b90611220565b60405180910390fd5b8047101561037b5760405162461bcd60e51b8152602060048201526014602482015273494e53554646494349454e545f42414c414e434560601b604482015260640161032b565b6040516001600160a01b038316908290600081818185875af1925050503d80600081146103c4576040519150601f19603f3d011682016040523d82523d6000602084013e6103c9565b606091505b5050505050565b6103d8610b17565b6001600160a01b03919091166000908152606560205260409020805460ff1916911515919091179055565b3360009081526065602052604090205460ff166104325760405162461bcd60e51b815260040161032b90611220565b565b6104496001600160a01b038316333084610b71565b6001600160a01b0382166104975760405162461bcd60e51b815260206004820152601560248201527410931050d2d213d31157d393d517d0531313d5d151605a1b604482015260640161032b565b6040518181526001600160a01b0383169033907f573284f4c36da6a8d8d84cd06662235f8a770cc98e8c80e304b8f382fdc3dca29060200160405180910390a35050565b3360009081526065602052604090205460ff1661050a5760405162461bcd60e51b815260040161032b90611220565b8181806105555760405162461bcd60e51b815260206004820152601960248201527815da5d1a191c985dd85b081251081a5cc81c995c5d5a5c9959603a1b604482015260640161032b565b606682826040516105679291906111dd565b9081526040519081900360200190205460ff16156105c75760405162461bcd60e51b815260206004820152601f60248201527f5769746864726177616c20494420416c72656164792070726f63657373656400604482015260640161032b565b6105db6001600160a01b0388168787610be2565b866001600160a01b0316866001600160a01b03167fe4f4f1fb3534fe80225d336f6e5a73007dc992e5f6740152bf13ed2a08f3851a87878760405161062293929190611291565b60405180910390a360016066838360405161063e9291906111dd565b908152604051908190036020019020805491151560ff1990921691909117905550505050505050565b61066f610b17565b6001600160a01b03811660009081526065602081905260408220805460ff19166001179055816106a76033546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556106d881610aa1565b50565b6106e3610b17565b60405162461bcd60e51b815260206004820152601c60248201527f556e61626c6520746f2072656e6f756e6365206f776e65727368697000000000604482015260640161032b565b3360009081526065602052604090205460ff1661075a5760405162461bcd60e51b815260040161032b90611220565b8181806107a55760405162461bcd60e51b815260206004820152601960248201527815da5d1a191c985dd85b081251081a5cc81c995c5d5a5c9959603a1b604482015260640161032b565b606682826040516107b79291906111dd565b9081526040519081900360200190205460ff16156108175760405162461bcd60e51b815260206004820152601f60248201527f5769746864726177616c20494420416c72656164792070726f63657373656400604482015260640161032b565b61082186866102fc565b60006001600160a01b0316866001600160a01b03167fe4f4f1fb3534fe80225d336f6e5a73007dc992e5f6740152bf13ed2a08f3851a87878760405161086993929190611291565b60405180910390a36001606683836040516108859291906111dd565b908152604051908190036020019020805491151560ff19909216919091179055505050505050565b600054610100900460ff16158080156108cd5750600054600160ff909116105b806108e75750303b1580156108e7575060005460ff166001145b61094a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161032b565b6000805460ff19166001179055801561096d576000805461ff0019166101001790555b610975610c12565b336000908152606560205260409020805460ff1916600117905580156106d8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b3360009081526065602052604090205460ff16610a065760405162461bcd60e51b815260040161032b90611220565b610a1b6001600160a01b038316333084610b71565b5050565b3360009081526065602052604090205460ff16610a4e5760405162461bcd60e51b815260040161032b90611220565b610a626001600160a01b0384168383610be2565b505050565b60405134815260009033907f573284f4c36da6a8d8d84cd06662235f8a770cc98e8c80e304b8f382fdc3dca29060200160405180910390a3565b610aa9610b17565b6001600160a01b038116610b0e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161032b565b6106d881610c41565b6033546001600160a01b031633146104325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161032b565b6040516001600160a01b0380851660248301528316604482015260648101829052610bdc9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610c93565b50505050565b6040516001600160a01b038316602482015260448101829052610a6290849063a9059cbb60e01b90606401610ba5565b600054610100900460ff16610c395760405162461bcd60e51b815260040161032b90611246565b610432610d65565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000610ce8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610d959092919063ffffffff16565b805190915015610a625780806020019051810190610d0691906110fb565b610a625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161032b565b600054610100900460ff16610d8c5760405162461bcd60e51b815260040161032b90611246565b61043233610c41565b6060610da48484600085610dae565b90505b9392505050565b606082471015610e0f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161032b565b6001600160a01b0385163b610e665760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161032b565b600080866001600160a01b03168587604051610e8291906111c1565b60006040518083038185875af1925050503d8060008114610ebf576040519150601f19603f3d011682016040523d82523d6000602084013e610ec4565b606091505b5091509150610ed4828286610edf565b979650505050505050565b60608315610eee575081610da7565b825115610efe5782518084602001fd5b8160405162461bcd60e51b815260040161032b91906111ed565b60008083601f840112610f29578182fd5b50813567ffffffffffffffff811115610f40578182fd5b602083019150836020828501011115610f5857600080fd5b9250929050565b600060208284031215610f70578081fd5b8135610da781611309565b60008060408385031215610f8d578081fd5b8235610f9881611309565b946020939093013593505050565b60008060008060608587031215610fbb578182fd5b8435610fc681611309565b935060208501359250604085013567ffffffffffffffff811115610fe8578283fd5b610ff487828801610f18565b95989497509550505050565b600080600060608486031215611014578283fd5b833561101f81611309565b9250602084013561102f81611309565b929592945050506040919091013590565b600080600080600060808688031215611057578081fd5b853561106281611309565b9450602086013561107281611309565b935060408601359250606086013567ffffffffffffffff811115611094578182fd5b6110a088828901610f18565b969995985093965092949392505050565b600080604083850312156110c3578182fd5b82356110ce81611309565b915060208301356110de8161131e565b809150509250929050565b60008060408385031215610f8d578182fd5b60006020828403121561110c578081fd5b8151610da78161131e565b600060208284031215611128578081fd5b813567ffffffffffffffff8082111561113f578283fd5b818401915084601f830112611152578283fd5b813581811115611164576111646112f3565b604051601f8201601f19908116603f0116810190838211818310171561118c5761118c6112f3565b816040528281528760208487010111156111a4578586fd5b826020860160208301379182016020019490945295945050505050565b600082516111d38184602087016112c7565b9190910192915050565b8183823760009101908152919050565b602081526000825180602084015261120c8160408501602087016112c7565b601f01601f19169190910160400192915050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60005b838110156112e25781810151838201526020016112ca565b83811115610bdc5750506000910152565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146106d857600080fd5b80151581146106d857600080fdfea2646970667358221220bd300fca77db97945185b1a5d1cae2d3d4e8fa0b9c9469f4fcb83f6a3c50228664736f6c63430008040033