0x608060405234801561001057600080fd5b50600436106104075760003560e01c806375f0a87411610220578063a9059cbb11610130578063dd62ed3e116100b8578063ebae7c1c11610087578063ebae7c1c146108db578063f2fde38b146108e4578063f7a62fe9146108f7578063fabe628314610917578063fea2de431461092a57600080fd5b8063dd62ed3e14610887578063e0cfcc95146108c0578063e8f620b1146108c9578063ea6ef2fe146108d257600080fd5b8063bad3ea6a116100ff578063bad3ea6a1461084c578063bf56b3711461085f578063c9567bf914610868578063d348b40914610870578063d937e60d1461087857600080fd5b8063a9059cbb14610815578063aa98e16314610828578063b1b6524614610831578063b37659a41461083957600080fd5b806395d89b41116101b35780639de6718b116101825780639de6718b14610779578063a0e571a214610781578063a13cef3a1461078a578063a3a2e89e1461079d578063a8fb66b4146107b057600080fd5b806395d89b41146107285780639cbd09ac146107485780639d755026146107685780639da727b51461077157600080fd5b80638b42507f116101ef5780638b42507f146106d95780638da5cb5b146106fc57806390825c281461070d57806392407c521461071557600080fd5b806375f0a8741461068d578063773fcb5c146106a05780637a319590146106b357806387b0feb3146106c657600080fd5b8063372500ab1161031b57806359927044116102ae5780636ebcf6071161027d5780636ebcf6071461062057806370a082311461064057806371073b3814610669578063715018a61461067c5780637220cf391461068457600080fd5b806359927044146105d65780635f81a57c1461060157806362ff2e9a1461060a5780636a276f9d1461061357600080fd5b80634355855a116102ea5780634355855a1461056e57806349ce234c1461059057806351c6590a146105b0578063571ac8b0146105c357600080fd5b8063372500ab146105325780633c3227981461053a5780633eaaf86b146105435780633f4218e01461054b57600080fd5b80631f02a29c1161039e57806325fa0b981161036d57806325fa0b98146104f35780632a42caed146105005780632b112e4914610513578063313ce5671461051b5780633410fe6e1461052a57600080fd5b80631f02a29c146104a75780631f2c80f1146104ba57806323b872dd146104cd57806323cfcb10146104e057600080fd5b806318160ddd116103da57806318160ddd146104835780631a6865021461048b5780631d4eaead146104945780631d6bdb5b1461049d57600080fd5b806306fdde031461040c5780630910a5101461044557806309218ee714610457578063095ea7b314610460575b600080fd5b60408051808201909152600b81526a426162796b72616b656e7360a81b60208201525b60405161043c9190613824565b60405180910390f35b6014545b60405190815260200161043c565b61044960105481565b61047361046e366004613887565b61093d565b604051901515815260200161043c565b610449610a63565b61044960145481565b61044960125481565b6104a5610a83565b005b6104496104b53660046138b3565b610ce7565b6104a56104c83660046138d0565b610d34565b6104736104db366004613909565b610e09565b6104a56104ee3660046138b3565b610e2b565b6016546104739060ff1681565b6104a561050e36600461394a565b610eb8565b610449610f60565b6040516009815260200161043c565b610449606481565b6104a5610fb2565b61044960115481565b61044961103c565b6104736105593660046138b3565b60056020526000908152604090205460ff1681565b61047361057c3660046138b3565b602080526000908152604090205460ff1681565b61044961059e366004613976565b60186020526000908152604090205481565b6104a56105be366004613976565b611058565b6104736105d13660046138b3565b611273565b600c546105e9906001600160a01b031681565b6040516001600160a01b03909116815260200161043c565b61044960195481565b61044961038481565b6021546104739060ff1681565b61044961062e3660046138b3565b60036020526000908152604090205481565b61044961064e3660046138b3565b6001600160a01b031660009081526003602052604090205490565b610449610677366004613976565b611281565b6104a56112c7565b610449601a5481565b600d546105e9906001600160a01b031681565b6104a56106ae36600461399d565b61133b565b6104a56106c136600461394a565b611453565b6104a56106d43660046139cb565b61154a565b6104736106e73660046138b3565b60086020526000908152604090205460ff1681565b6000546001600160a01b03166105e9565b610449611634565b6104496107233660046138b3565b611662565b60408051808201909152600481526342424b5360e01b602082015261042f565b6104496107563660046138b3565b60176020526000908152604090205481565b61044960065481565b6104a56116d1565b6104a5611898565b61044960075481565b610449610798366004613976565b611924565b6104a56107ab36600461399d565b61196e565b6107ed6107be366004613976565b601c60205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a00161043c565b610473610823366004613887565b6119c3565b610449600b5481565b6104496119d7565b61047361084736600461394a565b611ac5565b601f546105e9906001600160a01b031681565b610449601e5481565b6104a56125ea565b6104496126b5565b610449670de0b6b3a764000081565b6104496108953660046138d0565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b61044960095481565b61044960155481565b610449600f5481565b610449600a5481565b6104a56108f23660046138b3565b612727565b610449610905366004613976565b601b6020526000908152604090205481565b6104a561092536600461399d565b612811565b61047361093836600461394a565b612866565b60006001600160a01b0383166109a55760405162461bcd60e51b815260206004820152602260248201527f53524732303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b336109fe5760405162461bcd60e51b8152602060048201526024808201527f53524732303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161099c565b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000610a716009600a613ae7565b610a7e906207a120613af6565b905090565b600260015403610aa55760405162461bcd60e51b815260040161099c90613b0d565b60026001556000546001600160a01b03163314610ad45760405162461bcd60e51b815260040161099c90613b44565b6000601054600f54610ae69190613b79565b600f5490915015610be257600c54600f54600b5460009273cd682ef09d07668d49a8103ddd65ff54aebfbfde9263a9059cbb926001600160a01b03909216918691610b3091613af6565b610b3a9190613b8c565b6040518363ffffffff1660e01b8152600401610b57929190613bae565b6020604051808303816000875af1158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a9190613bc7565b905080610be05760405162461bcd60e51b81526020600482015260146024820152736661696c656420746f2073656e642066756e647360601b604482015260640161099c565b505b60105415610cdb57600d54601054600b5460009273cd682ef09d07668d49a8103ddd65ff54aebfbfde9263a9059cbb926001600160a01b03909216918691610c2991613af6565b610c339190613b8c565b6040518363ffffffff1660e01b8152600401610c50929190613bae565b6020604051808303816000875af1158015610c6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c939190613bc7565b905080610cd95760405162461bcd60e51b81526020600482015260146024820152736661696c656420746f2073656e642066756e647360601b604482015260640161099c565b505b506000600b5560018055565b6000610cf16119d7565b30600090815260036020526040808220546014546001600160a01b03871684529190922054610d209190613af6565b610d2a9190613b8c565b610a5d9190613af6565b6000546001600160a01b03163314610d5e5760405162461bcd60e51b815260040161099c90613b44565b6001600160a01b03821615801590610d7e57506001600160a01b03811615155b610ddb5760405162461bcd60e51b815260206004820152602860248201527f4e65772077616c6c657473206d757374206e6f7420626520746865205a45524f604482015267206164647265737360c01b606482015260840161099c565b600c80546001600160a01b039384166001600160a01b031991821617909155600d8054929093169116179055565b600033610e17858285613351565b610e228585856133e3565b95945050505050565b600260015403610e4d5760405162461bcd60e51b815260040161099c90613b0d565b6002600155601f54604051630afbf02f60e11b81526001600160a01b038381166004830152909116906315f7e05e90602401600060405180830381600087803b158015610e9957600080fd5b505af1158015610ead573d6000803e3d6000fd5b505060018055505050565b6000546001600160a01b03163314610ee25760405162461bcd60e51b815260040161099c90613b44565b61038481610ef08486613b79565b610efa9190613b79565b14610f525760405162461bcd60e51b815260206004820152602260248201527f53756d206f6620736861726573206d757374206265205348415245444956495360448201526127a960f11b606482015260840161099c565b600f92909255601155601055565b61dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c54610f9b6009600a613ae7565b610fa8906207a120613af6565b610a7e9190613be4565b600260015403610fd45760405162461bcd60e51b815260040161099c90613b0d565b6002600155601f54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b15801561101e57600080fd5b505af1158015611032573d6000803e3d6000fd5b5050600180555050565b6110486009600a613ae7565b611055906207a120613af6565b81565b6000546001600160a01b031633146110825760405162461bcd60e51b815260040161099c90613b44565b601454306000908152600360205260408120549091906110a3908490613af6565b6110ad9190613b8c565b336000908152600360205260409020549091508111156111045760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b604482015260640161099c565b60405163a9059cbb60e01b815260009073cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906111409030908790600401613bae565b6020604051808303816000875af115801561115f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111839190613bc7565b9050806111d25760405162461bcd60e51b815260206004820152601d60248201527f535247207472616e736665722077617320756e73756363657366756c21000000604482015260640161099c565b6014546111df8482613b79565b6014553060009081526003602052604081208054859290611201908490613b79565b90915550503360009081526003602052604081208054859290611225908490613be4565b9091555050601454601554829161123b91613af6565b6112459190613b8c565b60155560405183815230903390600080516020613c2e8339815191529060200160405180910390a350505050565b6000610a5d8260001961093d565b600080826014546112929190613be4565b60155461129f9190613b8c565b905060006014546015546112b39190613b8c565b90506112bf8183613be4565b949350505050565b6000546001600160a01b031633146112f15760405162461bcd60e51b815260040161099c90613b44565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113655760405162461bcd60e51b815260040161099c90613b44565b306001600160a01b0383160361137a57600080fd5b6001600160a01b03821660009081526020805260409020805460ff1916821580159190911790915561140f57601f54604051630a5b654b60e11b81526001600160a01b03909116906314b6ca96906113d9908590600090600401613bae565b600060405180830381600087803b1580156113f357600080fd5b505af1158015611407573d6000803e3d6000fd5b505050505050565b601f546001600160a01b0383811660009081526003602052604090819020549051630a5b654b60e11b815291909216916314b6ca96916113d9918691600401613bae565b6000546001600160a01b0316331461147d5760405162461bcd60e51b815260040161099c90613b44565b605a831015801561148f5750605a8210155b801561149c575060648311155b80156114a9575060648211155b80156114b55750600581105b6114f55760405162461bcd60e51b815260206004820152601160248201527008ccacae640c2e4ca40e8dede40d0d2ced607b1b604482015260640161099c565b60078390556006829055601281905560408051848152602081018490529081018290527f3859b539bd7bd0b92240fba531a9b0a51ebcfece813db19ff22886b2d1693ef29060600160405180910390a1505050565b6000546001600160a01b031633146115745760405162461bcd60e51b815260040161099c90613b44565b60095482101580156115885750600a548110155b6115f35760405162461bcd60e51b815260206004820152603660248201527f4e65772077616c6c6574206c696d69742073686f756c64206265206174206c65604482015275617374203125206f6620746f74616c20737570706c7960501b606482015260840161099c565b6009829055600a8190556040518281527fb579b5ff4decd3791f679ec8d72f16128df08aa3f346b425480a0135d2e8bf759060200160405180910390a15050565b600061163e6119d7565b6116466126b5565b61164e610f60565b6116589190613af6565b610a7e9190613af6565b601f5460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd319890602401602060405180830381865afa1580156116ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5d9190613bf7565b6000546001600160a01b031633146116fb5760405162461bcd60e51b815260040161099c90613b44565b60215460ff16156117635760405162461bcd60e51b815260206004820152602c60248201527f436f6e747261637420697320536166652c206c69717569646974792063616e2760448201526b1d081899481c995b5bdd995960a21b606482015260840161099c565b6021546040516370a0823160e01b815230600482015260009173cd682ef09d07668d49a8103ddd65ff54aebfbfde9163a9059cbb9161010090046001600160a01b03169083906370a0823190602401602060405180830381865afa1580156117cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f39190613bf7565b6040518363ffffffff1660e01b8152600401611810929190613bae565b6020604051808303816000875af115801561182f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118539190613bc7565b9050806118955760405162461bcd60e51b815260206004820152601060248201526f7472616e73666572206661696c65642160801b604482015260640161099c565b50565b6000546001600160a01b031633146118c25760405162461bcd60e51b815260040161099c90613b44565b60215460ff16156119155760405162461bcd60e51b815260206004820152601960248201527f436f6e747261637420697320616c726561647920736166652100000000000000604482015260640161099c565b6021805460ff19166001179055565b30600090815260036020526040812054601554829161194291613b8c565b3060009081526003602052604081205491925090611961908590613b79565b6015546112b39190613b8c565b6000546001600160a01b031633146119985760405162461bcd60e51b815260040161099c90613b44565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b60006119d03384846133e3565b9392505050565b600073cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663f2220c9e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4f9190613bf7565b73cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663d348b4096040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116589190613bf7565b6000600260015403611ae95760405162461bcd60e51b815260040161099c90613b0d565b600260015542831015611b315760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b604482015260640161099c565b336000908152601d6020526040902054439003611bad5760405162461bcd60e51b815260206004820152603460248201527f427579696e6720616e642073656c6c696e6720696e207468652073616d6520626044820152736c6f636b206973206e6f7420616c6c6f7765642160601b606482015260840161099c565b600a54841115611bf25760405162461bcd60e51b815260206004820152601060248201526f4d61782054782065786365656465642160801b604482015260640161099c565b33600081815260036020526040902054851115611c515760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c2061626f766520746f6b656e20616d6f756e740000604482015260640161099c565b6000601254118015611c7357503360009081526005602052604090205460ff16155b15611d9357606460125486611c889190613af6565b611c929190613b8c565b61dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c8054909190611cd0908490613b79565b9091555050601254606490611ce59087613af6565b611cef9190613b8c565b6001600160a01b03821660009081526003602052604081208054909190611d17908490613be4565b9091555050601254606490611d2c9087613af6565b611d369190613b8c565b611d409086613be4565b945061dead6001600160a01b0316336001600160a01b0316600080516020613c2e833981519152606460125489611d779190613af6565b611d819190613b8c565b60405190815260200160405180910390a35b30600090815260036020526040812054611dae908790613b79565b601554611dbb9190613b8c565b601454611dc89190613be4565b9050600060646006546064611ddd9190613be4565b611de79084613af6565b611df19190613b8c565b90506000611dff8284613be4565b905085831015611e515760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e54000000000000604482015260640161099c565b3360009081526005602052604081205460ff16611ee95760405163a9059cbb60e01b815273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb90611ea19033908690600401613bae565b6020604051808303816000875af1158015611ec0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee49190613bc7565b611f65565b60405163a9059cbb60e01b815273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb90611f229033908890600401613bae565b6020604051808303816000875af1158015611f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f659190613bc7565b905080611faa5760405162461bcd60e51b815260206004820152601360248201527214d491c81d1c985b9cd9995c8819985a5b1959606a1b604482015260640161099c565b6001600160a01b038516600090815260036020526040902054611fce908a90613be4565b6001600160a01b03861660009081526003602090815260408083209390935533825260059052205460ff166120105782600b5461200b9190613b79565b612014565b600b545b600b55601454612025908590613be4565b60145530600090815260036020526040902054612043908a90613b79565b3060009081526003602052604081209190915542906120606119d7565b61206a9087613af6565b9050806019600082825461207e9190613b79565b909155505033600090815260176020526040812080548392906120a2908490613b79565b9091555050600082815260186020526040812080548392906120c5908490613b79565b925050819055506001601a60008282546120df9190613b79565b9091555050601a546000908152601b602052604081208390556121006119d7565b6121086126b5565b6121129190613af6565b6000848152601c60205260408120858155600101549192500361218257601c6000601b60006001601a546121469190613be4565b815260200190815260200160002054815260200190815260200160002060020154601c6000858152602001908152602001600020600101819055505b6000838152601c6020526040902060028101829055600301548111806121b757506000838152601c6020526040902060030154155b156121d1576000838152601c602052604090206003018190555b6000838152601c60205260409020600401548110806121ff57506000838152601c6020526040902060040154155b15612219576000838152601c602052604090206004018190555b6040518c815230906001600160a01b038a1690600080516020613c2e8339815191529060200160405180910390a33360009081526005602052604090205460ff16156122a957604080518d815260208101899052908101839052339030907f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e9060600160405180910390a36125d5565b33307f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e8e886122d66119d7565b6122e0908b613af6565b6040805193845260208401929092529082015260600160405180910390a36001600160a01b038816600090815260208052604090205460ff1615801561233f57506001600160a01b03881660009081526005602052604090205460ff16155b801561234d57506000601154115b156125d557601f546011546001600160a01b039091169063b6b55f259061038490612378908a613af6565b6123829190613b8c565b6040518263ffffffff1660e01b81526004016123a091815260200190565b600060405180830381600087803b1580156123ba57600080fd5b505af19250505080156123cb575060015b50601f546001600160a01b0389811660009081526003602052604090819020549051630a5b654b60e11b815291909216916314b6ca9691612410918c91600401613bae565b600060405180830381600087803b15801561242a57600080fd5b505af192505050801561243b575060015b50600073cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663a9059cbb601f60009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d89190613c10565b6103846011548b6124e99190613af6565b6124f39190613b8c565b6040518363ffffffff1660e01b8152600401612510929190613bae565b6020604051808303816000875af115801561252f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125539190613bc7565b9050806125a25760405162461bcd60e51b815260206004820152601a60248201527f4661696c656420746f2073656e64205352472072657761726473000000000000604482015260640161099c565b610384601154886125b39190613af6565b6125bd9190613b8c565b600b60008282546125ce9190613be4565b9091555050505b505060018080559a9950505050505050505050565b60026001540361260c5760405162461bcd60e51b815260040161099c90613b0d565b60026001556000546001600160a01b0316331461263b5760405162461bcd60e51b815260040161099c90613b44565b60165460ff16156126a15760405162461bcd60e51b815260206004820152602a60248201527f596f752063616e6e6f742064697361626c652074726164696e6720616674657260448201526920656e61626c696e672160b01b606482015260840161099c565b6016805460ff191660019081179091558055565b600080601454116126f75760405162461bcd60e51b815260206004820152600c60248201526b4e6f204c697175696469747960a01b604482015260640161099c565b3060009081526003602052604090205460145461271d90670de0b6b3a764000090613af6565b610a7e9190613b8c565b6000546001600160a01b031633146127515760405162461bcd60e51b815260040161099c90613b44565b6001600160a01b0381166127b65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161099c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461283b5760405162461bcd60e51b815260040161099c90613b44565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b600060026001540361288a5760405162461bcd60e51b815260040161099c90613b0d565b6002600155428210156128d25760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b604482015260640161099c565b336000818152601d602052604090204390556014546129335760405162461bcd60e51b815260206004820152601a60248201527f54686520746f6b656e20686173206e6f206c6971756964697479000000000000604482015260640161099c565b60165460ff168061295c57506001600160a01b03811660009081526008602052604090205460ff165b61299e5760405162461bcd60e51b81526020600482015260136024820152722a3930b234b7339034b9903737ba1027b832b760691b604482015260640161099c565b6001600160a01b03811660009081526005602052604081205460ff166129dd576064600754876129ce9190613af6565b6129d89190613b8c565b6129df565b855b90506000601454826129f19190613b79565b6015546129fe9190613b8c565b30600090815260036020526040902054612a189190613be4565b6009546001600160a01b03851660009081526003602052604090205491925090612a43908390613b79565b11158015612a535750600a548111155b80612a7657506001600160a01b03831660009081526008602052604090205460ff165b612ab85760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161099c565b60018111612b145760405162461bcd60e51b815260206004820152602360248201527f53524732303a204d75737420427579206d6f7265207468616e203120646563696044820152621b585b60ea1b606482015260840161099c565b85811015612b645760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e54000000000000604482015260640161099c565b6040516323b872dd60e01b81526001600160a01b03841660048201523060248201526044810188905260009073cd682ef09d07668d49a8103ddd65ff54aebfbfde906323b872dd906064016020604051808303816000875af1158015612bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf29190613bc7565b905080612c415760405162461bcd60e51b815260206004820152601760248201527f7472616e73666572206f6620535247206661696c656421000000000000000000604482015260640161099c565b6000601254118015612c6c57506001600160a01b03841660009081526005602052604090205460ff16155b15612d8057612c9f8460646012546064612c869190613be4565b612c909086613af6565b612c9a9190613b8c565b61369b565b606460125483612caf9190613af6565b612cb99190613b8c565b61dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c8054909190612cf7908490613b79565b9091555050601254606490612d0c9084613af6565b612d169190613b8c565b3060009081526003602052604081208054909190612d35908490613be4565b909155505060125461dead903390600080516020613c2e83398151915290606490612d609087613af6565b612d6a9190613b8c565b60405190815260200160405180910390a3612d8a565b612d8a848361369b565b6000612d96848a613be4565b905080600b54612da69190613b79565b600b55601454612db7908590613b79565b601455426000612dc56119d7565b612dcf908c613af6565b90508060196000828254612de39190613b79565b90915550506001600160a01b03871660009081526017602052604081208054839290612e10908490613b79565b909155505060008281526018602052604081208054839290612e33908490613b79565b925050819055506001601a6000828254612e4d9190613b79565b9091555050601a546000908152601b60205260408120839055612e6e6119d7565b612e766126b5565b612e809190613af6565b6000848152601c602052604081208581556001015491925003612f5457601a54600103612f0157612eaf6119d7565b612ebb6009600a613ae7565b612ec8906207a120613af6565b88601454612ed69190613be4565b612ee09190613b8c565b612eea9190613af6565b6000848152601c6020526040902060010155612f54565b601c6000601b60006001601a54612f189190613be4565b815260200190815260200160002054815260200190815260200160002060020154601c6000858152602001908152602001600020600101819055505b6000838152601c602052604090206002810182905560030154811180612f8957506000838152601c6020526040902060030154155b15612fa3576000838152601c602052604090206003018190555b6000838152601c6020526040902060040154811080612fd157506000838152601c6020526040902060040154155b15612feb576000838152601c602052604090206004018190555b6001600160a01b038816600090815260208052604090205460ff1615801561302c57506001600160a01b03881660009081526005602052604090205460ff16155b801561303a57506000601154115b156132c257601f546011546001600160a01b039091169063b6b55f2590610384906130659088613af6565b61306f9190613b8c565b6040518263ffffffff1660e01b815260040161308d91815260200190565b600060405180830381600087803b1580156130a757600080fd5b505af19250505080156130b8575060015b50601f546001600160a01b0389811660009081526003602052604090819020549051630a5b654b60e11b815291909216916314b6ca96916130fd918c91600401613bae565b600060405180830381600087803b15801561311757600080fd5b505af1925050508015613128575060015b50600073cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663a9059cbb601f60009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c59190613c10565b610384601154896131d69190613af6565b6131e09190613b8c565b6040518363ffffffff1660e01b81526004016131fd929190613bae565b6020604051808303816000875af115801561321c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132409190613bc7565b90508061328f5760405162461bcd60e51b815260206004820152601a60248201527f4661696c656420746f2073656e64205352472072657761726473000000000000604482015260640161099c565b610384601154866132a09190613af6565b6132aa9190613b8c565b600b60008282546132bb9190613be4565b9091555050505b60405186815233903090600080516020613c2e8339815191529060200160405180910390a330337f7ce543d1780f3bdc3dac42da06c95da802653cd1b212b8d74ec3e3c33ad7095c888f6133146119d7565b61331e908d613af6565b6040805193845260208401929092529082015260600160405180910390a3505060018080559a9950505050505050505050565b6001600160a01b0380841660009081526004602090815260408083209386168352929052205460001981146133dd57818110156133d05760405162461bcd60e51b815260206004820152601d60248201527f53524732303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161099c565b6133dd8484848403613700565b50505050565b60006001600160a01b0383161580159061340657506001600160a01b0383163014155b80156134205750600e546001600160a01b03848116911614155b6134775760405162461bcd60e51b815260206004820152602260248201527f7472616e7366657220746f20746865207a65726f2061646472657373206f7220604482015261434160f01b606482015260840161099c565b600082116134d95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161099c565b6001600160a01b03831660009081526008602052604090205460ff168061352557506009546001600160a01b038416600090815260036020526040902054613522908490613b79565b11155b6135685760405162461bcd60e51b81526020600482015260146024820152734d61782077616c6c65742065786365656465642160601b604482015260640161099c565b6001600160a01b03841660009081526003602052604090205461358c908390613be4565b6001600160a01b0380861660009081526003602052604080822093909355908516815220546135bc908390613b79565b6001600160a01b03841660009081526003602052604090205560165460ff1661365657601f546001600160a01b0384811660009081526003602052604090819020549051630a5b654b60e11b815291909216916314b6ca9691613623918791600401613bae565b600060405180830381600087803b15801561363d57600080fd5b505af1158015613651573d6000803e3d6000fd5b505050505b826001600160a01b0316846001600160a01b0316600080516020613c2e8339815191528460405161368991815260200190565b60405180910390a35060019392505050565b6001600160a01b0382166000908152600360205260409020546136bf908290613b79565b6001600160a01b0383166000908152600360205260408082209290925530815220546136ec908290613be4565b306000908152600360205260409020555050565b6001600160a01b0383166137625760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161099c565b6001600160a01b0382166137c35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161099c565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208083528351808285015260005b8181101561385157858101830151858201604001528201613835565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461189557600080fd5b6000806040838503121561389a57600080fd5b82356138a581613872565b946020939093013593505050565b6000602082840312156138c557600080fd5b81356119d081613872565b600080604083850312156138e357600080fd5b82356138ee81613872565b915060208301356138fe81613872565b809150509250929050565b60008060006060848603121561391e57600080fd5b833561392981613872565b9250602084013561393981613872565b929592945050506040919091013590565b60008060006060848603121561395f57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561398857600080fd5b5035919050565b801515811461189557600080fd5b600080604083850312156139b057600080fd5b82356139bb81613872565b915060208301356138fe8161398f565b600080604083850312156139de57600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613a3e578160001904821115613a2457613a246139ed565b80851615613a3157918102915b93841c9390800290613a08565b509250929050565b600082613a5557506001610a5d565b81613a6257506000610a5d565b8160018114613a785760028114613a8257613a9e565b6001915050610a5d565b60ff841115613a9357613a936139ed565b50506001821b610a5d565b5060208310610133831016604e8410600b8410161715613ac1575081810a610a5d565b613acb8383613a03565b8060001904821115613adf57613adf6139ed565b029392505050565b60006119d060ff841683613a46565b8082028115828204841417610a5d57610a5d6139ed565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b80820180821115610a5d57610a5d6139ed565b600082613ba957634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b03929092168252602082015260400190565b600060208284031215613bd957600080fd5b81516119d08161398f565b81810381811115610a5d57610a5d6139ed565b600060208284031215613c0957600080fd5b5051919050565b600060208284031215613c2257600080fd5b81516119d08161387256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220898d969768e5eef630964773e9d86b6f9fb56c7764731d0afae6a76b05b5929764736f6c63430008120033
0x6080604081905263313ce56760e01b815273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063313ce56790608490602090600481865afa1580156200004a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000070919062000416565b60ff16600255605b60068190556007556200008e6009600a62000557565b6200009d906207a12062000568565b6009556009600a620000b0919062000557565b620000bf906207a12062000568565b600a9081556000600b55600c80546001600160a01b0319908116732d3db5b1f5a36323002167f14a5472ce185c22a817909155600d8054821673c03eb02ea754a851ad8963c5c04610d48ff3f10b179055600e8054909116736d10994ef28aa037c686eb97c12f296645dd9f0817905560c8600f8190556010556101f46011556001601255620001529060099062000557565b62000161906201ff9262000568565b60135566068782bc46a94260145560135460145462000181919062000568565b6015556016805460ff191690556000601955602180546001600160a81b031916742d3db5b1f5a36323002167f14a5472ce185c22a800179055348015620001c757600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060018055601354306000908152600360205260409020819055620002306009600a62000557565b6200023f906207a12062000568565b6200024b919062000582565b33600081815260036020908152604080832094909455600581528382208054600160ff1991821681179092556008835285842080548216831790553080855286852080548316841790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548316841790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c780548316841790559484529180528483208054831682179055928252838220805482168417905561dead9091527fcbaad361c71be11fa6bdbe0e740c6259be964b32182da2da47b54472477c6a178054909116909117905551620003439062000408565b604051809103906000f08015801562000360573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039290921691909117905543601e55601354604051908152309060009060008051602062004a618339815191529060200160405180910390a3601354339060009060008051602062004a6183398151915290620003d66009600a62000557565b620003e5906207a12062000568565b620003f1919062000582565b60405190815260200160405180910390a362000598565b610836806200422b83390190565b6000602082840312156200042957600080fd5b815160ff811681146200043b57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004995781600019048211156200047d576200047d62000442565b808516156200048b57918102915b93841c93908002906200045d565b509250929050565b600082620004b25750600162000551565b81620004c15750600062000551565b8160018114620004da5760028114620004e55762000505565b600191505062000551565b60ff841115620004f957620004f962000442565b50506001821b62000551565b5060208310610133831016604e8410600b84101617156200052a575081810a62000551565b62000536838362000458565b80600019048211156200054d576200054d62000442565b0290505b92915050565b60006200043b60ff841683620004a1565b808202811582820484141762000551576200055162000442565b8181038181111562000551576200055162000442565b613c8380620005a86000396000f3fe608060405234801561001057600080fd5b50600436106104075760003560e01c806375f0a87411610220578063a9059cbb11610130578063dd62ed3e116100b8578063ebae7c1c11610087578063ebae7c1c146108db578063f2fde38b146108e4578063f7a62fe9146108f7578063fabe628314610917578063fea2de431461092a57600080fd5b8063dd62ed3e14610887578063e0cfcc95146108c0578063e8f620b1146108c9578063ea6ef2fe146108d257600080fd5b8063bad3ea6a116100ff578063bad3ea6a1461084c578063bf56b3711461085f578063c9567bf914610868578063d348b40914610870578063d937e60d1461087857600080fd5b8063a9059cbb14610815578063aa98e16314610828578063b1b6524614610831578063b37659a41461083957600080fd5b806395d89b41116101b35780639de6718b116101825780639de6718b14610779578063a0e571a214610781578063a13cef3a1461078a578063a3a2e89e1461079d578063a8fb66b4146107b057600080fd5b806395d89b41146107285780639cbd09ac146107485780639d755026146107685780639da727b51461077157600080fd5b80638b42507f116101ef5780638b42507f146106d95780638da5cb5b146106fc57806390825c281461070d57806392407c521461071557600080fd5b806375f0a8741461068d578063773fcb5c146106a05780637a319590146106b357806387b0feb3146106c657600080fd5b8063372500ab1161031b57806359927044116102ae5780636ebcf6071161027d5780636ebcf6071461062057806370a082311461064057806371073b3814610669578063715018a61461067c5780637220cf391461068457600080fd5b806359927044146105d65780635f81a57c1461060157806362ff2e9a1461060a5780636a276f9d1461061357600080fd5b80634355855a116102ea5780634355855a1461056e57806349ce234c1461059057806351c6590a146105b0578063571ac8b0146105c357600080fd5b8063372500ab146105325780633c3227981461053a5780633eaaf86b146105435780633f4218e01461054b57600080fd5b80631f02a29c1161039e57806325fa0b981161036d57806325fa0b98146104f35780632a42caed146105005780632b112e4914610513578063313ce5671461051b5780633410fe6e1461052a57600080fd5b80631f02a29c146104a75780631f2c80f1146104ba57806323b872dd146104cd57806323cfcb10146104e057600080fd5b806318160ddd116103da57806318160ddd146104835780631a6865021461048b5780631d4eaead146104945780631d6bdb5b1461049d57600080fd5b806306fdde031461040c5780630910a5101461044557806309218ee714610457578063095ea7b314610460575b600080fd5b60408051808201909152600b81526a426162796b72616b656e7360a81b60208201525b60405161043c9190613824565b60405180910390f35b6014545b60405190815260200161043c565b61044960105481565b61047361046e366004613887565b61093d565b604051901515815260200161043c565b610449610a63565b61044960145481565b61044960125481565b6104a5610a83565b005b6104496104b53660046138b3565b610ce7565b6104a56104c83660046138d0565b610d34565b6104736104db366004613909565b610e09565b6104a56104ee3660046138b3565b610e2b565b6016546104739060ff1681565b6104a561050e36600461394a565b610eb8565b610449610f60565b6040516009815260200161043c565b610449606481565b6104a5610fb2565b61044960115481565b61044961103c565b6104736105593660046138b3565b60056020526000908152604090205460ff1681565b61047361057c3660046138b3565b602080526000908152604090205460ff1681565b61044961059e366004613976565b60186020526000908152604090205481565b6104a56105be366004613976565b611058565b6104736105d13660046138b3565b611273565b600c546105e9906001600160a01b031681565b6040516001600160a01b03909116815260200161043c565b61044960195481565b61044961038481565b6021546104739060ff1681565b61044961062e3660046138b3565b60036020526000908152604090205481565b61044961064e3660046138b3565b6001600160a01b031660009081526003602052604090205490565b610449610677366004613976565b611281565b6104a56112c7565b610449601a5481565b600d546105e9906001600160a01b031681565b6104a56106ae36600461399d565b61133b565b6104a56106c136600461394a565b611453565b6104a56106d43660046139cb565b61154a565b6104736106e73660046138b3565b60086020526000908152604090205460ff1681565b6000546001600160a01b03166105e9565b610449611634565b6104496107233660046138b3565b611662565b60408051808201909152600481526342424b5360e01b602082015261042f565b6104496107563660046138b3565b60176020526000908152604090205481565b61044960065481565b6104a56116d1565b6104a5611898565b61044960075481565b610449610798366004613976565b611924565b6104a56107ab36600461399d565b61196e565b6107ed6107be366004613976565b601c60205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a00161043c565b610473610823366004613887565b6119c3565b610449600b5481565b6104496119d7565b61047361084736600461394a565b611ac5565b601f546105e9906001600160a01b031681565b610449601e5481565b6104a56125ea565b6104496126b5565b610449670de0b6b3a764000081565b6104496108953660046138d0565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b61044960095481565b61044960155481565b610449600f5481565b610449600a5481565b6104a56108f23660046138b3565b612727565b610449610905366004613976565b601b6020526000908152604090205481565b6104a561092536600461399d565b612811565b61047361093836600461394a565b612866565b60006001600160a01b0383166109a55760405162461bcd60e51b815260206004820152602260248201527f53524732303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b336109fe5760405162461bcd60e51b8152602060048201526024808201527f53524732303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161099c565b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000610a716009600a613ae7565b610a7e906207a120613af6565b905090565b600260015403610aa55760405162461bcd60e51b815260040161099c90613b0d565b60026001556000546001600160a01b03163314610ad45760405162461bcd60e51b815260040161099c90613b44565b6000601054600f54610ae69190613b79565b600f5490915015610be257600c54600f54600b5460009273cd682ef09d07668d49a8103ddd65ff54aebfbfde9263a9059cbb926001600160a01b03909216918691610b3091613af6565b610b3a9190613b8c565b6040518363ffffffff1660e01b8152600401610b57929190613bae565b6020604051808303816000875af1158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a9190613bc7565b905080610be05760405162461bcd60e51b81526020600482015260146024820152736661696c656420746f2073656e642066756e647360601b604482015260640161099c565b505b60105415610cdb57600d54601054600b5460009273cd682ef09d07668d49a8103ddd65ff54aebfbfde9263a9059cbb926001600160a01b03909216918691610c2991613af6565b610c339190613b8c565b6040518363ffffffff1660e01b8152600401610c50929190613bae565b6020604051808303816000875af1158015610c6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c939190613bc7565b905080610cd95760405162461bcd60e51b81526020600482015260146024820152736661696c656420746f2073656e642066756e647360601b604482015260640161099c565b505b506000600b5560018055565b6000610cf16119d7565b30600090815260036020526040808220546014546001600160a01b03871684529190922054610d209190613af6565b610d2a9190613b8c565b610a5d9190613af6565b6000546001600160a01b03163314610d5e5760405162461bcd60e51b815260040161099c90613b44565b6001600160a01b03821615801590610d7e57506001600160a01b03811615155b610ddb5760405162461bcd60e51b815260206004820152602860248201527f4e65772077616c6c657473206d757374206e6f7420626520746865205a45524f604482015267206164647265737360c01b606482015260840161099c565b600c80546001600160a01b039384166001600160a01b031991821617909155600d8054929093169116179055565b600033610e17858285613351565b610e228585856133e3565b95945050505050565b600260015403610e4d5760405162461bcd60e51b815260040161099c90613b0d565b6002600155601f54604051630afbf02f60e11b81526001600160a01b038381166004830152909116906315f7e05e90602401600060405180830381600087803b158015610e9957600080fd5b505af1158015610ead573d6000803e3d6000fd5b505060018055505050565b6000546001600160a01b03163314610ee25760405162461bcd60e51b815260040161099c90613b44565b61038481610ef08486613b79565b610efa9190613b79565b14610f525760405162461bcd60e51b815260206004820152602260248201527f53756d206f6620736861726573206d757374206265205348415245444956495360448201526127a960f11b606482015260840161099c565b600f92909255601155601055565b61dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c54610f9b6009600a613ae7565b610fa8906207a120613af6565b610a7e9190613be4565b600260015403610fd45760405162461bcd60e51b815260040161099c90613b0d565b6002600155601f54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b15801561101e57600080fd5b505af1158015611032573d6000803e3d6000fd5b5050600180555050565b6110486009600a613ae7565b611055906207a120613af6565b81565b6000546001600160a01b031633146110825760405162461bcd60e51b815260040161099c90613b44565b601454306000908152600360205260408120549091906110a3908490613af6565b6110ad9190613b8c565b336000908152600360205260409020549091508111156111045760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b604482015260640161099c565b60405163a9059cbb60e01b815260009073cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906111409030908790600401613bae565b6020604051808303816000875af115801561115f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111839190613bc7565b9050806111d25760405162461bcd60e51b815260206004820152601d60248201527f535247207472616e736665722077617320756e73756363657366756c21000000604482015260640161099c565b6014546111df8482613b79565b6014553060009081526003602052604081208054859290611201908490613b79565b90915550503360009081526003602052604081208054859290611225908490613be4565b9091555050601454601554829161123b91613af6565b6112459190613b8c565b60155560405183815230903390600080516020613c2e8339815191529060200160405180910390a350505050565b6000610a5d8260001961093d565b600080826014546112929190613be4565b60155461129f9190613b8c565b905060006014546015546112b39190613b8c565b90506112bf8183613be4565b949350505050565b6000546001600160a01b031633146112f15760405162461bcd60e51b815260040161099c90613b44565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113655760405162461bcd60e51b815260040161099c90613b44565b306001600160a01b0383160361137a57600080fd5b6001600160a01b03821660009081526020805260409020805460ff1916821580159190911790915561140f57601f54604051630a5b654b60e11b81526001600160a01b03909116906314b6ca96906113d9908590600090600401613bae565b600060405180830381600087803b1580156113f357600080fd5b505af1158015611407573d6000803e3d6000fd5b505050505050565b601f546001600160a01b0383811660009081526003602052604090819020549051630a5b654b60e11b815291909216916314b6ca96916113d9918691600401613bae565b6000546001600160a01b0316331461147d5760405162461bcd60e51b815260040161099c90613b44565b605a831015801561148f5750605a8210155b801561149c575060648311155b80156114a9575060648211155b80156114b55750600581105b6114f55760405162461bcd60e51b815260206004820152601160248201527008ccacae640c2e4ca40e8dede40d0d2ced607b1b604482015260640161099c565b60078390556006829055601281905560408051848152602081018490529081018290527f3859b539bd7bd0b92240fba531a9b0a51ebcfece813db19ff22886b2d1693ef29060600160405180910390a1505050565b6000546001600160a01b031633146115745760405162461bcd60e51b815260040161099c90613b44565b60095482101580156115885750600a548110155b6115f35760405162461bcd60e51b815260206004820152603660248201527f4e65772077616c6c6574206c696d69742073686f756c64206265206174206c65604482015275617374203125206f6620746f74616c20737570706c7960501b606482015260840161099c565b6009829055600a8190556040518281527fb579b5ff4decd3791f679ec8d72f16128df08aa3f346b425480a0135d2e8bf759060200160405180910390a15050565b600061163e6119d7565b6116466126b5565b61164e610f60565b6116589190613af6565b610a7e9190613af6565b601f5460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd319890602401602060405180830381865afa1580156116ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5d9190613bf7565b6000546001600160a01b031633146116fb5760405162461bcd60e51b815260040161099c90613b44565b60215460ff16156117635760405162461bcd60e51b815260206004820152602c60248201527f436f6e747261637420697320536166652c206c69717569646974792063616e2760448201526b1d081899481c995b5bdd995960a21b606482015260840161099c565b6021546040516370a0823160e01b815230600482015260009173cd682ef09d07668d49a8103ddd65ff54aebfbfde9163a9059cbb9161010090046001600160a01b03169083906370a0823190602401602060405180830381865afa1580156117cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f39190613bf7565b6040518363ffffffff1660e01b8152600401611810929190613bae565b6020604051808303816000875af115801561182f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118539190613bc7565b9050806118955760405162461bcd60e51b815260206004820152601060248201526f7472616e73666572206661696c65642160801b604482015260640161099c565b50565b6000546001600160a01b031633146118c25760405162461bcd60e51b815260040161099c90613b44565b60215460ff16156119155760405162461bcd60e51b815260206004820152601960248201527f436f6e747261637420697320616c726561647920736166652100000000000000604482015260640161099c565b6021805460ff19166001179055565b30600090815260036020526040812054601554829161194291613b8c565b3060009081526003602052604081205491925090611961908590613b79565b6015546112b39190613b8c565b6000546001600160a01b031633146119985760405162461bcd60e51b815260040161099c90613b44565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b60006119d03384846133e3565b9392505050565b600073cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663f2220c9e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4f9190613bf7565b73cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663d348b4096040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116589190613bf7565b6000600260015403611ae95760405162461bcd60e51b815260040161099c90613b0d565b600260015542831015611b315760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b604482015260640161099c565b336000908152601d6020526040902054439003611bad5760405162461bcd60e51b815260206004820152603460248201527f427579696e6720616e642073656c6c696e6720696e207468652073616d6520626044820152736c6f636b206973206e6f7420616c6c6f7765642160601b606482015260840161099c565b600a54841115611bf25760405162461bcd60e51b815260206004820152601060248201526f4d61782054782065786365656465642160801b604482015260640161099c565b33600081815260036020526040902054851115611c515760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c2061626f766520746f6b656e20616d6f756e740000604482015260640161099c565b6000601254118015611c7357503360009081526005602052604090205460ff16155b15611d9357606460125486611c889190613af6565b611c929190613b8c565b61dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c8054909190611cd0908490613b79565b9091555050601254606490611ce59087613af6565b611cef9190613b8c565b6001600160a01b03821660009081526003602052604081208054909190611d17908490613be4565b9091555050601254606490611d2c9087613af6565b611d369190613b8c565b611d409086613be4565b945061dead6001600160a01b0316336001600160a01b0316600080516020613c2e833981519152606460125489611d779190613af6565b611d819190613b8c565b60405190815260200160405180910390a35b30600090815260036020526040812054611dae908790613b79565b601554611dbb9190613b8c565b601454611dc89190613be4565b9050600060646006546064611ddd9190613be4565b611de79084613af6565b611df19190613b8c565b90506000611dff8284613be4565b905085831015611e515760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e54000000000000604482015260640161099c565b3360009081526005602052604081205460ff16611ee95760405163a9059cbb60e01b815273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb90611ea19033908690600401613bae565b6020604051808303816000875af1158015611ec0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee49190613bc7565b611f65565b60405163a9059cbb60e01b815273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb90611f229033908890600401613bae565b6020604051808303816000875af1158015611f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f659190613bc7565b905080611faa5760405162461bcd60e51b815260206004820152601360248201527214d491c81d1c985b9cd9995c8819985a5b1959606a1b604482015260640161099c565b6001600160a01b038516600090815260036020526040902054611fce908a90613be4565b6001600160a01b03861660009081526003602090815260408083209390935533825260059052205460ff166120105782600b5461200b9190613b79565b612014565b600b545b600b55601454612025908590613be4565b60145530600090815260036020526040902054612043908a90613b79565b3060009081526003602052604081209190915542906120606119d7565b61206a9087613af6565b9050806019600082825461207e9190613b79565b909155505033600090815260176020526040812080548392906120a2908490613b79565b9091555050600082815260186020526040812080548392906120c5908490613b79565b925050819055506001601a60008282546120df9190613b79565b9091555050601a546000908152601b602052604081208390556121006119d7565b6121086126b5565b6121129190613af6565b6000848152601c60205260408120858155600101549192500361218257601c6000601b60006001601a546121469190613be4565b815260200190815260200160002054815260200190815260200160002060020154601c6000858152602001908152602001600020600101819055505b6000838152601c6020526040902060028101829055600301548111806121b757506000838152601c6020526040902060030154155b156121d1576000838152601c602052604090206003018190555b6000838152601c60205260409020600401548110806121ff57506000838152601c6020526040902060040154155b15612219576000838152601c602052604090206004018190555b6040518c815230906001600160a01b038a1690600080516020613c2e8339815191529060200160405180910390a33360009081526005602052604090205460ff16156122a957604080518d815260208101899052908101839052339030907f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e9060600160405180910390a36125d5565b33307f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e8e886122d66119d7565b6122e0908b613af6565b6040805193845260208401929092529082015260600160405180910390a36001600160a01b038816600090815260208052604090205460ff1615801561233f57506001600160a01b03881660009081526005602052604090205460ff16155b801561234d57506000601154115b156125d557601f546011546001600160a01b039091169063b6b55f259061038490612378908a613af6565b6123829190613b8c565b6040518263ffffffff1660e01b81526004016123a091815260200190565b600060405180830381600087803b1580156123ba57600080fd5b505af19250505080156123cb575060015b50601f546001600160a01b0389811660009081526003602052604090819020549051630a5b654b60e11b815291909216916314b6ca9691612410918c91600401613bae565b600060405180830381600087803b15801561242a57600080fd5b505af192505050801561243b575060015b50600073cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663a9059cbb601f60009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d89190613c10565b6103846011548b6124e99190613af6565b6124f39190613b8c565b6040518363ffffffff1660e01b8152600401612510929190613bae565b6020604051808303816000875af115801561252f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125539190613bc7565b9050806125a25760405162461bcd60e51b815260206004820152601a60248201527f4661696c656420746f2073656e64205352472072657761726473000000000000604482015260640161099c565b610384601154886125b39190613af6565b6125bd9190613b8c565b600b60008282546125ce9190613be4565b9091555050505b505060018080559a9950505050505050505050565b60026001540361260c5760405162461bcd60e51b815260040161099c90613b0d565b60026001556000546001600160a01b0316331461263b5760405162461bcd60e51b815260040161099c90613b44565b60165460ff16156126a15760405162461bcd60e51b815260206004820152602a60248201527f596f752063616e6e6f742064697361626c652074726164696e6720616674657260448201526920656e61626c696e672160b01b606482015260840161099c565b6016805460ff191660019081179091558055565b600080601454116126f75760405162461bcd60e51b815260206004820152600c60248201526b4e6f204c697175696469747960a01b604482015260640161099c565b3060009081526003602052604090205460145461271d90670de0b6b3a764000090613af6565b610a7e9190613b8c565b6000546001600160a01b031633146127515760405162461bcd60e51b815260040161099c90613b44565b6001600160a01b0381166127b65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161099c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461283b5760405162461bcd60e51b815260040161099c90613b44565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b600060026001540361288a5760405162461bcd60e51b815260040161099c90613b0d565b6002600155428210156128d25760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b604482015260640161099c565b336000818152601d602052604090204390556014546129335760405162461bcd60e51b815260206004820152601a60248201527f54686520746f6b656e20686173206e6f206c6971756964697479000000000000604482015260640161099c565b60165460ff168061295c57506001600160a01b03811660009081526008602052604090205460ff165b61299e5760405162461bcd60e51b81526020600482015260136024820152722a3930b234b7339034b9903737ba1027b832b760691b604482015260640161099c565b6001600160a01b03811660009081526005602052604081205460ff166129dd576064600754876129ce9190613af6565b6129d89190613b8c565b6129df565b855b90506000601454826129f19190613b79565b6015546129fe9190613b8c565b30600090815260036020526040902054612a189190613be4565b6009546001600160a01b03851660009081526003602052604090205491925090612a43908390613b79565b11158015612a535750600a548111155b80612a7657506001600160a01b03831660009081526008602052604090205460ff165b612ab85760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161099c565b60018111612b145760405162461bcd60e51b815260206004820152602360248201527f53524732303a204d75737420427579206d6f7265207468616e203120646563696044820152621b585b60ea1b606482015260840161099c565b85811015612b645760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e54000000000000604482015260640161099c565b6040516323b872dd60e01b81526001600160a01b03841660048201523060248201526044810188905260009073cd682ef09d07668d49a8103ddd65ff54aebfbfde906323b872dd906064016020604051808303816000875af1158015612bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf29190613bc7565b905080612c415760405162461bcd60e51b815260206004820152601760248201527f7472616e73666572206f6620535247206661696c656421000000000000000000604482015260640161099c565b6000601254118015612c6c57506001600160a01b03841660009081526005602052604090205460ff16155b15612d8057612c9f8460646012546064612c869190613be4565b612c909086613af6565b612c9a9190613b8c565b61369b565b606460125483612caf9190613af6565b612cb99190613b8c565b61dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c8054909190612cf7908490613b79565b9091555050601254606490612d0c9084613af6565b612d169190613b8c565b3060009081526003602052604081208054909190612d35908490613be4565b909155505060125461dead903390600080516020613c2e83398151915290606490612d609087613af6565b612d6a9190613b8c565b60405190815260200160405180910390a3612d8a565b612d8a848361369b565b6000612d96848a613be4565b905080600b54612da69190613b79565b600b55601454612db7908590613b79565b601455426000612dc56119d7565b612dcf908c613af6565b90508060196000828254612de39190613b79565b90915550506001600160a01b03871660009081526017602052604081208054839290612e10908490613b79565b909155505060008281526018602052604081208054839290612e33908490613b79565b925050819055506001601a6000828254612e4d9190613b79565b9091555050601a546000908152601b60205260408120839055612e6e6119d7565b612e766126b5565b612e809190613af6565b6000848152601c602052604081208581556001015491925003612f5457601a54600103612f0157612eaf6119d7565b612ebb6009600a613ae7565b612ec8906207a120613af6565b88601454612ed69190613be4565b612ee09190613b8c565b612eea9190613af6565b6000848152601c6020526040902060010155612f54565b601c6000601b60006001601a54612f189190613be4565b815260200190815260200160002054815260200190815260200160002060020154601c6000858152602001908152602001600020600101819055505b6000838152601c602052604090206002810182905560030154811180612f8957506000838152601c6020526040902060030154155b15612fa3576000838152601c602052604090206003018190555b6000838152601c6020526040902060040154811080612fd157506000838152601c6020526040902060040154155b15612feb576000838152601c602052604090206004018190555b6001600160a01b038816600090815260208052604090205460ff1615801561302c57506001600160a01b03881660009081526005602052604090205460ff16155b801561303a57506000601154115b156132c257601f546011546001600160a01b039091169063b6b55f2590610384906130659088613af6565b61306f9190613b8c565b6040518263ffffffff1660e01b815260040161308d91815260200190565b600060405180830381600087803b1580156130a757600080fd5b505af19250505080156130b8575060015b50601f546001600160a01b0389811660009081526003602052604090819020549051630a5b654b60e11b815291909216916314b6ca96916130fd918c91600401613bae565b600060405180830381600087803b15801561311757600080fd5b505af1925050508015613128575060015b50600073cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663a9059cbb601f60009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c59190613c10565b610384601154896131d69190613af6565b6131e09190613b8c565b6040518363ffffffff1660e01b81526004016131fd929190613bae565b6020604051808303816000875af115801561321c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132409190613bc7565b90508061328f5760405162461bcd60e51b815260206004820152601a60248201527f4661696c656420746f2073656e64205352472072657761726473000000000000604482015260640161099c565b610384601154866132a09190613af6565b6132aa9190613b8c565b600b60008282546132bb9190613be4565b9091555050505b60405186815233903090600080516020613c2e8339815191529060200160405180910390a330337f7ce543d1780f3bdc3dac42da06c95da802653cd1b212b8d74ec3e3c33ad7095c888f6133146119d7565b61331e908d613af6565b6040805193845260208401929092529082015260600160405180910390a3505060018080559a9950505050505050505050565b6001600160a01b0380841660009081526004602090815260408083209386168352929052205460001981146133dd57818110156133d05760405162461bcd60e51b815260206004820152601d60248201527f53524732303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161099c565b6133dd8484848403613700565b50505050565b60006001600160a01b0383161580159061340657506001600160a01b0383163014155b80156134205750600e546001600160a01b03848116911614155b6134775760405162461bcd60e51b815260206004820152602260248201527f7472616e7366657220746f20746865207a65726f2061646472657373206f7220604482015261434160f01b606482015260840161099c565b600082116134d95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161099c565b6001600160a01b03831660009081526008602052604090205460ff168061352557506009546001600160a01b038416600090815260036020526040902054613522908490613b79565b11155b6135685760405162461bcd60e51b81526020600482015260146024820152734d61782077616c6c65742065786365656465642160601b604482015260640161099c565b6001600160a01b03841660009081526003602052604090205461358c908390613be4565b6001600160a01b0380861660009081526003602052604080822093909355908516815220546135bc908390613b79565b6001600160a01b03841660009081526003602052604090205560165460ff1661365657601f546001600160a01b0384811660009081526003602052604090819020549051630a5b654b60e11b815291909216916314b6ca9691613623918791600401613bae565b600060405180830381600087803b15801561363d57600080fd5b505af1158015613651573d6000803e3d6000fd5b505050505b826001600160a01b0316846001600160a01b0316600080516020613c2e8339815191528460405161368991815260200190565b60405180910390a35060019392505050565b6001600160a01b0382166000908152600360205260409020546136bf908290613b79565b6001600160a01b0383166000908152600360205260408082209290925530815220546136ec908290613be4565b306000908152600360205260409020555050565b6001600160a01b0383166137625760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161099c565b6001600160a01b0382166137c35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161099c565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208083528351808285015260005b8181101561385157858101830151858201604001528201613835565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461189557600080fd5b6000806040838503121561389a57600080fd5b82356138a581613872565b946020939093013593505050565b6000602082840312156138c557600080fd5b81356119d081613872565b600080604083850312156138e357600080fd5b82356138ee81613872565b915060208301356138fe81613872565b809150509250929050565b60008060006060848603121561391e57600080fd5b833561392981613872565b9250602084013561393981613872565b929592945050506040919091013590565b60008060006060848603121561395f57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561398857600080fd5b5035919050565b801515811461189557600080fd5b600080604083850312156139b057600080fd5b82356139bb81613872565b915060208301356138fe8161398f565b600080604083850312156139de57600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613a3e578160001904821115613a2457613a246139ed565b80851615613a3157918102915b93841c9390800290613a08565b509250929050565b600082613a5557506001610a5d565b81613a6257506000610a5d565b8160018114613a785760028114613a8257613a9e565b6001915050610a5d565b60ff841115613a9357613a936139ed565b50506001821b610a5d565b5060208310610133831016604e8410600b8410161715613ac1575081810a610a5d565b613acb8383613a03565b8060001904821115613adf57613adf6139ed565b029392505050565b60006119d060ff841683613a46565b8082028115828204841417610a5d57610a5d6139ed565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b80820180821115610a5d57610a5d6139ed565b600082613ba957634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b03929092168252602082015260400190565b600060208284031215613bd957600080fd5b81516119d08161398f565b81810381811115610a5d57610a5d6139ed565b600060208284031215613c0957600080fd5b5051919050565b600060208284031215613c2257600080fd5b81516119d08161387256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220898d969768e5eef630964773e9d86b6f9fb56c7764731d0afae6a76b05b5929764736f6c634300081200336080604052600180546001600160a01b03191673cd682ef09d07668d49a8103ddd65ff54aebfbfde1790556ec097ce7bc90715b34b9f1000000000600a5534801561004957600080fd5b50600080546001600160a01b031916331790556107cb8061006b6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633a98ef39116100715780633a98ef3914610113578063997664d71461011c578063b6b55f2514610125578063ce7c2ac214610138578063e2d2e21914610182578063efca2eed1461018b57600080fd5b806311ce023d146100ae57806314b6ca96146100ca57806315f7e05e146100df57806328fd3198146100f257806338cc483114610105575b600080fd5b6100b7600a5481565b6040519081526020015b60405180910390f35b6100dd6100d836600461066d565b610194565b005b6100dd6100ed366004610697565b61030c565b6100b7610100366004610697565b610318565b6040513081526020016100c1565b6100b760065481565b6100b760075481565b6100dd6101333660046106b9565b6103a3565b610167610146366004610697565b60056020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016100c1565b6100b760095481565b6100b760085481565b6000546001600160a01b031633146101ab57600080fd5b6001600160a01b038216600090815260056020526040902054156101d2576101d2826103f9565b6000811180156101f857506001600160a01b038216600090815260056020526040902054155b1561025e57600280546001600160a01b0384166000818152600360205260408120839055600183018455929092527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319169091179055610291565b8015801561028357506001600160a01b03821660009081526005602052604090205415155b156102915761029182610519565b6001600160a01b03821660009081526005602052604090205460065482916102b8916106e8565b6102c291906106fb565b6006556001600160a01b03821660009081526005602052604090208190556102e98161062e565b6001600160a01b0390921660009081526005602052604090206001019190915550565b610315816103f9565b50565b6001600160a01b038116600090815260056020526040812054810361033f57506000919050565b6001600160a01b0382166000908152600560205260408120546103619061062e565b6001600160a01b038416600090815260056020526040902060010154909150808211610391575060009392505050565b61039b81836106e8565b949350505050565b6000546001600160a01b031633146103ba57600080fd5b806007546103c891906106fb565b600755600654600a546103dc90839061070e565b6103e69190610725565b6009546103f391906106fb565b60095550565b6001600160a01b038116600090815260056020526040812054900361041b5750565b600061042682610318565b90508015610515578060085461043c91906106fb565b60085560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b69190610747565b506001600160a01b038216600090815260046020908152604080832042905560059091529020600201546104eb9082906106fb565b6001600160a01b03831660009081526005602052604090206002810191909155546102e99061062e565b5050565b60028054610529906001906106e8565b8154811061053957610539610769565b60009182526020808320909101546001600160a01b038481168452600390925260409092205460028054929093169291811061057757610577610769565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600391829052604081205460028054919392916105c3906001906106e8565b815481106105d3576105d3610769565b60009182526020808320909101546001600160a01b0316835282019290925260400190205560028054806106095761060961077f565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000600a5460095483610641919061070e565b61064b9190610725565b92915050565b80356001600160a01b038116811461066857600080fd5b919050565b6000806040838503121561068057600080fd5b61068983610651565b946020939093013593505050565b6000602082840312156106a957600080fd5b6106b282610651565b9392505050565b6000602082840312156106cb57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561064b5761064b6106d2565b8082018082111561064b5761064b6106d2565b808202811582820484141761064b5761064b6106d2565b60008261074257634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561075957600080fd5b815180151581146106b257600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220bde5f29580f5dc2f3ad27bd4b9467fa95a8adb7c055e5c681583dc35f8708ae764736f6c63430008120033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef