0x60806040526b033b2e3c9fd0803ce80000006002553480156200002157600080fd5b506040516200261838038062002618833981810160405281019062000047919062000333565b6040518060400160405280600a81526020017f43697068657253686f70000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4353484f50000000000000000000000000000000000000000000000000000000815250848260039080519060200190620000cc92919062000255565b508160049080519060200190620000e592919062000255565b506002546000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6002546040516200018d9190620003de565b60405180910390a350505042811015620001a657600080fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f66000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200023d929190620003b1565b60405180910390a180600681905550505050620004d7565b828054620002639062000439565b90600052602060002090601f016020900481019282620002875760008555620002d3565b82601f10620002a257805160ff1916838001178555620002d3565b82800160010185558215620002d3579182015b82811115620002d2578251825591602001919060010190620002b5565b5b509050620002e29190620002e6565b5090565b5b8082111562000301576000816000905550600101620002e7565b5090565b6000815190506200031681620004a3565b92915050565b6000815190506200032d81620004bd565b92915050565b6000806000606084860312156200034f576200034e6200049e565b5b60006200035f8682870162000305565b9350506020620003728682870162000305565b925050604062000385868287016200031c565b9150509250925092565b6200039a81620003fb565b82525050565b620003ab816200042f565b82525050565b6000604082019050620003c860008301856200038f565b620003d760208301846200038f565b9392505050565b6000602082019050620003f56000830184620003a0565b92915050565b600062000408826200040f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200045257607f821691505b602082108114156200046957620004686200046f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b620004ae81620003fb565b8114620004ba57600080fd5b50565b620004c8816200042f565b8114620004d457600080fd5b50565b61213180620004e76000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806340c10f19116100a257806395d89b411161007157806395d89b41146102e5578063a457c2d714610303578063a9059cbb14610333578063dd62ed3e14610363578063fca3b5aa1461039357610116565b806340c10f191461025d5780635c11d62f1461027957806370a082311461029757806376c71ca1146102c757610116565b80631e89d545116100e95780631e89d545146101a557806323b872dd146101c157806330b36cef146101f1578063313ce5671461020f578063395093511461022d57610116565b806306fdde031461011b5780630754617214610139578063095ea7b31461015757806318160ddd14610187575b600080fd5b6101236103af565b6040516101309190611839565b60405180910390f35b610141610441565b60405161014e91906117da565b60405180910390f35b610171600480360381019061016c919061151d565b610467565b60405161017e919061181e565b60405180910390f35b61018f610485565b60405161019c91906119bb565b60405180910390f35b6101bf60048036038101906101ba919061155d565b61048f565b005b6101db60048036038101906101d691906114ca565b61051c565b6040516101e8919061181e565b60405180910390f35b6101f9610613565b60405161020691906119bb565b60405180910390f35b610217610619565b60405161022491906119f1565b60405180910390f35b6102476004803603810190610242919061151d565b610622565b604051610254919061181e565b60405180910390f35b6102776004803603810190610272919061151d565b6106ce565b005b610281610802565b60405161028e91906119d6565b60405180910390f35b6102b160048036038101906102ac919061145d565b61080a565b6040516102be91906119bb565b60405180910390f35b6102cf610852565b6040516102dc91906119f1565b60405180910390f35b6102ed610857565b6040516102fa9190611839565b60405180910390f35b61031d6004803603810190610318919061151d565b6108e9565b60405161032a919061181e565b60405180910390f35b61034d6004803603810190610348919061151d565b6109d4565b60405161035a919061181e565b60405180910390f35b61037d6004803603810190610378919061148a565b6109f2565b60405161038a91906119bb565b60405180910390f35b6103ad60048036038101906103a8919061145d565b610a79565b005b6060600380546103be90611c1e565b80601f01602080910402602001604051908101604052809291908181526020018280546103ea90611c1e565b80156104375780601f1061040c57610100808354040283529160200191610437565b820191906000526020600020905b81548152906001019060200180831161041a57829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061047b610474610bb3565b8484610bbb565b6001905092915050565b6000600254905090565b600082511161049d57600080fd5b60008151116104ab57600080fd5b80518251146104b957600080fd5b60005b8251811015610517576105038382815181106104db576104da611d57565b5b60200260200101518383815181106104f6576104f5611d57565b5b60200260200101516109d4565b50808061050f90611c81565b9150506104bc565b505050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610568610bb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156105e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105df906118fb565b60405180910390fd5b6105fc856105f4610bb3565b858403610bbb565b610607858585610d86565b60019150509392505050565b60065481565b60006012905090565b60006106c461062f610bb3565b84846001600061063d610bb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106bf9190611aa5565b610bbb565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661070f610bb3565b73ffffffffffffffffffffffffffffffffffffffff161461072f57600080fd5b600654421015610774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076b9061193b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156107ae57600080fd5b6107ce6107c66107bc610485565b601060ff16611007565b6103e8611082565b8111156107da57600080fd5b6107ee426301e1338063ffffffff166110cc565b6006819055506107fe828261112a565b5050565b6301e1338081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601081565b60606004805461086690611c1e565b80601f016020809104026020016040519081016040528092919081815260200182805461089290611c1e565b80156108df5780601f106108b4576101008083540402835291602001916108df565b820191906000526020600020905b8154815290600101906020018083116108c257829003601f168201915b5050505050905090565b600080600160006108f8610bb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ac9061197b565b60405180910390fd5b6109c96109c0610bb3565b85858403610bbb565b600191505092915050565b60006109e86109e1610bb3565b8484610d86565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610aba610bb3565b73ffffffffffffffffffffffffffffffffffffffff1614610ada57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415610b1457600080fd5b7f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051610b679291906117f5565b60405180910390a180600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c229061195b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c929061187b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d7991906119bb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded9061191b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5d9061185b565b60405180910390fd5b610e7183838361128a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee906118bb565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f8a9190611aa5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fee91906119bb565b60405180910390a361100184848461128f565b50505050565b60008083141561101a576000905061107c565b600082846110289190611b2c565b90508284826110379190611afb565b14611077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106e906118db565b60405180910390fd5b809150505b92915050565b60006110c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611294565b905092915050565b60008082846110db9190611aa5565b905083811015611120576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111179061189b565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561119a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111919061199b565b60405180910390fd5b6111a66000838361128a565b80600260008282546111b89190611aa5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461120d9190611aa5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161127291906119bb565b60405180910390a36112866000838361128f565b5050565b505050565b505050565b600080831182906112db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d29190611839565b60405180910390fd5b50600083856112ea9190611afb565b9050809150509392505050565b600061130a61130584611a31565b611a0c565b9050808382526020820190508285602086028201111561132d5761132c611dba565b5b60005b8581101561135d578161134388826113d7565b845260208401935060208301925050600181019050611330565b5050509392505050565b600061137a61137584611a5d565b611a0c565b9050808382526020820190508285602086028201111561139d5761139c611dba565b5b60005b858110156113cd57816113b38882611448565b8452602084019350602083019250506001810190506113a0565b5050509392505050565b6000813590506113e6816120cd565b92915050565b600082601f83011261140157611400611db5565b5b81356114118482602086016112f7565b91505092915050565b600082601f83011261142f5761142e611db5565b5b813561143f848260208601611367565b91505092915050565b600081359050611457816120e4565b92915050565b60006020828403121561147357611472611dc4565b5b6000611481848285016113d7565b91505092915050565b600080604083850312156114a1576114a0611dc4565b5b60006114af858286016113d7565b92505060206114c0858286016113d7565b9150509250929050565b6000806000606084860312156114e3576114e2611dc4565b5b60006114f1868287016113d7565b9350506020611502868287016113d7565b925050604061151386828701611448565b9150509250925092565b6000806040838503121561153457611533611dc4565b5b6000611542858286016113d7565b925050602061155385828601611448565b9150509250929050565b6000806040838503121561157457611573611dc4565b5b600083013567ffffffffffffffff81111561159257611591611dbf565b5b61159e858286016113ec565b925050602083013567ffffffffffffffff8111156115bf576115be611dbf565b5b6115cb8582860161141a565b9150509250929050565b6115de81611b86565b82525050565b6115ed81611b98565b82525050565b60006115fe82611a89565b6116088185611a94565b9350611618818560208601611beb565b61162181611dc9565b840191505092915050565b6000611639602383611a94565b915061164482611dda565b604082019050919050565b600061165c602283611a94565b915061166782611e29565b604082019050919050565b600061167f601b83611a94565b915061168a82611e78565b602082019050919050565b60006116a2602683611a94565b91506116ad82611ea1565b604082019050919050565b60006116c5602183611a94565b91506116d082611ef0565b604082019050919050565b60006116e8602883611a94565b91506116f382611f3f565b604082019050919050565b600061170b602583611a94565b915061171682611f8e565b604082019050919050565b600061172e601e83611a94565b915061173982611fdd565b602082019050919050565b6000611751602483611a94565b915061175c82612006565b604082019050919050565b6000611774602583611a94565b915061177f82612055565b604082019050919050565b6000611797601f83611a94565b91506117a2826120a4565b602082019050919050565b6117b681611bc4565b82525050565b6117c581611bce565b82525050565b6117d481611bde565b82525050565b60006020820190506117ef60008301846115d5565b92915050565b600060408201905061180a60008301856115d5565b61181760208301846115d5565b9392505050565b600060208201905061183360008301846115e4565b92915050565b6000602082019050818103600083015261185381846115f3565b905092915050565b600060208201905081810360008301526118748161162c565b9050919050565b600060208201905081810360008301526118948161164f565b9050919050565b600060208201905081810360008301526118b481611672565b9050919050565b600060208201905081810360008301526118d481611695565b9050919050565b600060208201905081810360008301526118f4816116b8565b9050919050565b60006020820190508181036000830152611914816116db565b9050919050565b60006020820190508181036000830152611934816116fe565b9050919050565b6000602082019050818103600083015261195481611721565b9050919050565b6000602082019050818103600083015261197481611744565b9050919050565b6000602082019050818103600083015261199481611767565b9050919050565b600060208201905081810360008301526119b48161178a565b9050919050565b60006020820190506119d060008301846117ad565b92915050565b60006020820190506119eb60008301846117bc565b92915050565b6000602082019050611a0660008301846117cb565b92915050565b6000611a16611a27565b9050611a228282611c50565b919050565b6000604051905090565b600067ffffffffffffffff821115611a4c57611a4b611d86565b5b602082029050602081019050919050565b600067ffffffffffffffff821115611a7857611a77611d86565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000611ab082611bc4565b9150611abb83611bc4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611af057611aef611cca565b5b828201905092915050565b6000611b0682611bc4565b9150611b1183611bc4565b925082611b2157611b20611cf9565b5b828204905092915050565b6000611b3782611bc4565b9150611b4283611bc4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611b7b57611b7a611cca565b5b828202905092915050565b6000611b9182611ba4565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60005b83811015611c09578082015181840152602081019050611bee565b83811115611c18576000848401525b50505050565b60006002820490506001821680611c3657607f821691505b60208210811415611c4a57611c49611d28565b5b50919050565b611c5982611dc9565b810181811067ffffffffffffffff82111715611c7857611c77611d86565b5b80604052505050565b6000611c8c82611bc4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611cbf57611cbe611cca565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4353484f503a206d696e74696e67206e6f7420616c6c6f776564207965740000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6120d681611b86565b81146120e157600080fd5b50565b6120ed81611bc4565b81146120f857600080fd5b5056fea2646970667358221220013ee7900a2333488d589d2e42d3fb5e263c141ccf9f15bc9e804ba981a30b9864736f6c63430008070033000000000000000000000000e2ced88d03113f5fead4de9ecebcd1a531f4ba9b000000000000000000000000e2ced88d03113f5fead4de9ecebcd1a531f4ba9b0000000000000000000000000000000000000000000000000000000063b0bef0