0x60c060405260646002553480156200001657600080fd5b506040516200194c3803806200194c833981016040819052620000399162000254565b620000466000336200019a565b6001600160a01b039182166080521660a05260016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49805463ffffffff19908116600c179091557fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f805460509083161790557fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f8054821660321790557f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b805460449083161790557fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b5676438054821660c81790557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c8054609690831617905560066000527f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a805490911660fa17905562000293565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000237576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001f63390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6001600160a01b03811681146200025157600080fd5b50565b600080604083850312156200026857600080fd5b825162000275816200023b565b602084015190925062000288816200023b565b809150509250929050565b60805160a05161167e620002ce6000396000818161019e015261078d0152600081816101dd015281816106db01526108de015261167e6000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806391d14854116100cd578063cbfc6a9211610081578063d547741f11610066578063d547741f1461037a578063d918b2281461038d578063dd8dc0e2146103a057600080fd5b8063cbfc6a9214610334578063d391f7441461035a57600080fd5b8063ab81b6fe116100b2578063ab81b6fe146102fb578063b73ef5871461030e578063be77fdd71461032157600080fd5b806391d14854146102bc578063a217fddf146102f357600080fd5b80632f2ff15d116101245780634e8af0ce116101095780634e8af0ce146102615780636af41ba314610289578063850bdb6a1461029c57600080fd5b80632f2ff15d1461023957806336568abe1461024e57600080fd5b80631be6dd64116101555780631be6dd64146101d8578063248a9ca3146101ff578063295cd3de1461023057600080fd5b806301ffc9a71461017157806314d6704914610199575b600080fd5b61018461017f3660046111bf565b6103b3565b60405190151581526020015b60405180910390f35b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610190565b6101c07f000000000000000000000000000000000000000000000000000000000000000081565b61022261020d3660046111e9565b60009081526020819052604090206001015490565b604051908152602001610190565b61022260025481565b61024c610247366004611217565b6103ea565b005b61024c61025c366004611217565b610414565b61027461026f36600461125b565b6104a5565b60405163ffffffff9091168152602001610190565b61024c6102973660046112d3565b6104f8565b6102226102aa3660046111e9565b60036020526000908152604090205481565b6101846102ca366004611217565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b610222600081565b61024c610309366004611361565b6105b1565b61024c61031c36600461139d565b610627565b61024c61032f366004611361565b61068b565b6102746103423660046113c7565b60016020526000908152604090205463ffffffff1681565b61036d6103683660046111e9565b610ac4565b60405161019091906113e2565b61024c610388366004611217565b610cfa565b61024c61039b3660046111e9565b610d1f565b6102746103ae36600461125b565b610d30565b60006001600160e01b03198216637965db0b60e01b14806103e457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008281526020819052604090206001015461040581610e67565b61040f8383610e74565b505050565b6001600160a01b03811633146104975760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6104a18282610f12565b5050565b6000828152600360205260408120600101818360068111156104c9576104c961142c565b60068111156104da576104da61142c565b815260208101919091526040016000205463ffffffff169392505050565b828114610518576040516334080bf760e01b815260040160405180910390fd5b600083900361053a576040516334080bf760e01b815260040160405180910390fd5b60005b838110156105a9576105978686868481811061055b5761055b611442565b905060200201602081019061057091906113c7565b85858581811061058257610582611442565b905060200201602081019061032f9190611458565b806105a181611489565b91505061053d565b505050505050565b60006105bc81610e67565b600084815260036020526040812083916001909101908560068111156105e4576105e461142c565b60068111156105f5576105f561142c565b815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff16021790555050505050565b600061063281610e67565b81600160008560068111156106495761064961142c565b600681111561065a5761065a61142c565b815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff160217905550505050565b8063ffffffff166000036106b2576040516317eeb33960e31b815260040160405180910390fd5b8063ffffffff166002546106c691906114a2565b6040516304b0ab3160e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630961566290602401602060405180830381865afa15801561072a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074e91906114b9565b101561076d5760405163384d3c5960e01b815260040160405180910390fd5b6040516331a9108f60e11b81526004810184905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156107d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f891906114d2565b6001600160a01b03161461081f57604051630377ebfd60e61b815260040160405180910390fd5b600083815260036020526040812082916001909101908460068111156108475761084761142c565b60068111156108585761085861142c565b8152602081019190915260400160002054610879919063ffffffff166114ef565b63ffffffff16600160008460068111156108955761089561142c565b60068111156108a6576108a661142c565b815260208101919091526040016000205463ffffffff1610156108dc5760405163013b898960e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e0619a20338363ffffffff1660025461092091906114a2565b6040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260606044820152600b60648201527f4e6f726d616c4761636861000000000000000000000000000000000000000000608482015260a401600060405180830381600087803b15801561099a57600080fd5b505af11580156109ae573d6000803e3d6000fd5b5050506000848152600360205260408120839250600101908460068111156109d8576109d861142c565b60068111156109e9576109e961142c565b8152602081019190915260400160009081208054909190610a1190849063ffffffff166114ef565b92506101000a81548163ffffffff021916908363ffffffff160217905550827f59f525116408fe670f1cb0d34e00410fab9434a3d42b09f70de947fd742876d182600360008781526020019081526020016000206001016000866006811115610a7c57610a7c61142c565b6006811115610a8d57610a8d61142c565b8152602080820192909252604090810160002054815163ffffffff94851681529316918301919091520160405180910390a2505050565b6040805160078082526101008201909252606091600091906020820160e0803683375050506000848152600360209081526040808320838052600101909152812054825192935063ffffffff1691839190610b2157610b21611442565b63ffffffff9283166020918202929092018101919091526000858152600382526040808220600180845290810190935290205483519216918391908110610b6a57610b6a611442565b63ffffffff92831660209182029290920181019190915260008581526003825260408082206002808452600190910190935290205483519216918391908110610bb557610bb5611442565b63ffffffff9283166020918202929092018101919091526000858152600380835260408083208284526001019093529190205483519216918391908110610bfe57610bfe611442565b63ffffffff92831660209182029290920181019190915260008581526003825260408082206004808452600190910190935290205483519216918391908110610c4957610c49611442565b63ffffffff92831660209182029290920181019190915260008581526003825260408082206005808452600190910190935290205483519216918391908110610c9457610c94611442565b63ffffffff92831660209182029290920181019190915260008581526003825260408082206006808452600190910190935290205483519216918391908110610cdf57610cdf611442565b63ffffffff9092166020928302919091019091015292915050565b600082815260208190526040902060010154610d1581610e67565b61040f8383610f12565b6000610d2a81610e67565b50600255565b600082815260036020526040812060010181836006811115610d5457610d5461142c565b6006811115610d6557610d6561142c565b8152602081019190915260400160009081205463ffffffff1690600190846006811115610d9457610d9461142c565b6006811115610da557610da561142c565b815260208101919091526040016000205463ffffffff161015610dca575060006103e4565b600083815260036020526040812060010190836006811115610dee57610dee61142c565b6006811115610dff57610dff61142c565b8152602081019190915260400160009081205463ffffffff1690600190846006811115610e2e57610e2e61142c565b6006811115610e3f57610e3f61142c565b8152602081019190915260400160002054610e60919063ffffffff16611529565b9392505050565b610e718133610f91565b50565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166104a1576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610ece3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16156104a1576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166104a157610fc281611004565b610fcd836020611016565b604051602001610fde92919061156a565b60408051601f198184030181529082905262461bcd60e51b825261048e916004016115eb565b60606103e46001600160a01b03831660145b606060006110258360026114a2565b61103090600261161e565b67ffffffffffffffff81111561104857611048611513565b6040519080825280601f01601f191660200182016040528015611072576020820181803683370190505b509050600360fc1b8160008151811061108d5761108d611442565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106110bc576110bc611442565b60200101906001600160f81b031916908160001a90535060006110e08460026114a2565b6110eb90600161161e565b90505b6001811115611170577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061112c5761112c611442565b1a60f81b82828151811061114257611142611442565b60200101906001600160f81b031916908160001a90535060049490941c9361116981611631565b90506110ee565b508315610e605760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161048e565b6000602082840312156111d157600080fd5b81356001600160e01b031981168114610e6057600080fd5b6000602082840312156111fb57600080fd5b5035919050565b6001600160a01b0381168114610e7157600080fd5b6000806040838503121561122a57600080fd5b82359150602083013561123c81611202565b809150509250929050565b80356007811061125657600080fd5b919050565b6000806040838503121561126e57600080fd5b8235915061127e60208401611247565b90509250929050565b60008083601f84011261129957600080fd5b50813567ffffffffffffffff8111156112b157600080fd5b6020830191508360208260051b85010111156112cc57600080fd5b9250929050565b6000806000806000606086880312156112eb57600080fd5b85359450602086013567ffffffffffffffff8082111561130a57600080fd5b61131689838a01611287565b9096509450604088013591508082111561132f57600080fd5b5061133c88828901611287565b969995985093965092949392505050565b803563ffffffff8116811461125657600080fd5b60008060006060848603121561137657600080fd5b8335925061138660208501611247565b91506113946040850161134d565b90509250925092565b600080604083850312156113b057600080fd5b6113b983611247565b915061127e6020840161134d565b6000602082840312156113d957600080fd5b610e6082611247565b6020808252825182820181905260009190848201906040850190845b8181101561142057835163ffffffff16835292840192918401916001016113fe565b50909695505050505050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561146a57600080fd5b610e608261134d565b634e487b7160e01b600052601160045260246000fd5b60006001820161149b5761149b611473565b5060010190565b80820281158282048414176103e4576103e4611473565b6000602082840312156114cb57600080fd5b5051919050565b6000602082840312156114e457600080fd5b8151610e6081611202565b63ffffffff81811683821601908082111561150c5761150c611473565b5092915050565b634e487b7160e01b600052604160045260246000fd5b63ffffffff82811682821603908082111561150c5761150c611473565b60005b83811015611561578181015183820152602001611549565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516115a2816017850160208801611546565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516115df816028840160208801611546565b01602801949350505050565b602081526000825180602084015261160a816040850160208701611546565b601f01601f19169190910160400192915050565b808201808211156103e4576103e4611473565b60008161164057611640611473565b50600019019056fea26469706673582212209e1b2fba6a2dda1d3c1f565054e9bb7885f8ffae3a28b9aaf701be24558a3dd064736f6c6343000813003300000000000000000000000042c5023d0f9843c0bf93e324a907c61460eb024a00000000000000000000000099f419934192f8de7bf53b490d5bdb88527654bf