6080604052612710600c556611c37937e08000600d5565164859cc0800600e556001601355600a6014553480156200003657600080fd5b506040518060400160405280600d81526020016c151c985a5d119bdc99d953999d609a1b81525060405180604001604052806006815260200165151191d3919560d21b81525081600090816200008d9190620001cb565b5060016200009c8282620001cb565b50506001600a5550620000af33620000d4565b600b805460ff60a01b19169055620000cb426201518062000297565b601655620002bf565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200015157607f821691505b6020821081036200017257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001c657600081815260208120601f850160051c81016020861015620001a15750805b601f850160051c820191505b81811015620001c257828155600101620001ad565b5050505b505050565b81516001600160401b03811115620001e757620001e762000126565b620001ff81620001f884546200013c565b8462000178565b602080601f8311600181146200023757600084156200021e5750858301515b600019600386901b1c1916600185901b178555620001c2565b600085815260208120601f198616915b82811015620002685788860151825594840194600190910190840162000247565b5085821015620002875787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620002b957634e487b7160e01b600052601160045260246000fd5b92915050565b6138e280620002cf6000396000f3fe6080604052600436106103975760003560e01c80637d419490116101dc578063c87b56dd11610102578063eae0e77b116100a0578063f2fde38b1161006f578063f2fde38b14610afa578063f503970a14610b1a578063f9541a7014610b30578063ff95984914610b5057600080fd5b8063eae0e77b14610a8e578063ebdfd72214610aae578063ee9151ae14610ac4578063f1a9af8914610ae457600080fd5b8063ce4a88bd116100dc578063ce4a88bd146109e2578063d31f0eb914610a0f578063d473843614610a2f578063e985e9c514610a4557600080fd5b8063c87b56dd1461097a578063c9e01a911461099a578063cb5a2c65146109cf57600080fd5b80639da465f21161017a578063b88d4fde11610149578063b88d4fde146108fa578063b9d6ed301461091a578063beae207f1461093a578063c472f9d91461095a57600080fd5b80639da465f21461086d578063a22cb4651461089a578063ab2be726146108ba578063acb4a009146108da57600080fd5b80638ddb428a116101b65780638ddb428a146107e857806391785e6d146107fe57806395d89b411461082b578063978ca8561461084057600080fd5b80637d4194901461078a5780637e6405c1146107aa5780638da5cb5b146107ca57600080fd5b8063430c2081116102c15780635c975abb1161025f578063694db4e31161022e578063694db4e3146107205780636f0115381461073557806370a0823114610755578063715018a61461077557600080fd5b80635c975abb1461068b578063614f3672146106aa5780636352211e146106ca57806364d19025146106ea57600080fd5b80634905269c1161029b5780634905269c146106095780634f6ccce7146106295780634f93d5c0146106495780635b8c77e41461065e57600080fd5b8063430c2081146105a9578063431a3f9d146105c9578063456173c5146105e957600080fd5b806318160ddd116103395780632d7eae66116103085780632d7eae66146105295780632f745c591461054957806342842e0e1461056957806342966c681461058957600080fd5b806318160ddd146104c85780631d80009a146104dd57806323b872dd146104f3578063280d62ac1461051357600080fd5b8063081812fc11610375578063081812fc14610421578063095ea7b31461045957806316ad45d51461047b57806317d86154146104a857600080fd5b806301ffc9a71461039c57806306b6c00b146103d157806306fdde03146103ff575b600080fd5b3480156103a857600080fd5b506103bc6103b736600461317d565b610b63565b60405190151581526020015b60405180910390f35b3480156103dd57600080fd5b506103f16103ec36600461319a565b610b8e565b6040519081526020016103c8565b34801561040b57600080fd5b50610414610bdc565b6040516103c89190613203565b34801561042d57600080fd5b5061044161043c36600461319a565b610c6e565b6040516001600160a01b0390911681526020016103c8565b34801561046557600080fd5b5061047961047436600461322b565b610c95565b005b34801561048757600080fd5b506103f161049636600461319a565b60196020526000908152604090205481565b3480156104b457600080fd5b506104796104c336600461319a565b610daa565b3480156104d457600080fd5b506008546103f1565b3480156104e957600080fd5b506103f160155481565b3480156104ff57600080fd5b5061047961050e366004613257565b610db7565b34801561051f57600080fd5b506103f1600e5481565b34801561053557600080fd5b5061047961054436600461319a565b610de8565b34801561055557600080fd5b506103f161056436600461322b565b610df5565b34801561057557600080fd5b50610479610584366004613257565b610e8b565b34801561059557600080fd5b506104796105a436600461319a565b610ea6565b3480156105b557600080fd5b506103bc6105c436600461322b565b610ff1565b3480156105d557600080fd5b506103f16105e436600461319a565b611004565b3480156105f557600080fd5b5061047961060436600461319a565b611049565b34801561061557600080fd5b5061047961062436600461319a565b6110b4565b34801561063557600080fd5b506103f161064436600461319a565b6110c1565b34801561065557600080fd5b506103f1611154565b34801561066a57600080fd5b506103f161067936600461319a565b60186020526000908152604090205481565b34801561069757600080fd5b50600b54600160a01b900460ff166103bc565b3480156106b657600080fd5b50601054610441906001600160a01b031681565b3480156106d657600080fd5b506104416106e536600461319a565b611190565b3480156106f657600080fd5b5061044161070536600461319a565b601c602052600090815260409020546001600160a01b031681565b34801561072c57600080fd5b506013546103f1565b34801561074157600080fd5b50610479610750366004613298565b6111f0565b34801561076157600080fd5b506103f1610770366004613298565b611240565b34801561078157600080fd5b506104796112c6565b34801561079657600080fd5b506104796107a5366004613298565b6112da565b3480156107b657600080fd5b506103f16107c5366004613341565b61132a565b3480156107d657600080fd5b50600b546001600160a01b0316610441565b3480156107f457600080fd5b506103f160135481565b34801561080a57600080fd5b506103f161081936600461319a565b6000908152601b602052604090205490565b34801561083757600080fd5b50610414611444565b34801561084c57600080fd5b506103f161085b36600461319a565b601a6020526000908152604090205481565b34801561087957600080fd5b506103f161088836600461319a565b60176020526000908152604090205481565b3480156108a657600080fd5b506104796108b53660046133c6565b611453565b3480156108c657600080fd5b50601154610441906001600160a01b031681565b3480156108e657600080fd5b50600f54610441906001600160a01b031681565b34801561090657600080fd5b506104796109153660046133ff565b611462565b34801561092657600080fd5b5061047961093536600461319a565b61149a565b34801561094657600080fd5b5061047961095536600461319a565b6114a7565b34801561096657600080fd5b50610479610975366004613298565b611518565b34801561098657600080fd5b5061041461099536600461319a565b611574565b3480156109a657600080fd5b506109ba6109b5366004613453565b6115e7565b604080519283526020830191909152016103c8565b6104796109dd366004613475565b611607565b3480156109ee57600080fd5b506103f16109fd36600461319a565b601b6020526000908152604090205481565b348015610a1b57600080fd5b506103bc610a2a36600461319a565b61180a565b348015610a3b57600080fd5b506103f1600c5481565b348015610a5157600080fd5b506103bc610a603660046134ea565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b348015610a9a57600080fd5b506103f1610aa936600461319a565b61182e565b348015610aba57600080fd5b506103f160165481565b348015610ad057600080fd5b50601254610441906001600160a01b031681565b348015610af057600080fd5b506103f1600d5481565b348015610b0657600080fd5b50610479610b15366004613298565b611873565b348015610b2657600080fd5b506103f160145481565b348015610b3c57600080fd5b50610479610b4b366004613298565b6118e9565b610479610b5e366004613475565b611939565b60006001600160e01b0319821663780e9d6360e01b1480610b885750610b8882611b09565b92915050565b600080610b9a83611190565b6001600160a01b031603610bc95760405162461bcd60e51b8152600401610bc090613518565b60405180910390fd5b5060009081526019602052604090205490565b606060008054610beb9061355b565b80601f0160208091040260200160405190810160405280929190818152602001828054610c179061355b565b8015610c645780601f10610c3957610100808354040283529160200191610c64565b820191906000526020600020905b815481529060010190602001808311610c4757829003601f168201915b5050505050905090565b6000610c7982611b59565b506000908152600460205260409020546001600160a01b031690565b6000610ca082611190565b9050806001600160a01b0316836001600160a01b031603610d0d5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610bc0565b336001600160a01b0382161480610d295750610d298133610a60565b610d9b5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610bc0565b610da58383611bb8565b505050565b610db2611c26565b600d55565b610dc13382611c80565b610ddd5760405162461bcd60e51b8152600401610bc090613595565b610da5838383611cfe565b610df0611c26565b601555565b6000610e0083611240565b8210610e625760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610bc0565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b610da583838360405180602001604052806000815250611462565b610eae611e6f565b610eb6611ebc565b610ec03382610ff1565b610edc5760405162461bcd60e51b8152600401610bc090613595565b601160009054906101000a90046001600160a01b03166001600160a01b031663143c2a316040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5391906135e2565b610fdb576000610f6282610b8e565b6011546000848152601c6020526040908190205490516361b512a760e01b81526001600160a01b0391821660048201526024810184905292935016906361b512a790604401600060405180830381600087803b158015610fc157600080fd5b505af1158015610fd5573d6000803e3d6000fd5b50505050505b610fe481611f15565b610fee6001600a55565b50565b6000610ffd8383611c80565b9392505050565b60008061101083611190565b6001600160a01b0316036110365760405162461bcd60e51b8152600401610bc090613518565b5060009081526017602052604090205490565b611051611c26565b6013548110156110af5760405162461bcd60e51b815260206004820152602360248201527f63616e27742062656c6f77207468616e2063757272656e742067656e6572617460448201526234b7b760e91b6064820152608401610bc0565b601455565b6110bc611c26565b600e55565b60006110cc60085490565b821061112f5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610bc0565b60088281548110611142576111426135ff565b90600052602060002001549050919050565b6013546000908152601a6020526040812054600e54829061117690839061362b565b9050600081600d546111889190613642565b949350505050565b6000818152600260205260408120546001600160a01b031680610b885760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610bc0565b6111f8611c26565b6001600160a01b03811661121e5760405162461bcd60e51b8152600401610bc090613655565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b0382166112aa5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610bc0565b506001600160a01b031660009081526003602052604090205490565b6112ce611c26565b6112d86000611fb8565b565b6112e2611c26565b6001600160a01b0381166113085760405162461bcd60e51b8152600401610bc090613655565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000611334611e6f565b61133c611ebc565b600f546001600160a01b0316331461138c5760405162461bcd60e51b81526020600482015260136024820152723ab730baba3437b934bd32b21031b0b63632b960691b6044820152606401610bc0565b6000848152601b60205260408120546113a6906001613642565b90506014548111156113fa5760405162461bcd60e51b815260206004820152601c60248201527f63616e2774206265206f766572206d61782067656e65726174696f6e000000006044820152606401610bc0565b60008061140787876115e7565b90925090506000600261141a8385613642565b6114249190613694565b905060006114338a838761200a565b955050505050506111886001600a55565b606060018054610beb9061355b565b61145e338383612254565b5050565b61146c3383611c80565b6114885760405162461bcd60e51b8152600401610bc090613595565b61149484848484612322565b50505050565b6114a2611c26565b601655565b6114af611e6f565b6114b7611c26565b60115460405163beae207f60e01b8152600481018390526001600160a01b039091169063beae207f90602401600060405180830381600087803b1580156114fd57600080fd5b505af1158015611511573d6000803e3d6000fd5b5050505050565b611520611c26565b601280546001600160a01b0319166001600160a01b0383169081179091556040519081527f1114ada982fd54a278faff6e22bdab70f68751ea047f4c3c6bea8163a4a719599060200160405180910390a150565b606061157f82611b59565b600061159660408051602081019091526000815290565b905060008151116115b65760405180602001604052806000815250610ffd565b806115c084612355565b6040516020016115d19291906136a8565b6040516020818303038152906040529392505050565b6000806115f384610b8e565b91506115fe83610b8e565b90509250929050565b61160f611e6f565b611617611ebc565b6040516bffffffffffffffffffffffff193360601b166020820152829082906034016040516020818303038152906040528051906020012060165442116116dc576116998383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060155491508490506123e8565b6116dc5760405162461bcd60e51b81526020600482015260146024820152732737ba103bb434ba32b634b9ba32b2103ab9b2b960611b6044820152606401610bc0565b60006116e6611154565b9050803410156117435760405162461bcd60e51b815260206004820152602260248201527f496e73756666696369656e74204554482073656e6420666f72206d696e74696e604482015261339760f11b6064820152608401610bc0565b61174d33826123fe565b600061175982346136d7565b905080156117fb57604051600090339083908381818185875af1925050503d80600081146117a3576040519150601f19603f3d011682016040523d82523d6000602084013e6117a8565b606091505b50509050806117f95760405162461bcd60e51b815260206004820181905260248201527f526566756e64206f6620657863657373207061796d656e74206661696c65642e6044820152606401610bc0565b505b505050505061145e6001600a55565b600081815260196020526040812054816118256003836136ea565b15949350505050565b60008061183a83611190565b6001600160a01b0316036118605760405162461bcd60e51b8152600401610bc090613518565b5060009081526018602052604090205490565b61187b611c26565b6001600160a01b0381166118e05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bc0565b610fee81611fb8565b6118f1611c26565b6001600160a01b0381166119175760405162461bcd60e51b8152600401610bc090613655565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b611941611e6f565b611949611ebc565b6040516bffffffffffffffffffffffff193360601b16602082015282908290603401604051602081830303815290604052805190602001206016544211611a0e576119cb8383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060155491508490506123e8565b611a0e5760405162461bcd60e51b81526020600482015260146024820152732737ba103bb434ba32b634b9ba32b2103ab9b2b960611b6044820152606401610bc0565b6000611a18611154565b90506000345b828110158015611a315750600c54601d54105b15611a6957611a4033846123fe565b81611a4a816136fe565b9250611a58905083826136d7565b9050611a62611154565b9250611a1e565b80156117f957604051600090339083908381818185875af1925050503d8060008114611ab1576040519150601f19603f3d011682016040523d82523d6000602084013e611ab6565b606091505b5050905080611af85760405162461bcd60e51b815260206004820152600e60248201526d2932b33ab732103330b4b632b21760911b6044820152606401610bc0565b5050505050505061145e6001600a55565b60006001600160e01b031982166380ac58cd60e01b1480611b3a57506001600160e01b03198216635b5e139f60e01b145b80610b8857506301ffc9a760e01b6001600160e01b0319831614610b88565b6000818152600260205260409020546001600160a01b0316610fee5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610bc0565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611bed82611190565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600b546001600160a01b031633146112d85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bc0565b600080611c8c83611190565b9050806001600160a01b0316846001600160a01b03161480611cd357506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806111885750836001600160a01b0316611cec84610c6e565b6001600160a01b031614949350505050565b826001600160a01b0316611d1182611190565b6001600160a01b031614611d375760405162461bcd60e51b8152600401610bc090613717565b6001600160a01b038216611d995760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610bc0565b611da6838383600161263c565b826001600160a01b0316611db982611190565b6001600160a01b031614611ddf5760405162461bcd60e51b8152600401610bc090613717565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600b54600160a01b900460ff16156112d85760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610bc0565b6002600a5403611f0e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bc0565b6002600a55565b6000611f2082611190565b9050611f3081600084600161263c565b611f3982611190565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600c546000828152601a602052604081205490911161206b5760405162461bcd60e51b815260206004820152601760248201527f45786365656473206d6178546f6b656e7350657247656e0000000000000000006044820152606401610bc0565b601d805490600061207b836136fe565b9091555050601d5461208d8582612862565b600081815260176020908152604080832042905560198252808320879055601b8252808320869055858352601a90915281208054916120cb836136fe565b90915550506000818152601c6020908152604080832080546001600160a01b0319166001600160a01b038a16179055600c54868452601a9092529091205410801590612118575060135483145b15612125576121256129fb565b601160009054906101000a90046001600160a01b03166001600160a01b031663143c2a316040518163ffffffff1660e01b8152600401602060405180830381865afa158015612178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219c91906135e2565b61220757601154604051635c13e80160e11b81526001600160a01b038781166004830152602482018790529091169063b827d00290604401600060405180830381600087803b1580156121ee57600080fd5b505af1158015612202573d6000803e3d6000fd5b505050505b8281866001600160a01b03167febb566b3f6e54c0bd62fed4bdba1b047d20927741852161e61156b75e678f78e8760405161224491815260200190565b60405180910390a4949350505050565b816001600160a01b0316836001600160a01b0316036122b55760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610bc0565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61232d848484611cfe565b61233984848484612b36565b6114945760405162461bcd60e51b8152600401610bc09061375c565b6060600061236283612c34565b600101905060008167ffffffffffffffff811115612382576123826132b5565b6040519080825280601f01601f1916602001820160405280156123ac576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846123b657509392505050565b6000826123f58584612d0c565b14949350505050565b600c546013546000908152601a602052604090205410612420576124206129fb565b601d8054906000612430836136fe565b9091555050601d546124428382612862565b60105460408051638f1ad44160e01b815290516000926001600160a01b031691638f1ad441916004808301926020929190829003018187875af115801561248d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b191906137ae565b600083815260176020908152604080832042905560198252808320849055601354601b83528184208190558352601a90915281208054929350906124f4836136fe565b90915550506000828152601c602090815260409182902080546001600160a01b0319166001600160a01b0388811691909117909155601154835163143c2a3160e01b8152935191169263143c2a319260048083019391928290030181865afa158015612564573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258891906135e2565b6125f357601154604051635c13e80160e11b81526001600160a01b038681166004830152602482018490529091169063b827d00290604401600060405180830381600087803b1580156125da57600080fd5b505af11580156125ee573d6000803e3d6000fd5b505050505b6013546040805183815260208101869052849133917f19f5f791ee407773427bf7b970bbbc3375065c32edd1ab142e23a84f94b0719b910160405180910390a461149483612d59565b61264884848484612e7b565b600f5460405163295ac31b60e11b8152600481018490526000916001600160a01b0316906352b5863690602401602060405180830381865afa158015612692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b691906137ae565b9050836001600160a01b0316856001600160a01b0316146126e35760008381526018602052604090204290555b80156127f457600f54604051631d21604560e21b8152600481018390526000916001600160a01b031690637485811490602401608060405180830381865afa158015612733573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275791906137c7565b90508381602001511480156127815750856001600160a01b031681600001516001600160a01b0316145b801561278e575080604001515b156127f257600f5460405163bc54d6d760e01b8152600481018690526001600160a01b039091169063bc54d6d790602401600060405180830381600087803b1580156127d957600080fd5b505af11580156127ed573d6000803e3d6000fd5b505050505b505b600b54600160a01b900460ff16156115115760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b6064820152608401610bc0565b6001600160a01b0382166128b85760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610bc0565b6000818152600260205260409020546001600160a01b03161561291d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610bc0565b61292b60008383600161263c565b6000818152600260205260409020546001600160a01b0316156129905760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610bc0565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600c546013546000908152601a60205260409020541015612a5e5760405162461bcd60e51b815260206004820181905260248201527f47656e65726174696f6e206c696d6974206e6f742079657420726561636865646044820152606401610bc0565b60138054906000612a6e836136fe565b90915550506013546000908152601a6020526040812055600e54612a989065048c27395000613642565b600e55601054604080516320917abb60e21b815290516001600160a01b0390921691638245eaec9160048082019260009290919082900301818387803b158015612ae157600080fd5b505af1158015612af5573d6000803e3d6000fd5b505050507ffa7df6876fbcf0666000276873af058033b0923064c1489e1b98f59eb8253db3601354604051612b2c91815260200190565b60405180910390a1565b60006001600160a01b0384163b15612c2c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612b7a90339089908890889060040161383c565b6020604051808303816000875af1925050508015612bb5575060408051601f3d908101601f19168201909252612bb291810190613879565b60015b612c12573d808015612be3576040519150601f19603f3d011682016040523d82523d6000602084013e612be8565b606091505b508051600003612c0a5760405162461bcd60e51b8152600401610bc09061375c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611188565b506001611188565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612c735772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612c9f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612cbd57662386f26fc10000830492506010015b6305f5e1008310612cd5576305f5e100830492506008015b6127108310612ce957612710830492506004015b60648310612cfb576064830492506002015b600a8310610b885760010192915050565b600081815b8451811015612d5157612d3d82868381518110612d3057612d306135ff565b6020026020010151612fa8565b915080612d49816136fe565b915050612d11565b509392505050565b80471015612da05760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610bc0565b6012546040516000916001600160a01b03169083908381818185875af1925050503d8060008114612ded576040519150601f19603f3d011682016040523d82523d6000602084013e612df2565b606091505b5050905080612e355760405162461bcd60e51b815260206004820152600f60248201526e115512081cd95b990819985a5b1959608a1b6044820152606401610bc0565b6012546040518381526001600160a01b03909116907fdfe04cb744b4ee80624bdb008aa37bdbecda831c4e5aa3611d64ef017c5aa3339060200160405180910390a25050565b6001811115612eea5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610bc0565b816001600160a01b038516612f4657612f4181600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b612f69565b836001600160a01b0316856001600160a01b031614612f6957612f698582612fd7565b6001600160a01b038416612f8557612f8081613074565b611511565b846001600160a01b0316846001600160a01b031614611511576115118482613123565b6000818310612fc4576000828152602084905260409020610ffd565b6000838152602083905260409020610ffd565b60006001612fe484611240565b612fee91906136d7565b600083815260076020526040902054909150808214613041576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090613086906001906136d7565b600083815260096020526040812054600880549394509092849081106130ae576130ae6135ff565b9060005260206000200154905080600883815481106130cf576130cf6135ff565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061310757613107613896565b6001900381819060005260206000200160009055905550505050565b600061312e83611240565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160e01b031981168114610fee57600080fd5b60006020828403121561318f57600080fd5b8135610ffd81613167565b6000602082840312156131ac57600080fd5b5035919050565b60005b838110156131ce5781810151838201526020016131b6565b50506000910152565b600081518084526131ef8160208601602086016131b3565b601f01601f19169290920160200192915050565b602081526000610ffd60208301846131d7565b6001600160a01b0381168114610fee57600080fd5b6000806040838503121561323e57600080fd5b823561324981613216565b946020939093013593505050565b60008060006060848603121561326c57600080fd5b833561327781613216565b9250602084013561328781613216565b929592945050506040919091013590565b6000602082840312156132aa57600080fd5b8135610ffd81613216565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156132e6576132e66132b5565b604051601f8501601f19908116603f0116810190828211818310171561330e5761330e6132b5565b8160405280935085815286868601111561332757600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561335757600080fd5b843561336281613216565b93506020850135925060408501359150606085013567ffffffffffffffff81111561338c57600080fd5b8501601f8101871361339d57600080fd5b6133ac878235602084016132cb565b91505092959194509250565b8015158114610fee57600080fd5b600080604083850312156133d957600080fd5b82356133e481613216565b915060208301356133f4816133b8565b809150509250929050565b6000806000806080858703121561341557600080fd5b843561342081613216565b9350602085013561343081613216565b925060408501359150606085013567ffffffffffffffff81111561338c57600080fd5b6000806040838503121561346657600080fd5b50508035926020909101359150565b6000806020838503121561348857600080fd5b823567ffffffffffffffff808211156134a057600080fd5b818501915085601f8301126134b457600080fd5b8135818111156134c357600080fd5b8660208260051b85010111156134d857600080fd5b60209290920196919550909350505050565b600080604083850312156134fd57600080fd5b823561350881613216565b915060208301356133f481613216565b60208082526023908201527f4552433732313a20717565727920666f72206e6f6e6578697374656e7420746f60408201526235b2b760e91b606082015260800190565b600181811c9082168061356f57607f821691505b60208210810361358f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6000602082840312156135f457600080fd5b8151610ffd816133b8565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610b8857610b88613615565b80820180821115610b8857610b88613615565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826136a3576136a361367e565b500490565b600083516136ba8184602088016131b3565b8351908301906136ce8183602088016131b3565b01949350505050565b81810381811115610b8857610b88613615565b6000826136f9576136f961367e565b500690565b60006001820161371057613710613615565b5060010190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000602082840312156137c057600080fd5b5051919050565b6000608082840312156137d957600080fd5b6040516080810181811067ffffffffffffffff821117156137fc576137fc6132b5565b604052825161380a81613216565b8152602083810151908201526040830151613824816133b8565b60408201526060928301519281019290925250919050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061386f908301846131d7565b9695505050505050565b60006020828403121561388b57600080fd5b8151610ffd81613167565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220f31a704eecc2abf12e7f640d7348f3a1ddcf0499467312facdd505cddfba4c8a64736f6c63430008140033