608060405264e8d4a510006005556404a817c8006006556404a817c8006007556329b927006008556706f05b59d3b200006009556003600a556003600b556003600c556006600d556003600e556003600f556003601055600e60115560165460125560175460135560185460145560195460155573c21bee45c473c4ce62095af1bdde0478c781c9f8601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c21bee45c473c4ce62095af1bdde0478c781c9f8601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507343d7e65b8ff49698d9550a7f315c87e67344fb59601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000602160146101000a81548160ff0219169083151502179055506000602160156101000a81548160ff021916908315150217905550348015620001f857600080fd5b5060006200020b6200073060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003759190620007cb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004039190620007cb565b6040518363ffffffff1660e01b8152600401620004229291906200080e565b6020604051808303816000875af115801562000442573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004689190620007cb565b602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060055460026000620004bf6200073060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160046000620005136200073860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006c06200073060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60055460405162000721919062000856565b60405180910390a35062000873565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007938262000766565b9050919050565b620007a58162000786565b8114620007b157600080fd5b50565b600081519050620007c5816200079a565b92915050565b600060208284031215620007e457620007e362000761565b5b6000620007f484828501620007b4565b91505092915050565b620008088162000786565b82525050565b6000604082019050620008256000830185620007fd565b620008346020830184620007fd565b9392505050565b6000819050919050565b62000850816200083b565b82525050565b60006020820190506200086d600083018462000845565b92915050565b61427b80620008836000396000f3fe6080604052600436106102335760003560e01c80636c0a24eb1161012e578063af465a27116100ab578063e632313c1161006f578063e632313c146107f9578063f2fde38b14610822578063f42938901461084b578063fc588c0414610862578063fd01bd4c1461088b5761023a565b8063af465a2714610710578063d89135cd1461073b578063d9f7e4df14610766578063dc903ba114610791578063dd62ed3e146107bc5761023a565b806395d89b41116100f257806395d89b411461063d57806398620d76146106685780639f58526f14610691578063a1d1d02b146106bc578063a9059cbb146106d35761023a565b80636c0a24eb1461056857806370a0823114610593578063715018a6146105d05780638da5cb5b146105e75780638ea78153146106125761023a565b806323bbf9e7116101bc57806349bd5a5e1161018057806349bd5a5e146104bb57806351bc3c85146104e65780635d098b38146104fd5780635dbc2fe11461052657806366bf686e1461053d5761023a565b806323bbf9e7146103e657806327a14fc2146104115780632e8fa8211461043a578063313ce5671461046557806336cf7c87146104905761023a565b80630cdf2187116102035780630cdf2187146102fd5780631694505e1461032857806318160ddd14610353578063233296f01461037e57806323b872dd146103a95761023a565b8062067d6b1461023f57806306ab002a1461026a57806306fdde0314610295578063095ea7b3146102c05761023a565b3661023a57005b600080fd5b34801561024b57600080fd5b506102546108b6565b6040516102619190613251565b60405180910390f35b34801561027657600080fd5b5061027f6108bc565b60405161028c9190613251565b60405180910390f35b3480156102a157600080fd5b506102aa6108c2565b6040516102b79190613305565b60405180910390f35b3480156102cc57600080fd5b506102e760048036038101906102e291906133b6565b6108ff565b6040516102f49190613411565b60405180910390f35b34801561030957600080fd5b5061031261091d565b60405161031f9190613251565b60405180910390f35b34801561033457600080fd5b5061033d610923565b60405161034a919061348b565b60405180910390f35b34801561035f57600080fd5b50610368610949565b6040516103759190613251565b60405180910390f35b34801561038a57600080fd5b50610393610953565b6040516103a09190613251565b60405180910390f35b3480156103b557600080fd5b506103d060048036038101906103cb91906134a6565b610959565b6040516103dd9190613411565b60405180910390f35b3480156103f257600080fd5b506103fb610a32565b6040516104089190613251565b60405180910390f35b34801561041d57600080fd5b50610438600480360381019061043391906134f9565b610a38565b005b34801561044657600080fd5b5061044f610afa565b60405161045c9190613251565b60405180910390f35b34801561047157600080fd5b5061047a610b00565b6040516104879190613542565b60405180910390f35b34801561049c57600080fd5b506104a5610b09565b6040516104b2919061357e565b60405180910390f35b3480156104c757600080fd5b506104d0610b2f565b6040516104dd91906135a8565b60405180910390f35b3480156104f257600080fd5b506104fb610b55565b005b34801561050957600080fd5b50610524600480360381019061051f91906135ef565b610bd9565b005b34801561053257600080fd5b5061053b610cb2565b005b34801561054957600080fd5b50610552610d64565b60405161055f9190613251565b60405180910390f35b34801561057457600080fd5b5061057d610d6a565b60405161058a9190613251565b60405180910390f35b34801561059f57600080fd5b506105ba60048036038101906105b5919061361c565b610d70565b6040516105c79190613251565b60405180910390f35b3480156105dc57600080fd5b506105e5610db9565b005b3480156105f357600080fd5b506105fc610f0c565b60405161060991906135a8565b60405180910390f35b34801561061e57600080fd5b50610627610f35565b6040516106349190613411565b60405180910390f35b34801561064957600080fd5b50610652610f48565b60405161065f9190613305565b60405180910390f35b34801561067457600080fd5b5061068f600480360381019061068a91906134f9565b610f85565b005b34801561069d57600080fd5b506106a6610ff0565b6040516106b39190613251565b60405180910390f35b3480156106c857600080fd5b506106d1610ff6565b005b3480156106df57600080fd5b506106fa60048036038101906106f591906133b6565b611079565b6040516107079190613411565b60405180910390f35b34801561071c57600080fd5b50610725611097565b6040516107329190613251565b60405180910390f35b34801561074757600080fd5b5061075061109d565b60405161075d9190613251565b60405180910390f35b34801561077257600080fd5b5061077b6110a7565b6040516107889190613251565b60405180910390f35b34801561079d57600080fd5b506107a66110ad565b6040516107b39190613251565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190613649565b6110b3565b6040516107f09190613251565b60405180910390f35b34801561080557600080fd5b50610820600480360381019061081b91906134f9565b61113a565b005b34801561082e57600080fd5b506108496004803603810190610844919061361c565b6111a5565b005b34801561085757600080fd5b506108606112b5565b005b34801561086e57600080fd5b50610889600480360381019061088491906134f9565b611331565b005b34801561089757600080fd5b506108a06113e4565b6040516108ad9190613251565b60405180910390f35b60115481565b600c5481565b60606040518060400160405280600981526020017f53686961204275726e0000000000000000000000000000000000000000000000815250905090565b600061091361090c6113ea565b84846113f2565b6001905092915050565b600e5481565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b60075481565b60006109668484846115bb565b610a27846109726113ea565b610a228560405180606001604052806028815260200161421e60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109d86113ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f519092919063ffffffff16565b6113f2565b600190509392505050565b600a5481565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a796113ea565b73ffffffffffffffffffffffffffffffffffffffff1614610a9957600080fd5b610aaf60c8600554611fb590919063ffffffff16565b8111610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906136fb565b60405180910390fd5b8060068190555050565b60085481565b60006006905090565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b966113ea565b73ffffffffffffffffffffffffffffffffffffffff1614610bb657600080fd5b6000610bc130610d70565b90506000811115610bd657610bd581611fff565b5b50565b610be16113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6590613767565b60405180910390fd5b80601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610cba6113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3e90613767565b60405180910390fd5b6001602160156101000a81548160ff021916908315150217905550565b60105481565b60065481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dc16113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4590613767565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b602160159054906101000a900460ff1681565b60606040518060400160405280600581526020017f5368696142000000000000000000000000000000000000000000000000000000815250905090565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fc66113ea565b73ffffffffffffffffffffffffffffffffffffffff1614610fe657600080fd5b8060098190555050565b600d5481565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110376113ea565b73ffffffffffffffffffffffffffffffffffffffff161461105757600080fd5b60016011819055506002600e819055506002600a819055506001600d81905550565b600061108d6110866113ea565b84846115bb565b6001905092915050565b60055481565b6000601a54905090565b600f5481565b600b5481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661117b6113ea565b73ffffffffffffffffffffffffffffffffffffffff161461119b57600080fd5b8060088190555050565b6111ad6113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123190613767565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a0906137f9565b60405180910390fd5b6112b281612278565b50565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112f66113ea565b73ffffffffffffffffffffffffffffffffffffffff161461131657600080fd5b6000479050600081111561132e5761132d8161233c565b5b50565b6402540be400811015611379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137090613865565b60405180910390fd5b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113ba6113ea565b73ffffffffffffffffffffffffffffffffffffffff16146113da57600080fd5b8060078190555050565b601a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611461576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611458906138f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790613989565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115ae9190613251565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190613a1b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169090613aad565b60405180910390fd5b600081116116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d390613b3f565b60405180910390fd5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117805750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61178957600080fd5b600060019050611797610f0c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561180557506117d5610f0c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561183d57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561187557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e8c57602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119255750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119d05750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615806119cf5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b15611a7a576006546119f3836119e586610d70565b61243790919063ffffffff16565b1115611a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2b90613bd1565b60405180910390fd5b600754821115611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7090613c63565b60405180910390fd5b5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b255750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b7b5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bd15750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bfb57600a54601681905550600b54601781905550600c54601881905550600d546019819055505b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ca65750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611cfc5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d525750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d7c57600e54601681905550600f546017819055506010546018819055506011546019819055505b602160149054906101000a900460ff16158015611de75750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e8b576000611df730610d70565b9050600854811115611e0d57611e0c81612495565b5b6000479050602160159054906101000a900460ff16158015611e2f5750600081115b15611e4257611e3d4761233c565b611e88565b602160159054906101000a900460ff168015611e5f575060095481115b15611e87576000611e7a600283611fb590919063ffffffff16565b9050611e85816125be565b505b5b50505b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f2d5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611f3757600090505b611f43848484846125d4565b611f4b612b9e565b50505050565b6000838311158290611f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f909190613305565b60405180910390fd5b5060008385611fa89190613cb2565b9050809150509392505050565b6000611ff783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bc4565b905092915050565b6001602160146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561203757612036613ce6565b5b6040519080825280602002602001820160405280156120655781602001602082028036833780820191505090505b509050308160008151811061207d5761207c613d15565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121489190613d59565b8160018151811061215c5761215b613d15565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121c330602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113f2565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612227959493929190613e7f565b600060405180830381600087803b15801561224157600080fd5b505af1158015612255573d6000803e3d6000fd5b50505050506000602160146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61238c600284611fb590919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156123b7573d6000803e3d6000fd5b50601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612408600284611fb590919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612433573d6000803e3d6000fd5b5050565b60008082846124469190613ed9565b90508381101561248b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248290613f7b565b60405180910390fd5b8091505092915050565b6001602160146101000a81548160ff02191690831515021790555060006125176124f46016546124e66019546124d860185460175461243790919063ffffffff16565b61243790919063ffffffff16565b61243790919063ffffffff16565b61250984601654612c2790919063ffffffff16565b611fb590919063ffffffff16565b9050600061252f600283611fb590919063ffffffff16565b905060006125468285612ca190919063ffffffff16565b9050600047905061255682611fff565b600061258f83612581866125738647612ca190919063ffffffff16565b612c2790919063ffffffff16565b611fb590919063ffffffff16565b905061259b8482612ceb565b50505050506000602160146101000a81548160ff02191690831515021790555050565b60008111156125d1576125d081612deb565b5b50565b806125e2576125e1613044565b5b6125ea613209565b612612606461260460175486612c2790919063ffffffff16565b611fb590919063ffffffff16565b816020018181525050612643606461263560165486612c2790919063ffffffff16565b611fb590919063ffffffff16565b816000018181525050612674606461266660185486612c2790919063ffffffff16565b611fb590919063ffffffff16565b8160400181815250506126a5606461269760195486612c2790919063ffffffff16565b611fb590919063ffffffff16565b81606001818152505061270781600001516126f983602001516126eb85606001516126dd87604001518a612ca190919063ffffffff16565b612ca190919063ffffffff16565b612ca190919063ffffffff16565b612ca190919063ffffffff16565b8160800181815250506000612729826020015185612ca190919063ffffffff16565b90506127398683602001516130bf565b61278b81600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca190919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128248260800151600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461243790919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128ff6128858360000151846020015161243790919063ffffffff16565b6128f184606001516128e38660400151600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461243790919063ffffffff16565b61243790919063ffffffff16565b61243790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550602160159054906101000a900460ff1680156129ac5750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156129e457503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612a3e5750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612aef5750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612aee5750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b5b15612b2557612b24602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683602001516130bf565b5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460800151604051612b869190613251565b60405180910390a3612b96612b9e565b505050505050565b601254601681905550601354601781905550601454601881905550601554601981905550565b60008083118290612c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c029190613305565b60405180910390fd5b5060008385612c1a9190613fca565b9050809150509392505050565b6000808303612c395760009050612c9b565b60008284612c479190613ffb565b9050828482612c569190613fca565b14612c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8d906140c7565b60405180910390fd5b809150505b92915050565b6000612ce383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f51565b905092915050565b612d1830602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113f2565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612da196959493929190614108565b60606040518083038185885af1158015612dbf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612de4919061417e565b5050505050565b6000600267ffffffffffffffff811115612e0857612e07613ce6565b5b604051908082528060200260200182016040528015612e365781602001602082028036833780820191505090505b509050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ea6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eca9190613d59565b81600081518110612ede57612edd613d15565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612f4f57612f4e613d15565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de9583600084601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161300e94939291906141d1565b6000604051808303818588803b15801561302757600080fd5b505af115801561303b573d6000803e3d6000fd5b50505050505050565b600060175414801561305857506000601654145b801561306657506000601854145b801561307457506000601954145b6130bd5760175460138190555060165460128190555060185460148190555060195460158190555060006017819055506000601681905550600060188190555060006019819055505b565b6130c882610d70565b8111156130d457600080fd5b61312681600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca190919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061317e81600554612ca190919063ffffffff16565b60058190555061319981601a5461243790919063ffffffff16565b601a81905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131fd9190613251565b60405180910390a35050565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6000819050919050565b61324b81613238565b82525050565b60006020820190506132666000830184613242565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132a657808201518184015260208101905061328b565b838111156132b5576000848401525b50505050565b6000601f19601f8301169050919050565b60006132d78261326c565b6132e18185613277565b93506132f1818560208601613288565b6132fa816132bb565b840191505092915050565b6000602082019050818103600083015261331f81846132cc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133578261332c565b9050919050565b6133678161334c565b811461337257600080fd5b50565b6000813590506133848161335e565b92915050565b61339381613238565b811461339e57600080fd5b50565b6000813590506133b08161338a565b92915050565b600080604083850312156133cd576133cc613327565b5b60006133db85828601613375565b92505060206133ec858286016133a1565b9150509250929050565b60008115159050919050565b61340b816133f6565b82525050565b60006020820190506134266000830184613402565b92915050565b6000819050919050565b600061345161344c6134478461332c565b61342c565b61332c565b9050919050565b600061346382613436565b9050919050565b600061347582613458565b9050919050565b6134858161346a565b82525050565b60006020820190506134a0600083018461347c565b92915050565b6000806000606084860312156134bf576134be613327565b5b60006134cd86828701613375565b93505060206134de86828701613375565b92505060406134ef868287016133a1565b9150509250925092565b60006020828403121561350f5761350e613327565b5b600061351d848285016133a1565b91505092915050565b600060ff82169050919050565b61353c81613526565b82525050565b60006020820190506135576000830184613533565b92915050565b60006135688261332c565b9050919050565b6135788161355d565b82525050565b6000602082019050613593600083018461356f565b92915050565b6135a28161334c565b82525050565b60006020820190506135bd6000830184613599565b92915050565b6135cc8161355d565b81146135d757600080fd5b50565b6000813590506135e9816135c3565b92915050565b60006020828403121561360557613604613327565b5b6000613613848285016135da565b91505092915050565b60006020828403121561363257613631613327565b5b600061364084828501613375565b91505092915050565b600080604083850312156136605761365f613327565b5b600061366e85828601613375565b925050602061367f85828601613375565b9150509250929050565b7f416d6f756e74206d7573742062652067726561746572207468616e20302e352560008201527f206f6620737570706c7900000000000000000000000000000000000000000000602082015250565b60006136e5602a83613277565b91506136f082613689565b604082019050919050565b60006020820190508181036000830152613714816136d8565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613751602083613277565b915061375c8261371b565b602082019050919050565b6000602082019050818103600083015261378081613744565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137e3602683613277565b91506137ee82613787565b604082019050919050565b60006020820190508181036000830152613812816137d6565b9050919050565b7f6e656761746976652067686f7374207269646572000000000000000000000000600082015250565b600061384f601483613277565b915061385a82613819565b602082019050919050565b6000602082019050818103600083015261387e81613842565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006138e1602483613277565b91506138ec82613885565b604082019050919050565b60006020820190508181036000830152613910816138d4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613973602283613277565b915061397e82613917565b604082019050919050565b600060208201905081810360008301526139a281613966565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a05602583613277565b9150613a10826139a9565b604082019050919050565b60006020820190508181036000830152613a34816139f8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a97602383613277565b9150613aa282613a3b565b604082019050919050565b60006020820190508181036000830152613ac681613a8a565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613b29602983613277565b9150613b3482613acd565b604082019050919050565b60006020820190508181036000830152613b5881613b1c565b9050919050565b7f596f7520617265206265696e67206772656564792e20457863656564696e672060008201527f4d61782057616c6c65742e000000000000000000000000000000000000000000602082015250565b6000613bbb602b83613277565b9150613bc682613b5f565b604082019050919050565b60006020820190508181036000830152613bea81613bae565b9050919050565b7f536c6f7720646f776e2062756464792e2e2e74686572652069732061206d617860008201527f207472616e73616374696f6e0000000000000000000000000000000000000000602082015250565b6000613c4d602c83613277565b9150613c5882613bf1565b604082019050919050565b60006020820190508181036000830152613c7c81613c40565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613cbd82613238565b9150613cc883613238565b925082821015613cdb57613cda613c83565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d538161335e565b92915050565b600060208284031215613d6f57613d6e613327565b5b6000613d7d84828501613d44565b91505092915050565b6000819050919050565b6000613dab613da6613da184613d86565b61342c565b613238565b9050919050565b613dbb81613d90565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613df68161334c565b82525050565b6000613e088383613ded565b60208301905092915050565b6000602082019050919050565b6000613e2c82613dc1565b613e368185613dcc565b9350613e4183613ddd565b8060005b83811015613e72578151613e598882613dfc565b9750613e6483613e14565b925050600181019050613e45565b5085935050505092915050565b600060a082019050613e946000830188613242565b613ea16020830187613db2565b8181036040830152613eb38186613e21565b9050613ec26060830185613599565b613ecf6080830184613242565b9695505050505050565b6000613ee482613238565b9150613eef83613238565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613f2457613f23613c83565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f65601b83613277565b9150613f7082613f2f565b602082019050919050565b60006020820190508181036000830152613f9481613f58565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fd582613238565b9150613fe083613238565b925082613ff057613fef613f9b565b5b828204905092915050565b600061400682613238565b915061401183613238565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561404a57614049613c83565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006140b1602183613277565b91506140bc82614055565b604082019050919050565b600060208201905081810360008301526140e0816140a4565b9050919050565b60006140f282613458565b9050919050565b614102816140e7565b82525050565b600060c08201905061411d6000830189613599565b61412a6020830188613242565b6141376040830187613db2565b6141446060830186613db2565b61415160808301856140f9565b61415e60a0830184613242565b979650505050505050565b6000815190506141788161338a565b92915050565b60008060006060848603121561419757614196613327565b5b60006141a586828701614169565b93505060206141b686828701614169565b92505060406141c786828701614169565b9150509250925092565b60006080820190506141e66000830187613db2565b81810360208301526141f88186613e21565b905061420760408301856140f9565b6142146060830184613242565b9594505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122019ef2f0ddb2b35eb5bba498523b7e3da17eca755b58c4f06f6bc438a9db174d164736f6c634300080f0033