6080604052635bb19bc0600055635bc2bf406001556000600460146101000a81548160ff0219169083151502179055506001600460156101000a81548160ff02191690831515021790555034801561005657600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061344a806100a76000396000f3fe6080604052600436106101d4576000357c0100000000000000000000000000000000000000000000000000000000900480638da5cb5b11610109578063bca7a9e2116100a7578063d73019e911610081578063d73019e9146109bf578063dd62ed3e146109ea578063e34e32c014610a6f578063e4c5ff4614610ac0576101d4565b8063bca7a9e214610928578063c3e06be914610957578063d344e01b146109a8576101d4565b80639d735286116100e35780639d735286146108585780639e542af91461086f578063a9059cbb1461089e578063b57934e414610911576101d4565b80638da5cb5b1461072057806395d89b41146107775780639610b1bc14610807576101d4565b80632a62738b11610176578063551a537611610150578063551a5376146105fc5780636bf82d741461064d57806370a08231146106a45780637d4d312814610709576101d4565b80632a62738b1461054d578063313ce5671461057857806342966c68146105a9576101d4565b80630fe09c1f116101b25780630fe09c1f146103fb57806318160ddd1461046457806323548b8b1461048f57806323b872dd146104ba576101d4565b8063037c983a146102e157806306fdde03146102f8578063095ea7b314610388575b60005442101580156101e7575060015442105b151561025b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43726f776453616c65206973206e6f742072756e6e696e67000000000000000081525060200191505060405180910390fd5b600460159054906101000a900460ff1615156102df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f49434f2073746f7070656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b005b3480156102ed57600080fd5b506102f6610b1b565b005b34801561030457600080fd5b5061030d610c39565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561034d578082015181840152602081019050610332565b50505050905090810190601f16801561037a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039457600080fd5b506103e1600480360360408110156103ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c76565b604051808215151515815260200191505060405180910390f35b34801561040757600080fd5b5061044a6004803603602081101561041e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061112a565b604051808215151515815260200191505060405180910390f35b34801561047057600080fd5b50610479611180565b6040518082815260200191505060405180910390f35b34801561049b57600080fd5b506104a461118a565b6040518082815260200191505060405180910390f35b3480156104c657600080fd5b50610533600480360360608110156104dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061119e565b604051808215151515815260200191505060405180910390f35b34801561055957600080fd5b5061056261191c565b6040518082815260200191505060405180910390f35b34801561058457600080fd5b5061058d611926565b604051808260ff1660ff16815260200191505060405180910390f35b3480156105b557600080fd5b506105e2600480360360208110156105cc57600080fd5b810190808035906020019092919050505061192f565b604051808215151515815260200191505060405180910390f35b34801561060857600080fd5b5061064b6004803603602081101561061f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b97565b005b34801561065957600080fd5b50610662611d0a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b057600080fd5b506106f3600480360360208110156106c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d34565b6040518082815260200191505060405180910390f35b34801561071557600080fd5b5061071e611d7d565b005b34801561072c57600080fd5b50610735611f15565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561078357600080fd5b5061078c611f3f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107cc5780820151818401526020810190506107b1565b50505050905090810190601f1680156107f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561081357600080fd5b506108566004803603602081101561082a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f7c565b005b34801561086457600080fd5b5061086d6120ef565b005b34801561087b57600080fd5b50610884612294565b604051808215151515815260200191505060405180910390f35b3480156108aa57600080fd5b506108f7600480360360408110156108c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506122ab565b604051808215151515815260200191505060405180910390f35b34801561091d57600080fd5b50610926612808565b005b34801561093457600080fd5b5061093d612926565b604051808215151515815260200191505060405180910390f35b34801561096357600080fd5b506109a66004803603602081101561097a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061293d565b005b3480156109b457600080fd5b506109bd612b2e565b005b3480156109cb57600080fd5b506109d4612cc6565b6040518082815260200191505060405180910390f35b3480156109f657600080fd5b50610a5960048036036040811015610a0d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ccf565b6040518082815260200191505060405180910390f35b348015610a7b57600080fd5b50610abe60048036036020811015610a9257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d56565b005b348015610acc57600080fd5b50610b1960048036036040811015610ae357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612f47565b005b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610be0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b6001600460156101000a81548160ff0219169083151502179055507f5571373430bfff0f943720da3e22ef49c5abb2e8d16cae3f14d4f14836d544286001604051808215151515815260200191505060405180910390a1565b60606040805190810160405280600b81526020017f5720475245454e20504159000000000000000000000000000000000000000000815250905090565b60006001544210151515610cf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776453616c652069732072756e6e696e6700000000000000000000000081525060200191505060405180910390fd5b600460149054906101000a900460ff16151515610d77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f546f6b656e206c6f636b6564000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610e1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416464726573732063616e206e6f74206265203078300000000000000000000081525060200191505060405180910390fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610eb6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806133fc6023913960400191505060405180910390fd5b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f53656e6465722061646472657373206973206c6f636b6564000000000000000081525060200191505060405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561103a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5370656e6465722061646472657373206973206c6f636b65640000000000000081525060200191505060405180910390fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600254905090565b60006b01f04ef12cb04cf158000000905090565b6000600154421015151561121a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776453616c652069732072756e6e696e6700000000000000000000000081525060200191505060405180910390fd5b600460149054906101000a900460ff1615151561129f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f546f6b656e206c6f636b6564000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611344576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f52656365697665722063616e206e6f742062652030783000000000000000000081525060200191505060405180910390fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156113fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536f7572636527732062616c616e6365206973206e6f7420656e6f756768000081525060200191505060405180910390fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156114ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f416c6c6f77616e6365206973206e6f7420656e6f75676800000000000000000081525060200191505060405180910390fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f46726f6d2061646472657373206973206c6f636b65640000000000000000000081525060200191505060405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f52656365697665722061646472657373206973206c6f636b656400000000000081525060200191505060405180910390fd5b6116c582600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461305d90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061179782600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461305d90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061186982600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000600154905090565b60006012905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515611a90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806133fc6023913960400191505060405180910390fd5b611ae282600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461305d90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b3a8260025461305d90919063ffffffff16565b6002819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f187fdc040fcaca1dc87d7e02d75429a92dc3a848899b7b3a4b30669748cefa156001604051808215151515815260200191505060405180910390a250565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b6001544210151515611ebc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776453616c652069732072756e6e696e6700000000000000000000000081525060200191505060405180910390fd5b6000600460146101000a81548160ff0219169083151502179055507f894c72eea98e97be029b3bcd6b96500cb0cc6369765f319984805cfe84d7dd9a6000604051808215151515815260200191505060405180910390a1565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040805190810160405280600381526020017f5747500000000000000000000000000000000000000000000000000000000000815250905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612041576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f187fdc040fcaca1dc87d7e02d75429a92dc3a848899b7b3a4b30669748cefa156000604051808215151515815260200191505060405180910390a250565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156121b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561221257600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015612291573d6000803e3d6000fd5b50565b6000600460159054906101000a900460ff16905090565b60006001544210151515612327576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776453616c652069732072756e6e696e6700000000000000000000000081525060200191505060405180910390fd5b600460149054906101000a900460ff161515156123ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f546f6b656e206c6f636b6564000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612451576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f52656365697665722063616e206e6f742062652030783000000000000000000081525060200191505060405180910390fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156124eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806133fc6023913960400191505060405180910390fd5b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156125ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f53656e6465722061646472657373206973206c6f636b6564000000000000000081525060200191505060405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561266f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f52656365697665722061646472657373206973206c6f636b656400000000000081525060200191505060405180910390fd5b6126c182600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461305d90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061275682600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b6000600460156101000a81548160ff0219169083151502179055507f5571373430bfff0f943720da3e22ef49c5abb2e8d16cae3f14d4f14836d544286000604051808215151515815260200191505060405180910390a1565b6000600460149054906101000a900460ff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612aa7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416464726573732063616e206e6f74206265203078300000000000000000000081525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f4a2ec18264bbdd16b633de13edfc2756c0c761c927de5a7bdb87e3071a6009cd60405160405180910390a250565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612bf3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b6001544210151515612c6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776453616c652069732072756e6e696e6700000000000000000000000081525060200191505060405180910390fd5b6001600460146101000a81548160ff0219169083151502179055507f894c72eea98e97be029b3bcd6b96500cb0cc6369765f319984805cfe84d7dd9a6001604051808215151515815260200191505060405180910390a1565b60008054905090565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612e1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612ec0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416464726573732063616e206e6f74206265203078300000000000000000000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167ff853f657890f173ede6ab1b601d3d7f6b228bdd2916ef68c8b060c377c82e7cb60405160405180910390a250565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561300c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b6000613029670de0b6b3a76400008361309a90919063ffffffff16565b9050613058600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684836130d8565b505050565b600082821115151561306e57600080fd5b818303905092915050565b600080828401905083811015151561309057600080fd5b8091505092915050565b6000808314156130ad57600090506130d2565b600082840290508284828115156130c057fe5b041415156130cd57600080fd5b809150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561317d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416464726573732063616e206e6f74206265203078300000000000000000000081525060200191505060405180910390fd5b6000811115156131f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f56616c75652073686f756c64206c6172676572207468616e203000000000000081525060200191505060405180910390fd5b61324781600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307990919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061329f8160025461307990919063ffffffff16565b6002819055506b01f04ef12cb04cf1580000006002541115151561332b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f43726f776453616c6520686974206d617820636170000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8836040518082815260200191505060405180910390a38173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505056fe42616c616e636520646f6573206e6f74206861766520656e6f75676820746f6b656e73a165627a7a72305820b90ddb2336626bedbdfc2fb4285d7077361285a41d92f41b21e2431b6887e2fc0029