0x6080604052600436106102765760003560e01c8063735de9f71161014f578063c3cda520116100c1578063e7a324dc1161007a578063e7a324dc1461082a578063e8aa3d9b1461085e578063f1127ed81461087e578063f160d369146108e2578063f275f64b14610902578063f2fde38b1461092257600080fd5b8063c3cda52014610744578063c816841b14610764578063c851cc3214610784578063d4c989d3146107a4578063dd62ed3e146107c4578063df8408fe1461080a57600080fd5b806395d89b411161011357806395d89b411461069a5780639dc29fac146106af578063a457c2d7146106cf578063a9059cbb146106ef578063a9e757231461070f578063b4b5ea571461072457600080fd5b8063735de9f7146105ef578063782d6fe11461060f5780637ecebe001461062f5780638da5cb5b1461065c5780638f6f63ba1461067a57600080fd5b80634e8c9f90116101e857806362e546f9116101ac57806362e546f9146104ee578063658c27a914610503578063670babe01461053c5780636fcfff451461055c57806370a08231146105a4578063715018a6146105da57600080fd5b80634e8c9f901461042757806351bc3c85146104475780635342acb41461045c578063587cde1e146104955780635c19a95c146104ce57600080fd5b806327c8f8351161023a57806327c8f83514610350578063313ce5671461038857806332cb6b0c146103a457806333767911146103c557806339509351146103e7578063469048401461040757600080fd5b806306fdde0314610282578063095ea7b3146102ad57806318160ddd146102dd57806320606b70146102fc57806323b872dd1461033057600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610942565b6040516102a49190612ab9565b60405180910390f35b3480156102b957600080fd5b506102cd6102c8366004612962565b6109d4565b60405190151581526020016102a4565b3480156102e957600080fd5b506002545b6040519081526020016102a4565b34801561030857600080fd5b506102ee7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b34801561033c57600080fd5b506102cd61034b3660046128ec565b6109eb565b34801561035c57600080fd5b50600b54610370906001600160a01b031681565b6040516001600160a01b0390911681526020016102a4565b34801561039457600080fd5b50604051601281526020016102a4565b3480156103b057600080fd5b506102ee6c01431e0fae6d7217caa000000081565b3480156103d157600080fd5b506103e56103e0366004612aa0565b610aa1565b005b3480156103f357600080fd5b506102cd610402366004612962565b610b2f565b34801561041357600080fd5b50600a54610370906001600160a01b031681565b34801561043357600080fd5b506103e5610442366004612a42565b610b66565b34801561045357600080fd5b506103e5610c10565b34801561046857600080fd5b506102cd610477366004612879565b6001600160a01b03166000908152600c602052604090205460ff1690565b3480156104a157600080fd5b506103706104b0366004612879565b6001600160a01b039081166000908152601060205260409020541690565b3480156104da57600080fd5b506103e56104e9366004612879565b610c59565b3480156104fa57600080fd5b506103e5610c66565b34801561050f57600080fd5b506102cd61051e366004612879565b6001600160a01b03166000908152600d602052604090205460ff1690565b34801561054857600080fd5b506103e5610557366004612a5d565b610ce3565b34801561056857600080fd5b5061058f610577366004612879565b60126020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016102a4565b3480156105b057600080fd5b506102ee6105bf366004612879565b6001600160a01b031660009081526020819052604090205490565b3480156105e657600080fd5b506103e5610dd0565b3480156105fb57600080fd5b50600854610370906001600160a01b031681565b34801561061b57600080fd5b506102ee61062a366004612962565b610e59565b34801561063b57600080fd5b506102ee61064a366004612879565b60136020526000908152604090205481565b34801561066857600080fd5b506005546001600160a01b0316610370565b34801561068657600080fd5b506103e561069536600461292d565b6110be565b3480156106a657600080fd5b50610297611128565b3480156106bb57600080fd5b506103e56106ca366004612962565b611137565b3480156106db57600080fd5b506102cd6106ea366004612962565b611180565b3480156106fb57600080fd5b506102cd61070a366004612962565b61121b565b34801561071b57600080fd5b506102ee611228565b34801561073057600080fd5b506102ee61073f366004612879565b611260565b34801561075057600080fd5b506103e561075f36600461298e565b6112d5565b34801561077057600080fd5b50600954610370906001600160a01b031681565b34801561079057600080fd5b506103e561079f366004612879565b6115a3565b3480156107b057600080fd5b506103e56107bf36600461292d565b6117a9565b3480156107d057600080fd5b506102ee6107df3660046128b3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561081657600080fd5b506103e561082536600461292d565b611813565b34801561083657600080fd5b506102ee7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b34801561086a57600080fd5b506103e5610879366004612a27565b61187d565b34801561088a57600080fd5b506108c66108993660046129f0565b60116020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff90931683526020830191909152016102a4565b3480156108ee57600080fd5b506103e56108fd366004612879565b6118da565b34801561090e57600080fd5b506103e561091d366004612a27565b611946565b34801561092e57600080fd5b506103e561093d366004612879565b6119d6565b60606003805461095190612ca3565b80601f016020809104026020016040519081016040528092919081815260200182805461097d90612ca3565b80156109ca5780601f1061099f576101008083540402835291602001916109ca565b820191906000526020600020905b8154815290600101906020018083116109ad57829003601f168201915b5050505050905090565b60006109e1338484611ad6565b5060015b92915050565b60006109f8848484611bfb565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a825760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610a968533610a918685612c67565b611ad6565b506001949350505050565b6005546001600160a01b0316331480610ac457506006546001600160a01b031633145b610ae05760405162461bcd60e51b8152600401610a7990612b0e565b600654600160a01b900461ffff16811115610afa57600080fd5b600654610b2990600160a01b900461ffff16610b236c01431e0fae6d7217caa000000084611ecb565b90611ed7565b60075550565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109e1918590610a91908690612bda565b6005546001600160a01b0316331480610b8957506006546001600160a01b031633145b610ba55760405162461bcd60e51b8152600401610a7990612b0e565b60065461ffff600160a01b90910481169082161115610bee5760405162461bcd60e51b8152602060048201526005602482015264217261746560d81b6044820152606401610a79565b6006805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b6005546001600160a01b0316331480610c3357506006546001600160a01b031633145b610c4f5760405162461bcd60e51b8152600401610a7990612b0e565b610c57611ee3565b565b610c633382611ff9565b50565b6005546001600160a01b0316331480610c8957506006546001600160a01b031633145b610ca55760405162461bcd60e51b8152600401610a7990612b0e565b600a5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610cdf573d6000803e3d6000fd5b5050565b6005546001600160a01b0316331480610d0657506006546001600160a01b031633145b610d225760405162461bcd60e51b8152600401610a7990612b0e565b600654600160a01b900461ffff1681610d3b8486612bb4565b610d459190612bb4565b61ffff161115610d815760405162461bcd60e51b81526020600482015260076024820152662176616c75657360c81b6044820152606401610a79565b6006805465ffff0000ffff60b01b1916600160d01b61ffff9586160261ffff60b01b191617600160b01b938516939093029290921761ffff60c01b1916600160c01b9190931602919091179055565b6005546001600160a01b0316331480610df357506006546001600160a01b031633145b610e0f5760405162461bcd60e51b8152600401610a7990612b0e565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6000438210610eba5760405162461bcd60e51b815260206004820152602760248201527f4d4152533a3a6765745072696f72566f7465733a206e6f742079657420646574604482015266195c9b5a5b995960ca1b6064820152608401610a79565b6001600160a01b03831660009081526012602052604090205463ffffffff1680610ee85760009150506109e5565b6001600160a01b03841660009081526011602052604081208491610f0d600185612c7e565b63ffffffff90811682526020820192909252604001600020541611610f76576001600160a01b038416600090815260116020526040812090610f50600184612c7e565b63ffffffff1663ffffffff168152602001908152602001600020600101549150506109e5565b6001600160a01b038416600090815260116020908152604080832083805290915290205463ffffffff16831015610fb15760009150506109e5565b600080610fbf600184612c7e565b90505b8163ffffffff168163ffffffff1611156110875760006002610fe48484612c7e565b610fee9190612c25565b610ff89083612c7e565b6001600160a01b038816600090815260116020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915291925087141561105b576020015194506109e59350505050565b805163ffffffff1687111561107257819350611080565b61107d600183612c7e565b92505b5050610fc2565b506001600160a01b038516600090815260116020908152604080832063ffffffff9094168352929052206001015491505092915050565b6005546001600160a01b03163314806110e157506006546001600160a01b031633145b6110fd5760405162461bcd60e51b8152600401610a7990612b0e565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b60606004805461095190612ca3565b6005546001600160a01b031633148061115a57506006546001600160a01b031633145b6111765760405162461bcd60e51b8152600401610a7990612b0e565b610cdf8282612072565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156112025760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a79565b6112113385610a918685612c67565b5060019392505050565b60006109e1338484611bfb565b60065460009061125b9061ffff600160a01b8204811691610b2391600160e01b9091041661125560025490565b90611ecb565b905090565b6001600160a01b03811660009081526012602052604081205463ffffffff168061128b5760006112ce565b6001600160a01b0383166000908152601160205260408120906112af600184612c7e565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866611300610942565b8051906020012061130e4690565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a90528251808503909101815261014084019092528151919093012061190160f01b610160830152610162820183905261018282018190529192506000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa15801561143a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114ac5760405162461bcd60e51b815260206004820152602660248201527f4d4152533a3a64656c656761746542795369673a20696e76616c6964207369676044820152656e617475726560d01b6064820152608401610a79565b6001600160a01b03811660009081526013602052604081208054916114d083612cde565b91905055891461152d5760405162461bcd60e51b815260206004820152602260248201527f4d4152533a3a64656c656761746542795369673a20696e76616c6964206e6f6e604482015261636560f01b6064820152608401610a79565b8742111561158c5760405162461bcd60e51b815260206004820152602660248201527f4d4152533a3a64656c656761746542795369673a207369676e617475726520656044820152651e1c1a5c995960d21b6064820152608401610a79565b611596818b611ff9565b505050505b505050505050565b6005546001600160a01b03163314806115c657506006546001600160a01b031633145b6115e25760405162461bcd60e51b8152600401610a7990612b0e565b600880546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b15801561163657600080fd5b505afa15801561164a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166e9190612896565b6001600160a01b031663e6a4390530600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156116cb57600080fd5b505afa1580156116df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117039190612896565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561174957600080fd5b505afa15801561175d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117819190612896565b600980546001600160a01b0319166001600160a01b03929092169182179055610c6357600080fd5b6005546001600160a01b03163314806117cc57506006546001600160a01b031633145b6117e85760405162461bcd60e51b8152600401610a7990612b0e565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633148061183657506006546001600160a01b031633145b6118525760405162461bcd60e51b8152600401610a7990612b0e565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314806118a057506006546001600160a01b031633145b6118bc5760405162461bcd60e51b8152600401610a7990612b0e565b600b8054911515600160a81b0260ff60a81b19909216919091179055565b600a546001600160a01b031633146119245760405162461bcd60e51b815260206004820152600d60248201526c2170726576206164647265737360981b6044820152606401610a79565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633148061196957506006546001600160a01b031633145b6119855760405162461bcd60e51b8152600401610a7990612b0e565b600e805460ff191682151590811790915560011415610c635760068054600160e01b61ffff600160a01b8304160261ffff60e01b19909116179055600b805460ff60a81b1916600160a81b17905550565b6005546001600160a01b03163314806119f957506006546001600160a01b031633145b611a155760405162461bcd60e51b8152600401610a7990612b0e565b6001600160a01b038116611a7a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a79565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611b385760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a79565b6001600160a01b038216611b995760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a79565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600e54839060ff1680611c2657506001600160a01b0381166000908152600f602052604090205460ff165b611c5e5760405162461bcd60e51b8152602060048201526009602482015268217472616461626c6560b81b6044820152606401610a79565b600b54600160a81b900460ff1615156001148015611c865750600b54600160a01b900460ff16155b8015611c9c57506008546001600160a01b031615155b8015611cb257506009546001600160a01b031615155b8015611ccc57506009546001600160a01b03858116911614155b8015611ce657506005546001600160a01b03858116911614155b8015611cfb57506001600160a01b0384163014155b8015611d1557506008546001600160a01b03858116911614155b15611d2257611d22611ee3565b6001600160a01b0384166000908152600d602052604090205460ff16611d9057611d4a611228565b821115611d905760405162461bcd60e51b8152602060048201526014602482015273195e18d95959081b585e081d1e08185b5bdd5b9d60621b6044820152606401610a79565b6001600160a01b0384166000908152600c602052604090205460ff1615611dc157611dbc8484846121c1565b611ec5565b600654600090611deb9061ffff600160a01b8204811691610b23918791600160b01b900416611ecb565b600654909150600090611e189061ffff600160a01b8204811691610b23918891600160c01b900416611ecb565b6009549091506000906001600160a01b0387811691161415611e5e57600654611e5b9061ffff600160a01b8204811691610b23918991600160c01b900416611ecb565b90505b611e7481611e6e84818988612399565b90612399565b9450611e818787876121c1565b8215611e9257611e928730856121c1565b8115611ea357611ea38730846121c1565b8015611ec157600b54611ec19088906001600160a01b0316836121c1565b5050505b50505050565b60006112ce8284612c48565b60006112ce8284612c11565b600b805460ff60a01b1916600160a01b1790556006805465ffffffffffff60b01b19811690915561ffff600160b01b8204811691600160c01b8104821691600160d01b909104166000611f4b306001600160a01b031660009081526020819052604090205490565b90506007548110611f5b57506007545b611f64816123a5565b600a546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611f9d573d6000803e3d6000fd5b50506006805463ffffffff60b01b1916600160b01b61ffff9586160261ffff60c01b191617600160c01b938516939093029290921761ffff60d01b1916600160d01b9190931602919091179055600b805460ff60a01b19169055565b6001600160a01b038281166000818152601060208181526040808420805485845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611ec5828483612510565b6001600160a01b0382166120d25760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a79565b6001600160a01b038216600090815260208190526040902054818110156121465760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a79565b6121508282612c67565b6001600160a01b0384166000908152602081905260408120919091556002805484929061217e908490612c67565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611bee565b6001600160a01b0383166122255760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a79565b6001600160a01b0382166122875760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a79565b6001600160a01b038316600090815260208190526040902054818110156122ff5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a79565b6123098282612c67565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061233f908490612bda565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161238b91815260200190565b60405180910390a350505050565b60006112ce8284612c67565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106123da576123da612d25565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561242e57600080fd5b505afa158015612442573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124669190612896565b8160018151811061247957612479612d25565b6001600160a01b03928316602091820292909201015260085461249f9130911684611ad6565b6008546001600160a01b031663791ac94783600084306124c24262015180612bda565b6040518663ffffffff1660e01b81526004016124e2959493929190612b43565b600060405180830381600087803b1580156124fc57600080fd5b505af115801561159b573d6000803e3d6000fd5b816001600160a01b0316836001600160a01b0316141580156125325750600081115b1561266f576001600160a01b038316156125d5576001600160a01b03831660009081526012602052604081205463ffffffff1690816125725760006125b5565b6001600160a01b038516600090815260116020526040812090612596600185612c7e565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006125c38285612399565b90506125d186848484612674565b5050505b6001600160a01b0382161561266f576001600160a01b03821660009081526012602052604081205463ffffffff169081612610576000612653565b6001600160a01b038416600090815260116020526040812090612634600185612c7e565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006126618285612816565b905061159b85848484612674565b505050565b600061269843604051806060016040528060348152602001612d5160349139612822565b905060008463ffffffff161180156126f257506001600160a01b038516600090815260116020526040812063ffffffff8316916126d6600188612c7e565b63ffffffff908116825260208201929092526040016000205416145b1561273b576001600160a01b0385166000908152601160205260408120839161271c600188612c7e565b63ffffffff1681526020810191909152604001600020600101556127cb565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152601183528581208a851682529092529390209151825463ffffffff19169116178155905160019182015561279a908590612bf2565b6001600160a01b0386166000908152601260205260409020805463ffffffff191663ffffffff929092169190911790555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b60006112ce8284612bda565b600081640100000000841061284a5760405162461bcd60e51b8152600401610a799190612ab9565b509192915050565b8035801515811461286257600080fd5b919050565b803561ffff8116811461286257600080fd5b60006020828403121561288b57600080fd5b81356112ce81612d3b565b6000602082840312156128a857600080fd5b81516112ce81612d3b565b600080604083850312156128c657600080fd5b82356128d181612d3b565b915060208301356128e181612d3b565b809150509250929050565b60008060006060848603121561290157600080fd5b833561290c81612d3b565b9250602084013561291c81612d3b565b929592945050506040919091013590565b6000806040838503121561294057600080fd5b823561294b81612d3b565b915061295960208401612852565b90509250929050565b6000806040838503121561297557600080fd5b823561298081612d3b565b946020939093013593505050565b60008060008060008060c087890312156129a757600080fd5b86356129b281612d3b565b95506020870135945060408701359350606087013560ff811681146129d657600080fd5b9598949750929560808101359460a0909101359350915050565b60008060408385031215612a0357600080fd5b8235612a0e81612d3b565b9150602083013563ffffffff811681146128e157600080fd5b600060208284031215612a3957600080fd5b6112ce82612852565b600060208284031215612a5457600080fd5b6112ce82612867565b600080600060608486031215612a7257600080fd5b612a7b84612867565b9250612a8960208501612867565b9150612a9760408501612867565b90509250925092565b600060208284031215612ab257600080fd5b5035919050565b600060208083528351808285015260005b81811015612ae657858101830151858201604001528201612aca565b81811115612af8576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612b935784516001600160a01b031683529383019391830191600101612b6e565b50506001600160a01b03969096166060850152505050608001529392505050565b600061ffff808316818516808303821115612bd157612bd1612cf9565b01949350505050565b60008219821115612bed57612bed612cf9565b500190565b600063ffffffff808316818516808303821115612bd157612bd1612cf9565b600082612c2057612c20612d0f565b500490565b600063ffffffff80841680612c3c57612c3c612d0f565b92169190910492915050565b6000816000190483118215151615612c6257612c62612cf9565b500290565b600082821015612c7957612c79612cf9565b500390565b600063ffffffff83811690831681811015612c9b57612c9b612cf9565b039392505050565b600181811c90821680612cb757607f821691505b60208210811415612cd857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612cf257612cf2612cf9565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610c6357600080fdfe4d4152533a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a26469706673582212209293a8608d05a0fcfd1c883f3e27e526ff3d77a6e79435cade443201be04159064736f6c63430008070033
0x608060405260068054683e801900190019027160a41b600160a01b600160f01b03199091161790556b019d971e4fe8401e74000000600755600a80546001600160a01b03191673f9054e835566250eb85bbb5a241d071035d34cf5179055600b8054600161ff0160a01b03191661dead179055600e805460ff191690553480156200008957600080fd5b5060405180604001604052806009815260200168526f6c6c6572496e7560b81b81525060405180604001604052806003815260200162524f4960e81b8152508160039080519060200190620000e0929190620004b3565b508051620000f6906004906020840190620004b3565b50505060006200010b620003c760201b60201c565b600580546001600160a01b0383166001600160a01b031991821681179092556006805490911682179055604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200017e336c01431e0fae6d7217caa0000000620003cb565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001d157600080fd5b505afa158015620001e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020c919062000559565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025557600080fd5b505afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000559565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002d957600080fd5b505af1158015620002ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000314919062000559565b600980546001600160a01b039283166001600160a01b0319918216179091556008805493909216921682179055306000818152600c60209081526040808320805460ff199081166001908117909255338086528386208054831684179055868652600d855283862080548316841790558086528386208054831684179055958552600f909352818420805484168217905593835280832080548316851790559382529290208054909216179055620005ef565b3390565b6001600160a01b038216620004265760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200043a91906200058b565b90915550506001600160a01b03821660009081526020819052604081208054839290620004699084906200058b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620004c190620005b2565b90600052602060002090601f016020900481019282620004e5576000855562000530565b82601f106200050057805160ff191683800117855562000530565b8280016001018555821562000530579182015b828111156200053057825182559160200191906001019062000513565b506200053e92915062000542565b5090565b5b808211156200053e576000815560010162000543565b6000602082840312156200056c57600080fd5b81516001600160a01b03811681146200058457600080fd5b9392505050565b60008219821115620005ad57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620005c757607f821691505b60208210811415620005e957634e487b7160e01b600052602260045260246000fd5b50919050565b612dba80620005ff6000396000f3fe6080604052600436106102765760003560e01c8063735de9f71161014f578063c3cda520116100c1578063e7a324dc1161007a578063e7a324dc1461082a578063e8aa3d9b1461085e578063f1127ed81461087e578063f160d369146108e2578063f275f64b14610902578063f2fde38b1461092257600080fd5b8063c3cda52014610744578063c816841b14610764578063c851cc3214610784578063d4c989d3146107a4578063dd62ed3e146107c4578063df8408fe1461080a57600080fd5b806395d89b411161011357806395d89b411461069a5780639dc29fac146106af578063a457c2d7146106cf578063a9059cbb146106ef578063a9e757231461070f578063b4b5ea571461072457600080fd5b8063735de9f7146105ef578063782d6fe11461060f5780637ecebe001461062f5780638da5cb5b1461065c5780638f6f63ba1461067a57600080fd5b80634e8c9f90116101e857806362e546f9116101ac57806362e546f9146104ee578063658c27a914610503578063670babe01461053c5780636fcfff451461055c57806370a08231146105a4578063715018a6146105da57600080fd5b80634e8c9f901461042757806351bc3c85146104475780635342acb41461045c578063587cde1e146104955780635c19a95c146104ce57600080fd5b806327c8f8351161023a57806327c8f83514610350578063313ce5671461038857806332cb6b0c146103a457806333767911146103c557806339509351146103e7578063469048401461040757600080fd5b806306fdde0314610282578063095ea7b3146102ad57806318160ddd146102dd57806320606b70146102fc57806323b872dd1461033057600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610942565b6040516102a49190612ab9565b60405180910390f35b3480156102b957600080fd5b506102cd6102c8366004612962565b6109d4565b60405190151581526020016102a4565b3480156102e957600080fd5b506002545b6040519081526020016102a4565b34801561030857600080fd5b506102ee7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b34801561033c57600080fd5b506102cd61034b3660046128ec565b6109eb565b34801561035c57600080fd5b50600b54610370906001600160a01b031681565b6040516001600160a01b0390911681526020016102a4565b34801561039457600080fd5b50604051601281526020016102a4565b3480156103b057600080fd5b506102ee6c01431e0fae6d7217caa000000081565b3480156103d157600080fd5b506103e56103e0366004612aa0565b610aa1565b005b3480156103f357600080fd5b506102cd610402366004612962565b610b2f565b34801561041357600080fd5b50600a54610370906001600160a01b031681565b34801561043357600080fd5b506103e5610442366004612a42565b610b66565b34801561045357600080fd5b506103e5610c10565b34801561046857600080fd5b506102cd610477366004612879565b6001600160a01b03166000908152600c602052604090205460ff1690565b3480156104a157600080fd5b506103706104b0366004612879565b6001600160a01b039081166000908152601060205260409020541690565b3480156104da57600080fd5b506103e56104e9366004612879565b610c59565b3480156104fa57600080fd5b506103e5610c66565b34801561050f57600080fd5b506102cd61051e366004612879565b6001600160a01b03166000908152600d602052604090205460ff1690565b34801561054857600080fd5b506103e5610557366004612a5d565b610ce3565b34801561056857600080fd5b5061058f610577366004612879565b60126020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016102a4565b3480156105b057600080fd5b506102ee6105bf366004612879565b6001600160a01b031660009081526020819052604090205490565b3480156105e657600080fd5b506103e5610dd0565b3480156105fb57600080fd5b50600854610370906001600160a01b031681565b34801561061b57600080fd5b506102ee61062a366004612962565b610e59565b34801561063b57600080fd5b506102ee61064a366004612879565b60136020526000908152604090205481565b34801561066857600080fd5b506005546001600160a01b0316610370565b34801561068657600080fd5b506103e561069536600461292d565b6110be565b3480156106a657600080fd5b50610297611128565b3480156106bb57600080fd5b506103e56106ca366004612962565b611137565b3480156106db57600080fd5b506102cd6106ea366004612962565b611180565b3480156106fb57600080fd5b506102cd61070a366004612962565b61121b565b34801561071b57600080fd5b506102ee611228565b34801561073057600080fd5b506102ee61073f366004612879565b611260565b34801561075057600080fd5b506103e561075f36600461298e565b6112d5565b34801561077057600080fd5b50600954610370906001600160a01b031681565b34801561079057600080fd5b506103e561079f366004612879565b6115a3565b3480156107b057600080fd5b506103e56107bf36600461292d565b6117a9565b3480156107d057600080fd5b506102ee6107df3660046128b3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561081657600080fd5b506103e561082536600461292d565b611813565b34801561083657600080fd5b506102ee7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b34801561086a57600080fd5b506103e5610879366004612a27565b61187d565b34801561088a57600080fd5b506108c66108993660046129f0565b60116020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff90931683526020830191909152016102a4565b3480156108ee57600080fd5b506103e56108fd366004612879565b6118da565b34801561090e57600080fd5b506103e561091d366004612a27565b611946565b34801561092e57600080fd5b506103e561093d366004612879565b6119d6565b60606003805461095190612ca3565b80601f016020809104026020016040519081016040528092919081815260200182805461097d90612ca3565b80156109ca5780601f1061099f576101008083540402835291602001916109ca565b820191906000526020600020905b8154815290600101906020018083116109ad57829003601f168201915b5050505050905090565b60006109e1338484611ad6565b5060015b92915050565b60006109f8848484611bfb565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a825760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610a968533610a918685612c67565b611ad6565b506001949350505050565b6005546001600160a01b0316331480610ac457506006546001600160a01b031633145b610ae05760405162461bcd60e51b8152600401610a7990612b0e565b600654600160a01b900461ffff16811115610afa57600080fd5b600654610b2990600160a01b900461ffff16610b236c01431e0fae6d7217caa000000084611ecb565b90611ed7565b60075550565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109e1918590610a91908690612bda565b6005546001600160a01b0316331480610b8957506006546001600160a01b031633145b610ba55760405162461bcd60e51b8152600401610a7990612b0e565b60065461ffff600160a01b90910481169082161115610bee5760405162461bcd60e51b8152602060048201526005602482015264217261746560d81b6044820152606401610a79565b6006805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b6005546001600160a01b0316331480610c3357506006546001600160a01b031633145b610c4f5760405162461bcd60e51b8152600401610a7990612b0e565b610c57611ee3565b565b610c633382611ff9565b50565b6005546001600160a01b0316331480610c8957506006546001600160a01b031633145b610ca55760405162461bcd60e51b8152600401610a7990612b0e565b600a5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610cdf573d6000803e3d6000fd5b5050565b6005546001600160a01b0316331480610d0657506006546001600160a01b031633145b610d225760405162461bcd60e51b8152600401610a7990612b0e565b600654600160a01b900461ffff1681610d3b8486612bb4565b610d459190612bb4565b61ffff161115610d815760405162461bcd60e51b81526020600482015260076024820152662176616c75657360c81b6044820152606401610a79565b6006805465ffff0000ffff60b01b1916600160d01b61ffff9586160261ffff60b01b191617600160b01b938516939093029290921761ffff60c01b1916600160c01b9190931602919091179055565b6005546001600160a01b0316331480610df357506006546001600160a01b031633145b610e0f5760405162461bcd60e51b8152600401610a7990612b0e565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6000438210610eba5760405162461bcd60e51b815260206004820152602760248201527f4d4152533a3a6765745072696f72566f7465733a206e6f742079657420646574604482015266195c9b5a5b995960ca1b6064820152608401610a79565b6001600160a01b03831660009081526012602052604090205463ffffffff1680610ee85760009150506109e5565b6001600160a01b03841660009081526011602052604081208491610f0d600185612c7e565b63ffffffff90811682526020820192909252604001600020541611610f76576001600160a01b038416600090815260116020526040812090610f50600184612c7e565b63ffffffff1663ffffffff168152602001908152602001600020600101549150506109e5565b6001600160a01b038416600090815260116020908152604080832083805290915290205463ffffffff16831015610fb15760009150506109e5565b600080610fbf600184612c7e565b90505b8163ffffffff168163ffffffff1611156110875760006002610fe48484612c7e565b610fee9190612c25565b610ff89083612c7e565b6001600160a01b038816600090815260116020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915291925087141561105b576020015194506109e59350505050565b805163ffffffff1687111561107257819350611080565b61107d600183612c7e565b92505b5050610fc2565b506001600160a01b038516600090815260116020908152604080832063ffffffff9094168352929052206001015491505092915050565b6005546001600160a01b03163314806110e157506006546001600160a01b031633145b6110fd5760405162461bcd60e51b8152600401610a7990612b0e565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b60606004805461095190612ca3565b6005546001600160a01b031633148061115a57506006546001600160a01b031633145b6111765760405162461bcd60e51b8152600401610a7990612b0e565b610cdf8282612072565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156112025760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a79565b6112113385610a918685612c67565b5060019392505050565b60006109e1338484611bfb565b60065460009061125b9061ffff600160a01b8204811691610b2391600160e01b9091041661125560025490565b90611ecb565b905090565b6001600160a01b03811660009081526012602052604081205463ffffffff168061128b5760006112ce565b6001600160a01b0383166000908152601160205260408120906112af600184612c7e565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866611300610942565b8051906020012061130e4690565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a90528251808503909101815261014084019092528151919093012061190160f01b610160830152610162820183905261018282018190529192506000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa15801561143a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114ac5760405162461bcd60e51b815260206004820152602660248201527f4d4152533a3a64656c656761746542795369673a20696e76616c6964207369676044820152656e617475726560d01b6064820152608401610a79565b6001600160a01b03811660009081526013602052604081208054916114d083612cde565b91905055891461152d5760405162461bcd60e51b815260206004820152602260248201527f4d4152533a3a64656c656761746542795369673a20696e76616c6964206e6f6e604482015261636560f01b6064820152608401610a79565b8742111561158c5760405162461bcd60e51b815260206004820152602660248201527f4d4152533a3a64656c656761746542795369673a207369676e617475726520656044820152651e1c1a5c995960d21b6064820152608401610a79565b611596818b611ff9565b505050505b505050505050565b6005546001600160a01b03163314806115c657506006546001600160a01b031633145b6115e25760405162461bcd60e51b8152600401610a7990612b0e565b600880546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b15801561163657600080fd5b505afa15801561164a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166e9190612896565b6001600160a01b031663e6a4390530600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156116cb57600080fd5b505afa1580156116df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117039190612896565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561174957600080fd5b505afa15801561175d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117819190612896565b600980546001600160a01b0319166001600160a01b03929092169182179055610c6357600080fd5b6005546001600160a01b03163314806117cc57506006546001600160a01b031633145b6117e85760405162461bcd60e51b8152600401610a7990612b0e565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633148061183657506006546001600160a01b031633145b6118525760405162461bcd60e51b8152600401610a7990612b0e565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314806118a057506006546001600160a01b031633145b6118bc5760405162461bcd60e51b8152600401610a7990612b0e565b600b8054911515600160a81b0260ff60a81b19909216919091179055565b600a546001600160a01b031633146119245760405162461bcd60e51b815260206004820152600d60248201526c2170726576206164647265737360981b6044820152606401610a79565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633148061196957506006546001600160a01b031633145b6119855760405162461bcd60e51b8152600401610a7990612b0e565b600e805460ff191682151590811790915560011415610c635760068054600160e01b61ffff600160a01b8304160261ffff60e01b19909116179055600b805460ff60a81b1916600160a81b17905550565b6005546001600160a01b03163314806119f957506006546001600160a01b031633145b611a155760405162461bcd60e51b8152600401610a7990612b0e565b6001600160a01b038116611a7a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a79565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611b385760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a79565b6001600160a01b038216611b995760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a79565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600e54839060ff1680611c2657506001600160a01b0381166000908152600f602052604090205460ff165b611c5e5760405162461bcd60e51b8152602060048201526009602482015268217472616461626c6560b81b6044820152606401610a79565b600b54600160a81b900460ff1615156001148015611c865750600b54600160a01b900460ff16155b8015611c9c57506008546001600160a01b031615155b8015611cb257506009546001600160a01b031615155b8015611ccc57506009546001600160a01b03858116911614155b8015611ce657506005546001600160a01b03858116911614155b8015611cfb57506001600160a01b0384163014155b8015611d1557506008546001600160a01b03858116911614155b15611d2257611d22611ee3565b6001600160a01b0384166000908152600d602052604090205460ff16611d9057611d4a611228565b821115611d905760405162461bcd60e51b8152602060048201526014602482015273195e18d95959081b585e081d1e08185b5bdd5b9d60621b6044820152606401610a79565b6001600160a01b0384166000908152600c602052604090205460ff1615611dc157611dbc8484846121c1565b611ec5565b600654600090611deb9061ffff600160a01b8204811691610b23918791600160b01b900416611ecb565b600654909150600090611e189061ffff600160a01b8204811691610b23918891600160c01b900416611ecb565b6009549091506000906001600160a01b0387811691161415611e5e57600654611e5b9061ffff600160a01b8204811691610b23918991600160c01b900416611ecb565b90505b611e7481611e6e84818988612399565b90612399565b9450611e818787876121c1565b8215611e9257611e928730856121c1565b8115611ea357611ea38730846121c1565b8015611ec157600b54611ec19088906001600160a01b0316836121c1565b5050505b50505050565b60006112ce8284612c48565b60006112ce8284612c11565b600b805460ff60a01b1916600160a01b1790556006805465ffffffffffff60b01b19811690915561ffff600160b01b8204811691600160c01b8104821691600160d01b909104166000611f4b306001600160a01b031660009081526020819052604090205490565b90506007548110611f5b57506007545b611f64816123a5565b600a546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611f9d573d6000803e3d6000fd5b50506006805463ffffffff60b01b1916600160b01b61ffff9586160261ffff60c01b191617600160c01b938516939093029290921761ffff60d01b1916600160d01b9190931602919091179055600b805460ff60a01b19169055565b6001600160a01b038281166000818152601060208181526040808420805485845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611ec5828483612510565b6001600160a01b0382166120d25760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a79565b6001600160a01b038216600090815260208190526040902054818110156121465760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a79565b6121508282612c67565b6001600160a01b0384166000908152602081905260408120919091556002805484929061217e908490612c67565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611bee565b6001600160a01b0383166122255760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a79565b6001600160a01b0382166122875760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a79565b6001600160a01b038316600090815260208190526040902054818110156122ff5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a79565b6123098282612c67565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061233f908490612bda565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161238b91815260200190565b60405180910390a350505050565b60006112ce8284612c67565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106123da576123da612d25565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561242e57600080fd5b505afa158015612442573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124669190612896565b8160018151811061247957612479612d25565b6001600160a01b03928316602091820292909201015260085461249f9130911684611ad6565b6008546001600160a01b031663791ac94783600084306124c24262015180612bda565b6040518663ffffffff1660e01b81526004016124e2959493929190612b43565b600060405180830381600087803b1580156124fc57600080fd5b505af115801561159b573d6000803e3d6000fd5b816001600160a01b0316836001600160a01b0316141580156125325750600081115b1561266f576001600160a01b038316156125d5576001600160a01b03831660009081526012602052604081205463ffffffff1690816125725760006125b5565b6001600160a01b038516600090815260116020526040812090612596600185612c7e565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006125c38285612399565b90506125d186848484612674565b5050505b6001600160a01b0382161561266f576001600160a01b03821660009081526012602052604081205463ffffffff169081612610576000612653565b6001600160a01b038416600090815260116020526040812090612634600185612c7e565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006126618285612816565b905061159b85848484612674565b505050565b600061269843604051806060016040528060348152602001612d5160349139612822565b905060008463ffffffff161180156126f257506001600160a01b038516600090815260116020526040812063ffffffff8316916126d6600188612c7e565b63ffffffff908116825260208201929092526040016000205416145b1561273b576001600160a01b0385166000908152601160205260408120839161271c600188612c7e565b63ffffffff1681526020810191909152604001600020600101556127cb565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152601183528581208a851682529092529390209151825463ffffffff19169116178155905160019182015561279a908590612bf2565b6001600160a01b0386166000908152601260205260409020805463ffffffff191663ffffffff929092169190911790555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b60006112ce8284612bda565b600081640100000000841061284a5760405162461bcd60e51b8152600401610a799190612ab9565b509192915050565b8035801515811461286257600080fd5b919050565b803561ffff8116811461286257600080fd5b60006020828403121561288b57600080fd5b81356112ce81612d3b565b6000602082840312156128a857600080fd5b81516112ce81612d3b565b600080604083850312156128c657600080fd5b82356128d181612d3b565b915060208301356128e181612d3b565b809150509250929050565b60008060006060848603121561290157600080fd5b833561290c81612d3b565b9250602084013561291c81612d3b565b929592945050506040919091013590565b6000806040838503121561294057600080fd5b823561294b81612d3b565b915061295960208401612852565b90509250929050565b6000806040838503121561297557600080fd5b823561298081612d3b565b946020939093013593505050565b60008060008060008060c087890312156129a757600080fd5b86356129b281612d3b565b95506020870135945060408701359350606087013560ff811681146129d657600080fd5b9598949750929560808101359460a0909101359350915050565b60008060408385031215612a0357600080fd5b8235612a0e81612d3b565b9150602083013563ffffffff811681146128e157600080fd5b600060208284031215612a3957600080fd5b6112ce82612852565b600060208284031215612a5457600080fd5b6112ce82612867565b600080600060608486031215612a7257600080fd5b612a7b84612867565b9250612a8960208501612867565b9150612a9760408501612867565b90509250925092565b600060208284031215612ab257600080fd5b5035919050565b600060208083528351808285015260005b81811015612ae657858101830151858201604001528201612aca565b81811115612af8576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612b935784516001600160a01b031683529383019391830191600101612b6e565b50506001600160a01b03969096166060850152505050608001529392505050565b600061ffff808316818516808303821115612bd157612bd1612cf9565b01949350505050565b60008219821115612bed57612bed612cf9565b500190565b600063ffffffff808316818516808303821115612bd157612bd1612cf9565b600082612c2057612c20612d0f565b500490565b600063ffffffff80841680612c3c57612c3c612d0f565b92169190910492915050565b6000816000190483118215151615612c6257612c62612cf9565b500290565b600082821015612c7957612c79612cf9565b500390565b600063ffffffff83811690831681811015612c9b57612c9b612cf9565b039392505050565b600181811c90821680612cb757607f821691505b60208210811415612cd857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612cf257612cf2612cf9565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610c6357600080fdfe4d4152533a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a26469706673582212209293a8608d05a0fcfd1c883f3e27e526ff3d77a6e79435cade443201be04159064736f6c63430008070033