60806040526050600855600854600955600a8055600a54600b55600a600c55600c54600d556014600e556050600f5573c5181bda608069bfe60b5b52d293ae84fa6db4c8601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073193c29646f749acb902932943d308605a9d767c0601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660006101000a81548160ff0219169083151502179055506000601660016101000a81548160ff0219169083151502179055503480156200011b57600080fd5b5060006200012e620007d760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200026430601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000620007df60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ab57600080fd5b505afa158015620002c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e6919062000a09565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034957600080fd5b505afa1580156200035e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000384919062000a09565b6040518363ffffffff1660e01b8152600401620003a392919062000ad1565b602060405180830381600087803b158015620003be57600080fd5b505af1158015620003d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f9919062000a09565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620004da92919062000afe565b602060405180830381600087803b158015620004f557600080fd5b505af11580156200050a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000530919062000a35565b50683635c9adc5dea00000601581905550683635c9adc5dea00000600260006200055f620007d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160046000620005b3620009b260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000760620007d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea00000604051620007c8919062000b6f565b60405180910390a35062000cb9565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000852576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008499062000b4d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620008c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008bc9062000b2b565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620009a5919062000b6f565b60405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620009ec8162000c85565b92915050565b60008151905062000a038162000c9f565b92915050565b60006020828403121562000a1c57600080fd5b600062000a2c84828501620009db565b91505092915050565b60006020828403121562000a4857600080fd5b600062000a5884828501620009f2565b91505092915050565b62000a6c8162000b9d565b82525050565b600062000a8160228362000b8c565b915062000a8e8262000be7565b604082019050919050565b600062000aa860248362000b8c565b915062000ab58262000c36565b604082019050919050565b62000acb8162000bdd565b82525050565b600060408201905062000ae8600083018562000a61565b62000af7602083018462000a61565b9392505050565b600060408201905062000b15600083018562000a61565b62000b24602083018462000ac0565b9392505050565b6000602082019050818103600083015262000b468162000a72565b9050919050565b6000602082019050818103600083015262000b688162000a99565b9050919050565b600060208201905062000b86600083018462000ac0565b92915050565b600082825260208201905092915050565b600062000baa8262000bbd565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b62000c908162000b9d565b811462000c9c57600080fd5b50565b62000caa8162000bb1565b811462000cb657600080fd5b50565b6133f98062000cc96000396000f3fe6080604052600436106101a05760003560e01c8063770d9907116100ec578063d16336491161008a578063e1d7eefd11610064578063e1d7eefd1461059d578063e9dae5ed146105c8578063ea2f0b37146105f1578063ffecf5161461061a576101a7565b8063d16336491461050e578063d543dbeb14610537578063dd62ed3e14610560576101a7565b8063a9059cbb116100c6578063a9059cbb14610466578063aa45026b146104a3578063b44a14b6146104ce578063c3c8cd80146104f7576101a7565b8063770d9907146103e55780638da5cb5b1461041057806395d89b411461043b576101a7565b8063313ce567116101595780635fecd926116101335780635fecd926146103515780636fc3eaec1461037a57806370a0823114610391578063715018a6146103ce576101a7565b8063313ce567146102d2578063437823ec146102fd57806349bd5a5e14610326576101a7565b806306fdde03146101ac578063095ea7b3146101d757806318160ddd1461021457806319de79ab1461023f57806322976e0d1461026a57806323b872dd14610295576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610643565b6040516101ce9190612bbb565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f9919061280b565b610680565b60405161020b9190612ba0565b60405180910390f35b34801561022057600080fd5b5061022961069e565b6040516102369190612d3d565b60405180910390f35b34801561024b57600080fd5b506102546106af565b6040516102619190612d3d565b60405180910390f35b34801561027657600080fd5b5061027f6106b5565b60405161028c9190612d3d565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b791906127bc565b6106bb565b6040516102c99190612ba0565b60405180910390f35b3480156102de57600080fd5b506102e7610794565b6040516102f49190612e12565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f919061272e565b61079d565b005b34801561033257600080fd5b5061033b61088d565b6040516103489190612b85565b60405180910390f35b34801561035d57600080fd5b506103786004803603810190610373919061272e565b6108b3565b005b34801561038657600080fd5b5061038f6109a3565b005b34801561039d57600080fd5b506103b860048036038101906103b3919061272e565b610a15565b6040516103c59190612d3d565b60405180910390f35b3480156103da57600080fd5b506103e3610a5e565b005b3480156103f157600080fd5b506103fa610bb1565b6040516104079190612d3d565b60405180910390f35b34801561041c57600080fd5b50610425610bb7565b6040516104329190612b85565b60405180910390f35b34801561044757600080fd5b50610450610be0565b60405161045d9190612bbb565b60405180910390f35b34801561047257600080fd5b5061048d6004803603810190610488919061280b565b610c1d565b60405161049a9190612ba0565b60405180910390f35b3480156104af57600080fd5b506104b8610c3b565b6040516104c59190612d3d565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190612870565b610c41565b005b34801561050357600080fd5b5061050c610d7a565b005b34801561051a57600080fd5b5061053560048036038101906105309190612847565b610df4565b005b34801561054357600080fd5b5061055e60048036038101906105599190612847565b610eb5565b005b34801561056c57600080fd5b5061058760048036038101906105829190612780565b610ffe565b6040516105949190612d3d565b60405180910390f35b3480156105a957600080fd5b506105b2611085565b6040516105bf9190612d3d565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea91906128ac565b61108b565b005b3480156105fd57600080fd5b506106186004803603810190610613919061272e565b6111ff565b005b34801561062657600080fd5b50610641600480360381019061063c919061272e565b6112ef565b005b60606040518060400160405280600b81526020017f4672616e6b656e20496e75000000000000000000000000000000000000000000815250905090565b600061069461068d6113df565b84846113e7565b6001905092915050565b6000683635c9adc5dea00000905090565b60085481565b600a5481565b60006106c88484846115b2565b610789846106d46113df565b6107848560405180606001604052806028815260200161339c60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061073a6113df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba39092919063ffffffff16565b6113e7565b600190509392505050565b60006009905090565b6107a56113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082990612c9d565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108bb6113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f90612c9d565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e46113df565b73ffffffffffffffffffffffffffffffffffffffff1614610a0457600080fd5b6000479050610a1281611c07565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a666113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aea90612c9d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4672616e6b790000000000000000000000000000000000000000000000000000815250905090565b6000610c31610c2a6113df565b84846115b2565b6001905092915050565b600c5481565b610c496113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd90612c9d565b60405180910390fd5b6064610ceb8284611d2a90919063ffffffff16565b14610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2290612cdd565b60405180910390fd5b81600e8190555080600f819055507f012f5df73148ec03a4ac44111fcf100a014ee232c9f1b328180ab5f3996821e5600e54600f54604051610d6e929190612db2565b60405180910390a15050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dbb6113df565b73ffffffffffffffffffffffffffffffffffffffff1614610ddb57600080fd5b6000610de630610a15565b9050610df181611d88565b50565b610dfc6113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090612c9d565b60405180910390fd5b42600681905550806007819055506001601660006101000a81548160ff02191690831515021790555050565b610ebd6113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190612c9d565b60405180910390fd5b60008111610f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8490612c3d565b60405180910390fd5b610fbc6064610fae83683635c9adc5dea0000061208290919063ffffffff16565b6120fd90919063ffffffff16565b6015819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf601554604051610ff39190612d3d565b60405180910390a150565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b6110936113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111790612c9d565b60405180910390fd5b6103e86111488261113a8587611d2a90919063ffffffff16565b611d2a90919063ffffffff16565b1115611189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118090612c5d565b60405180910390fd5b82600a819055508160088190555080600c81905550600a54600b81905550600854600981905550600c54600d819055507fcf8a1e1d5f09cf3c97dbb653cd9a4d7aace9292fbc1bb8211febf2d400febbdd600a54600854600c546040516111f293929190612ddb565b60405180910390a1505050565b6112076113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b90612c9d565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6112f76113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137b90612c9d565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144e90612d1d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90612bfd565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115a59190612d3d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161990612cfd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168990612bdd565b60405180910390fd5b600081116116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc90612cbd565b60405180910390fd5b6116dd610bb7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561174b575061171b610bb7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ad857601660009054906101000a900460ff1661176957600080fd5b60155481111561177857600080fd5b60065442116117ac5761179f6103e8683635c9adc5dea000006120fd90919063ffffffff16565b8111156117ab57600080fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118575750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118d357611873600754600654611d2a90919063ffffffff16565b42116118d2576001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b60006118de30610a15565b9050601660019054906101000a900460ff1615801561194b5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156119a15750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119f75750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ad657601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611aa05750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611aa957600080fd5b6000811115611abc57611abb81611d88565b5b60004790506000811115611ad457611ad347611c07565b5b505b505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b7f5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611b8957600090505b611b9584848484612147565b611b9d612320565b50505050565b6000838311158290611beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be29190612bbb565b60405180910390fd5b5060008385611bfa9190612f63565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611c6b6064611c5d600e548661208290919063ffffffff16565b6120fd90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611c96573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611cfb6064611ced600f548661208290919063ffffffff16565b6120fd90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d26573d6000803e3d6000fd5b5050565b6000808284611d399190612e82565b905083811015611d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7590612c1d565b60405180910390fd5b8091505092915050565b6001601660016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611de6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611e145781602001602082028036833780820191505090505b5090503081600081518110611e52577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ef457600080fd5b505afa158015611f08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2c9190612757565b81600181518110611f66577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fcd30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113e7565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612031959493929190612d58565b600060405180830381600087803b15801561204b57600080fd5b505af115801561205f573d6000803e3d6000fd5b50505050506000601660016101000a81548160ff02191690831515021790555050565b60008083141561209557600090506120f7565b600082846120a39190612f09565b90508284826120b29190612ed8565b146120f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e990612c7d565b60405180910390fd5b809150505b92915050565b600061213f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061233d565b905092915050565b80612155576121546123a0565b5b60008060008061216486612402565b93509350935093506121be86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061225384600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2a90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061229f83612527565b6122a8826125bf565b6122b181612657565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161230e9190612d3d565b60405180910390a35050505050505050565b600b54600a81905550600954600881905550600d54600c81905550565b60008083118290612384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237b9190612bbb565b60405180910390fd5b50600083856123939190612ed8565b9050809150509392505050565b6000600a541480156123b457506000600854145b80156123c257506000600c54145b156123cc57612400565b600a54600b81905550600854600981905550600c54600d819055506000600a8190555060006008819055506000600c819055505b565b60008060008060006124336103e86124256008548961208290919063ffffffff16565b6120fd90919063ffffffff16565b905060006124606103e8612452600a548a61208290919063ffffffff16565b6120fd90919063ffffffff16565b9050600061248d6103e861247f600c548b61208290919063ffffffff16565b6120fd90919063ffffffff16565b905060006124b6836124a8868c6124dd90919063ffffffff16565b6124dd90919063ffffffff16565b905081816124c49190612f63565b9050808484849750975097509750505050509193509193565b600061251f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ba3565b905092915050565b61257981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b61261181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6126a981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000813590506126fe8161336d565b92915050565b6000815190506127138161336d565b92915050565b60008135905061272881613384565b92915050565b60006020828403121561274057600080fd5b600061274e848285016126ef565b91505092915050565b60006020828403121561276957600080fd5b600061277784828501612704565b91505092915050565b6000806040838503121561279357600080fd5b60006127a1858286016126ef565b92505060206127b2858286016126ef565b9150509250929050565b6000806000606084860312156127d157600080fd5b60006127df868287016126ef565b93505060206127f0868287016126ef565b925050604061280186828701612719565b9150509250925092565b6000806040838503121561281e57600080fd5b600061282c858286016126ef565b925050602061283d85828601612719565b9150509250929050565b60006020828403121561285957600080fd5b600061286784828501612719565b91505092915050565b6000806040838503121561288357600080fd5b600061289185828601612719565b92505060206128a285828601612719565b9150509250929050565b6000806000606084860312156128c157600080fd5b60006128cf86828701612719565b93505060206128e086828701612719565b92505060406128f186828701612719565b9150509250925092565b60006129078383612913565b60208301905092915050565b61291c81612f97565b82525050565b61292b81612f97565b82525050565b600061293c82612e3d565b6129468185612e60565b935061295183612e2d565b8060005b8381101561298257815161296988826128fb565b975061297483612e53565b925050600181019050612955565b5085935050505092915050565b61299881612fa9565b82525050565b6129a781612fec565b82525050565b60006129b882612e48565b6129c28185612e71565b93506129d2818560208601612ffe565b6129db8161308f565b840191505092915050565b60006129f3602383612e71565b91506129fe826130a0565b604082019050919050565b6000612a16602283612e71565b9150612a21826130ef565b604082019050919050565b6000612a39601b83612e71565b9150612a448261313e565b602082019050919050565b6000612a5c601d83612e71565b9150612a6782613167565b602082019050919050565b6000612a7f602783612e71565b9150612a8a82613190565b604082019050919050565b6000612aa2602183612e71565b9150612aad826131df565b604082019050919050565b6000612ac5602083612e71565b9150612ad08261322e565b602082019050919050565b6000612ae8602983612e71565b9150612af382613257565b604082019050919050565b6000612b0b601e83612e71565b9150612b16826132a6565b602082019050919050565b6000612b2e602583612e71565b9150612b39826132cf565b604082019050919050565b6000612b51602483612e71565b9150612b5c8261331e565b604082019050919050565b612b7081612fd5565b82525050565b612b7f81612fdf565b82525050565b6000602082019050612b9a6000830184612922565b92915050565b6000602082019050612bb5600083018461298f565b92915050565b60006020820190508181036000830152612bd581846129ad565b905092915050565b60006020820190508181036000830152612bf6816129e6565b9050919050565b60006020820190508181036000830152612c1681612a09565b9050919050565b60006020820190508181036000830152612c3681612a2c565b9050919050565b60006020820190508181036000830152612c5681612a4f565b9050919050565b60006020820190508181036000830152612c7681612a72565b9050919050565b60006020820190508181036000830152612c9681612a95565b9050919050565b60006020820190508181036000830152612cb681612ab8565b9050919050565b60006020820190508181036000830152612cd681612adb565b9050919050565b60006020820190508181036000830152612cf681612afe565b9050919050565b60006020820190508181036000830152612d1681612b21565b9050919050565b60006020820190508181036000830152612d3681612b44565b9050919050565b6000602082019050612d526000830184612b67565b92915050565b600060a082019050612d6d6000830188612b67565b612d7a602083018761299e565b8181036040830152612d8c8186612931565b9050612d9b6060830185612922565b612da86080830184612b67565b9695505050505050565b6000604082019050612dc76000830185612b67565b612dd46020830184612b67565b9392505050565b6000606082019050612df06000830186612b67565b612dfd6020830185612b67565b612e0a6040830184612b67565b949350505050565b6000602082019050612e276000830184612b76565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612e8d82612fd5565b9150612e9883612fd5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ecd57612ecc613031565b5b828201905092915050565b6000612ee382612fd5565b9150612eee83612fd5565b925082612efe57612efd613060565b5b828204905092915050565b6000612f1482612fd5565b9150612f1f83612fd5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f5857612f57613031565b5b828202905092915050565b6000612f6e82612fd5565b9150612f7983612fd5565b925082821015612f8c57612f8b613031565b5b828203905092915050565b6000612fa282612fb5565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612ff782612fd5565b9050919050565b60005b8381101561301c578082015181840152602081019050613001565b8381111561302b576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f53756d206f662073656c6c2066656573206d757374206265206c65737320746860008201527f616e203130303000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f53756d206f662070657263656e7473206d75737420657175616c203130300000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61337681612f97565b811461338157600080fd5b50565b61338d81612fd5565b811461339857600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fc5f826038e35ea6f90e1b3b1212e1c8c4c61151cfb7c574b725d433b61a5ca164736f6c63430008040033