0x608060405234801561001057600080fd5b50600054610100900460ff168061002a575060005460ff16155b6100915760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600054610100900460ff161580156100b3576000805461ffff19166101011790555b80156100c5576000805461ff00191690555b50611f83806100d56000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063854030a01161011a578063c310b884116100ad578063dd1e01221161007c578063dd1e0122146103ff578063e3d670d71461041f578063e78a587514610432578063fe2868621461043a578063fe9d4f2f1461045d57600080fd5b8063c310b884146103be578063ca628c78146103d1578063d56805e1146103d9578063d95dce5b146103ec57600080fd5b80638ed5f297116100e95780638ed5f2971461035e578063905d541114610371578063974050fc14610384578063a4baf7501461038d57600080fd5b8063854030a01461031c57806386489ba9146103255780638754269114610338578063894760691461034b57600080fd5b80634bf0d331116101925780635b31bf7d116101615780635b31bf7d146102ef5780636215be77146102f85780636702a5951461030b5780638456cb591461031457600080fd5b80634bf0d33114610277578063531b68a11461028a57806354fd4d501461029d57806359c596c8146102dc57600080fd5b80633b3f5e36116101ce5780633b3f5e361461020a578063430d377f146102415780634897ecd11461024a5780634ba876511461025357600080fd5b8063046f7da2146102005780630f3a9f651461020a5780631a7bc49c1461021d5780632bc89fdd14610239575b600080fd5b610208610465565b005b610208610218366004611d4d565b610546565b61022660065481565b6040519081526020015b60405180910390f35b6102266105f0565b61022660025481565b61022660055481565b60005461026790600160b01b900460ff1681565b6040519015158152602001610230565b610267610285366004611c85565b610630565b610208610298366004611d4d565b6106a1565b604080518082018252601b81527f5374616b696e67416e7974696d65466f72506572696f64207631300000000000602082015290516102309190611e26565b6102086102ea366004611d4d565b61070f565b61022660095481565b610208610306366004611d4d565b61076d565b61022660035481565b610208610777565b61022660085481565b610208610333366004611ca1565b610852565b610226610346366004611dac565b610a60565b610208610359366004611c85565b610a91565b61022661036c366004611c85565b610e6c565b61020861037f366004611d4d565b610fa2565b61022660045481565b6000546103a6906201000090046001600160a01b031681565b6040516001600160a01b039091168152602001610230565b6102086103cc366004611d7d565b611000565b610208611357565b6001546103a6906001600160a01b031681565b6102266103fa366004611dac565b611362565b61041261040d366004611cf9565b611388565b6040516102309190611dd7565b61041261042d366004611c85565b61155c565b610267611572565b610226610448366004611c85565b60076020526000908152604090206001015481565b610208611593565b6000546040805180820190915260188152600080516020611f2e8339815191526020820152906201000090046001600160a01b031633146104c25760405162461bcd60e51b81526004016104b99190611e26565b60405180910390fd5b5060005460408051808201909152600a815269139bdd081c185d5cd95960b21b602082015290600160b01b900460ff1661050f5760405162461bcd60e51b81526004016104b99190611e26565b506000805460ff60b01b191681556040517f490d6d11e278f168be9be39e46297f72ea877136d5bccad9cf4993e63a29568f9190a1565b6000546040805180820190915260188152600080516020611f2e8339815191526020820152906201000090046001600160a01b0316331461059a5760405162461bcd60e51b81526004016104b99190611e26565b50600654604080518082019091526016815275436f6e7461637420616c726561647920696e2075736560501b602082015290156105ea5760405162461bcd60e51b81526004016104b99190611e26565b50600555565b60008054600160b01b900460ff16156106095750600090565b600254600654101561062a576006546002546106259190611ed0565b905090565b50600090565b60006001600160a01b03821615806106515750600054600160b01b900460ff165b80610660575060025460065410155b1561066d57506000919050565b6001600160a01b0382166000908152600760205260409020600354600182015482546106999190611ed0565b109392505050565b6000546040805180820190915260188152600080516020611f2e8339815191526020820152906201000090046001600160a01b031633146106f55760405162461bcd60e51b81526004016104b99190611e26565b5061070c816002546107079190611e79565b6117ba565b50565b6000546040805180820190915260188152600080516020611f2e8339815191526020820152906201000090046001600160a01b031633146107635760405162461bcd60e51b81526004016104b99190611e26565b5061070c816117ba565b61070c8133611000565b6000546040805180820190915260188152600080516020611f2e8339815191526020820152906201000090046001600160a01b031633146107cb5760405162461bcd60e51b81526004016104b99190611e26565b5060005460408051808201909152600681526514185d5cd95960d21b602082015290600160b01b900460ff16156108155760405162461bcd60e51b81526004016104b99190611e26565b506000805460ff60b01b1916600160b01b1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a1565b600054610100900460ff168061086b575060005460ff16155b6108ce5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104b9565b600054610100900460ff161580156108f0576000805461ffff19166101011790555b60408051808201909152601581527416995c9bc81859191c995cdcc81c1c9bdd9a591959605a1b60208201526001600160a01b0388166109435760405162461bcd60e51b81526004016104b99190611e26565b5060408051808201909152601581527416995c9bc81859191c995cdcc81c1c9bdd9a591959605a1b60208201526001600160a01b0387166109975760405162461bcd60e51b81526004016104b99190611e26565b5060408051808201909152601081526f14195c9a5bd9081d1bdbc81cdb585b1b60821b6020820152603c8310156109e15760405162461bcd60e51b81526004016104b99190611e26565b506000805462010000600160b01b031916620100006001600160a01b038a81169190910291909117909155600180546001600160a01b03191691881691909117905560058290556004839055610a3684611b76565b8415610a4557610a45856117ba565b8015610a57576000805461ff00191690555b50505050505050565b600064496cebb80082610a738587611eb1565b610a7d9190611eb1565b610a879190611e91565b90505b9392505050565b60005460408051808201909152600681526514185d5cd95960d21b602082015290600160b01b900460ff1615610ada5760405162461bcd60e51b81526004016104b99190611e26565b5060408051808201909152601581527416995c9bc81859191c995cdcc81c1c9bdd9a591959605a1b60208201526001600160a01b038216610b2e5760405162461bcd60e51b81526004016104b99190611e26565b50336000908152600760209081526040918290208054835180850190945260138452724e6f7468696e6720746f20776974686472617760681b928401929092529190610b8d5760405162461bcd60e51b81526004016104b99190611e26565b508054600354600183015460009283928392610bb29291610bad91611e79565b611c41565b60018501549091505b81811015610cb957600554856000018281548110610be957634e487b7160e01b600052603260045260246000fd5b906000526020600020906002020160000154610c059190611e79565b4210610ca457846000018181548110610c2e57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600202016001015493506000856000018281548110610c6757634e487b7160e01b600052603260045260246000fd5b6000918252602082206001600290920201810192909255908601805491610c8d83611ee7565b90915550610c9d90508484611e79565b9250610ca9565b610cb9565b610cb281611ee7565b9050610bbb565b5060408051808201909152601481527316995c9bc81dda5d1a191c985dc8185b5bdd5b9d60621b602082015282610d035760405162461bcd60e51b81526004016104b99190611e26565b508160066000828254610d169190611ed0565b925050819055508160026000828254610d2f9190611ed0565b90915550610d3e905082611c58565b610d489083611e79565b60015460405163a9059cbb60e01b81526001600160a01b0388811660048301526024820184905292945091169063a9059cbb90604401602060405180830381600087803b158015610d9857600080fd5b505af1158015610dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd09190611d2d565b60405180604001604052806013815260200172151bdad95b881d1c985b9cd9995c8819985a5b606a1b81525090610e1a5760405162461bcd60e51b81526004016104b99190611e26565b506002546040805184815260208101929092526001600160a01b0387169133917fa708f6433a1b53b1e6af0c278ad548516ef5eab45716a7f85657ee720cd2ece0910160405180910390a35050505050565b60008054600160b01b900460ff1615610e8757506000919050565b6001600160a01b03821660009081526007602052604090206001810154815411610eb45750600092915050565b80546003546001830154600092610ed1929091610bad9190611e79565b60018301549091505b81811015610f8657600554836000018281548110610f0857634e487b7160e01b600052603260045260246000fd5b906000526020600020906002020160000154610f249190611e79565b4210610f7157826000018181548110610f4d57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600202016001015484610f6a9190611e79565b9350610f76565b610f86565b610f7f81611ee7565b9050610eda565b50610f9083611c58565b610f9a9084611e79565b949350505050565b6000546040805180820190915260188152600080516020611f2e8339815191526020820152906201000090046001600160a01b03163314610ff65760405162461bcd60e51b81526004016104b99190611e26565b5061070c81611b76565b60005460408051808201909152600681526514185d5cd95960d21b602082015290600160b01b900460ff16156110495760405162461bcd60e51b81526004016104b99190611e26565b506002548260065461105b9190611e79565b11156040518060400160405280601881526020017f436f6c6c61746572616c206c696d697420726561636865640000000000000000815250906110b15760405162461bcd60e51b81526004016104b99190611e26565b5060408051808201909152601381527216995c9bc819195c1bdcda5d08185b5bdd5b9d606a1b6020820152826110fa5760405162461bcd60e51b81526004016104b99190611e26565b5060408051808201909152601581527416995c9bc81859191c995cdcc81c1c9bdd9a591959605a1b60208201526001600160a01b03821661114e5760405162461bcd60e51b81526004016104b99190611e26565b506001600160a01b03811660009081526007602052604090206003546001820154825461117b9190611ed0565b106040518060400160405280601981526020017f55736572207374616b6573206c696d6974207265616368656400000000000000815250906111d05760405162461bcd60e51b81526004016104b99190611e26565b506001546040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b03909116906323b872dd90606401602060405180830381600087803b15801561122357600080fd5b505af1158015611237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125b9190611d2d565b60405180604001604052806013815260200172151bdad95b881d1c985b9cd9995c8819985a5b606a1b815250906112a55760405162461bcd60e51b81526004016104b99190611e26565b5082600660008282546112b89190611e79565b9250508190555082600960008282546112d19190611e79565b909155505060408051808201825242815260208082018681528454600181810187556000878152939093209351600290910290930192835551910155516001600160a01b0383169033907fe31c7b8d08ee7db0afa68782e1028ef92305caeea8626633ad44d413e30f6b2f9061134a9087815260200190565b60405180910390a3505050565b61136033610a91565b565b600061136e8284611eb1565b61137a85612710611eb1565b610a7d906301e13380611eb1565b60606001600160a01b038416158015906113a157508115155b15611516576001600160a01b038416600090815260076020526040902060018101546113cd9085611e79565b81549094508410156115145780546000906113ec90610bad8688611e79565b905060006113fa8683611ed0565b67ffffffffffffffff81111561142057634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561146557816020015b604080518082019091526000808252602082015281526020019060019003908161143e5790505b509050855b828110156115095783600001818154811061149557634e487b7160e01b600052603260045260246000fd5b9060005260206000209060020201604051806040016040529081600082015481526020016001820154815250508288836114cf9190611ed0565b815181106114ed57634e487b7160e01b600052603260045260246000fd5b60200260200101819052508061150290611ee7565b905061146a565b509250610a8a915050565b505b6040805160008082526020820190925290611553565b604080518082019091526000808252602082015281526020019060019003908161152c5790505b50949350505050565b606061156c826000600354611388565b92915050565b60008054600160b01b900460ff161580156106255750506002546006541090565b6000546040805180820190915260188152600080516020611f2e8339815191526020820152906201000090046001600160a01b031633146115e75760405162461bcd60e51b81526004016104b99190611e26565b506001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561162c57600080fd5b505afa158015611640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116649190611d65565b90506000600654611676600254611c58565b6116809190611e79565b90508082116040518060400160405280601481526020017316995c9bc81dda5d1a191c985dc8185b5bdd5b9d60621b815250906116d05760405162461bcd60e51b81526004016104b99190611e26565b506001546001600160a01b031663a9059cbb336116ed8486611ed0565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561173357600080fd5b505af1158015611747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176b9190611d2d565b60405180604001604052806013815260200172151bdad95b881d1c985b9cd9995c8819985a5b606a1b815250906117b55760405162461bcd60e51b81526004016104b99190611e26565b505050565b8060025414156040518060400160405280600c81526020016b416c726561647920646f6e6560a01b815250906118035760405162461bcd60e51b81526004016104b99190611e26565b506006548110156040518060400160405280601581526020017414dd185ad9481b1a5b5a5d081d1bdbc81cdb585b1b605a1b815250906118565760405162461bcd60e51b81526004016104b99190611e26565b5060025460408051828152602081018490527e55b3973f264d73b0d7e86bc665092c240a5a1a5d0a4f218c6ce4a7ae749fa4910160405180910390a1818110156118c0576118a48183611ed0565b600860008282546118b59190611e79565b909155506118e99050565b808210156118e9576118d28282611ed0565b600860008282546118e39190611ed0565b90915550505b60028290556001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561193257600080fd5b505afa158015611946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196a9190611d65565b9050600060065461197a85611c58565b6119849190611e79565b905080821115611a78576001546001600160a01b031663a9059cbb336119aa8486611ed0565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156119f057600080fd5b505af1158015611a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a289190611d2d565b60405180604001604052806013815260200172151bdad95b881d1c985b9cd9995c8819985a5b606a1b81525090611a725760405162461bcd60e51b81526004016104b99190611e26565b50611b70565b80821015611b70576001546001600160a01b03166323b872dd3330611a9d8686611ed0565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401602060405180830381600087803b158015611aec57600080fd5b505af1158015611b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b249190611d2d565b60405180604001604052806013815260200172151bdad95b881d1c985b9cd9995c8819985a5b606a1b81525090611b6e5760405162461bcd60e51b81526004016104b99190611e26565b505b50505050565b8060035414156040518060400160405280600c81526020016b416c726561647920646f6e6560a01b81525090611bbf5760405162461bcd60e51b81526004016104b99190611e26565b5060408051808201909152600a81526916995c9bc81b1a5b5a5d60b21b602082015281611bff5760405162461bcd60e51b81526004016104b99190611e26565b5060035460408051918252602082018390527fe581cf47e006e1263d6dd370061dee5e9c92e9387762dcd3855e4a393984a81b910160405180910390a1600355565b600081831115611c515781610a8a565b5090919050565b600064496cebb80060055460045484611c719190611eb1565b611c7b9190611eb1565b61156c9190611e91565b600060208284031215611c96578081fd5b8135610a8a81611f18565b60008060008060008060c08789031215611cb9578182fd5b8635611cc481611f18565b95506020870135611cd481611f18565b95989597505050506040840135936060810135936080820135935060a0909101359150565b600080600060608486031215611d0d578283fd5b8335611d1881611f18565b95602085013595506040909401359392505050565b600060208284031215611d3e578081fd5b81518015158114610a8a578182fd5b600060208284031215611d5e578081fd5b5035919050565b600060208284031215611d76578081fd5b5051919050565b60008060408385031215611d8f578182fd5b823591506020830135611da181611f18565b809150509250929050565b600080600060608486031215611dc0578283fd5b505081359360208301359350604090920135919050565b602080825282518282018190526000919060409081850190868401855b82811015611e1957815180518552860151868501529284019290850190600101611df4565b5091979650505050505050565b6000602080835283518082850152825b81811015611e5257858101830151858201604001528201611e36565b81811115611e635783604083870101525b50601f01601f1916929092016040019392505050565b60008219821115611e8c57611e8c611f02565b500190565b600082611eac57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611ecb57611ecb611f02565b500290565b600082821015611ee257611ee2611f02565b500390565b6000600019821415611efb57611efb611f02565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461070c57600080fdfe417661696c61626c6520666f722061646d696e206f6e6c790000000000000000a26469706673582212200bbf66dc8037d23176b06f634c4b2388b311f2ff4e2ef5403f3445bdef16e63864736f6c63430008040033