6080604052600180556000600560006101000a81548160ff0219169083151502179055506000600b556658d15e17628000600c556000600e60006101000a81548160ff0219169083151502179055503480156200005b57600080fd5b506040516200442d3803806200442d8339818101604052810190620000819190620003f3565b6040518060400160405280600c81526020017f446f6f646c65204672656e7a00000000000000000000000000000000000000008152506040518060400160405280600581526020017f4672656e7a0000000000000000000000000000000000000000000000000000008152506000620000ff620001e960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508160039080519060200190620001b5929190620002c5565b508060049080519060200190620001ce929190620002c5565b505050620001e281620001f160201b60201c565b506200064b565b600033905090565b62000201620001e960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002276200029c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000277906200046b565b60405180910390fd5b80600d908051906020019062000298929190620002c5565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620002d39062000533565b90600052602060002090601f016020900481019282620002f7576000855562000343565b82601f106200031257805160ff191683800117855562000343565b8280016001018555821562000343579182015b828111156200034257825182559160200191906001019062000325565b5b50905062000352919062000356565b5090565b5b808211156200037157600081600090555060010162000357565b5090565b60006200038c6200038684620004b6565b6200048d565b905082815260208101848484011115620003ab57620003aa62000602565b5b620003b8848285620004fd565b509392505050565b600082601f830112620003d857620003d7620005fd565b5b8151620003ea84826020860162000375565b91505092915050565b6000602082840312156200040c576200040b6200060c565b5b600082015167ffffffffffffffff8111156200042d576200042c62000607565b5b6200043b84828501620003c0565b91505092915050565b600062000453602083620004ec565b9150620004608262000622565b602082019050919050565b60006020820190508181036000830152620004868162000444565b9050919050565b600062000499620004ac565b9050620004a7828262000569565b919050565b6000604051905090565b600067ffffffffffffffff821115620004d457620004d3620005ce565b5b620004df8262000611565b9050602081019050919050565b600082825260208201905092915050565b60005b838110156200051d57808201518184015260208101905062000500565b838111156200052d576000848401525b50505050565b600060028204905060018216806200054c57607f821691505b602082108114156200056357620005626200059f565b5b50919050565b620005748262000611565b810181811067ffffffffffffffff82111715620005965762000595620005ce565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b613dd2806200065b6000396000f3fe6080604052600436106101d85760003560e01c80636352211e11610102578063a035b1fe11610095578063c080519711610064578063c080519714610663578063c87b56dd146106a0578063e985e9c5146106dd578063f2fde38b1461071a576101d8565b8063a035b1fe146105bd578063a22cb465146105e8578063a2b40d1914610611578063b88d4fde1461063a576101d8565b8063801fe59b116100d1578063801fe59b146105255780638da5cb5b1461053c57806395d89b411461056757806399288dbb14610592576101d8565b80636352211e1461047d57806370a08231146104ba578063715018a6146104f75780637ba5e6211461050e576101d8565b806332cb6b0c1161017a5780634aaf78f1116101495780634aaf78f1146103c35780634f6ccce7146103ee57806355a554651461042b57806355f804b314610454576101d8565b806332cb6b0c1461033c5780633ccfd60b1461036757806340c10f191461037e57806342842e0e1461039a576101d8565b8063095ea7b3116101b6578063095ea7b31461028257806318160ddd146102ab57806323b872dd146102d65780632f745c59146102ff576101d8565b806301ffc9a7146101dd57806306fdde031461021a578063081812fc14610245575b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff919061318d565b610743565b60405161021191906134dc565b60405180910390f35b34801561022657600080fd5b5061022f61088d565b60405161023c91906134f7565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190613203565b61091f565b60405161027991906134c1565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a4919061314d565b61099b565b005b3480156102b757600080fd5b506102c0610b56565b6040516102cd9190613659565b60405180910390f35b3480156102e257600080fd5b506102fd60048036038101906102f89190613037565b610b60565b005b34801561030b57600080fd5b506103266004803603810190610321919061314d565b610b70565b6040516103339190613659565b60405180910390f35b34801561034857600080fd5b50610351610d4a565b60405161035e9190613659565b60405180910390f35b34801561037357600080fd5b5061037c610d50565b005b6103986004803603810190610393919061314d565b610e7b565b005b3480156103a657600080fd5b506103c160048036038101906103bc9190613037565b611097565b005b3480156103cf57600080fd5b506103d86110b7565b6040516103e591906134dc565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190613203565b6110ca565b6040516104229190613659565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190613230565b61120f565b005b34801561046057600080fd5b5061047b600480360381019061047691906131ba565b6112ba565b005b34801561048957600080fd5b506104a4600480360381019061049f9190613203565b611350565b6040516104b191906134c1565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc9190612fca565b611366565b6040516104ee9190613659565b60405180910390f35b34801561050357600080fd5b5061050c611436565b005b34801561051a57600080fd5b50610523611570565b005b34801561053157600080fd5b5061053a611618565b005b34801561054857600080fd5b506105516116c0565b60405161055e91906134c1565b60405180910390f35b34801561057357600080fd5b5061057c6116e9565b60405161058991906134f7565b60405180910390f35b34801561059e57600080fd5b506105a761177b565b6040516105b491906134dc565b60405180910390f35b3480156105c957600080fd5b506105d261178e565b6040516105df9190613659565b60405180910390f35b3480156105f457600080fd5b5061060f600480360381019061060a919061310d565b611794565b005b34801561061d57600080fd5b5061063860048036038101906106339190613203565b611a8c565b005b34801561064657600080fd5b50610661600480360381019061065c919061308a565b611b12565b005b34801561066f57600080fd5b5061068a60048036038101906106859190613203565b611b65565b60405161069791906134dc565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c29190613203565b611b85565b6040516106d491906134f7565b60405180910390f35b3480156106e957600080fd5b5061070460048036038101906106ff9190612ff7565b611c24565b60405161071191906134dc565b60405180910390f35b34801561072657600080fd5b50610741600480360381019061073c9190612fca565b611cb8565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061080e57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061087657507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610886575061088582611e61565b5b9050919050565b60606003805461089c906138f8565b80601f01602080910402602001604051908101604052809291908181526020018280546108c8906138f8565b80156109155780601f106108ea57610100808354040283529160200191610915565b820191906000526020600020905b8154815290600101906020018083116108f857829003601f168201915b5050505050905090565b600061092a82611ecb565b610960576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109a682611350565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a0e576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a2d611f48565b73ffffffffffffffffffffffffffffffffffffffff1614158015610a5f5750610a5d81610a58611f48565b611c24565b155b15610a96576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900460ff16158015610ad15750600a600083815260200190815260200160002060009054906101000a900460ff16155b15610b4557610af58373ffffffffffffffffffffffffffffffffffffffff16611f50565b15610b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2c90613579565b60405180910390fd5b610b40838383611f73565b610b51565b610b50838383611f73565b5b505050565b6000600b54905090565b610b6b838383612025565b505050565b6000610b7b83611366565b8210610bb3576040517f0ddac30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600154905060008060005b83811015610d3e576000600660008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015115610c9d5750610d31565b600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610cdd57806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d2f5786841415610d26578195505050505050610d44565b83806001019450505b505b8080600101915050610bc0565b50600080fd5b92915050565b6107d081565b610d58611f48565b73ffffffffffffffffffffffffffffffffffffffff16610d766116c0565b73ffffffffffffffffffffffffffffffffffffffff1614610dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc3906135d9565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610df2906134ac565b60006040518083038185875af1925050503d8060008114610e2f576040519150601f19603f3d011682016040523d82523d6000602084013e610e34565b606091505b5050905080610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90613619565b60405180910390fd5b50565b6000610e85610b56565b90506107d08282610e96919061372d565b1115610ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ece906135f9565b60405180910390fd5b60008211610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1190613519565b60405180910390fd5b610f226116c0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461103857600e60009054906101000a900460ff16610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a90613559565b60405180910390fd5b600f821115610fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fde90613639565b60405180910390fd5b81600c54610ff591906137b4565b341015611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e906135b9565b60405180910390fd5b5b81600b600082825461104a919061372d565b9250508190555061105b8383612516565b7f176b02bb2d12439ff7a20b59f402cca16c76f50508b13ef3166a600eb719354a8260405161108a9190613659565b60405180910390a1505050565b6110b283838360405180602001604052806000815250611b12565b505050565b600560009054906101000a900460ff1681565b60008060015490506000805b828110156111d7576000600660008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff161515151581525050905080604001516111c957858314156111c0578194505050505061120a565b82806001019350505b5080806001019150506110d6565b506040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b611217611f48565b73ffffffffffffffffffffffffffffffffffffffff166112356116c0565b73ffffffffffffffffffffffffffffffffffffffff161461128b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611282906135d9565b60405180910390fd5b80600a600084815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6112c2611f48565b73ffffffffffffffffffffffffffffffffffffffff166112e06116c0565b73ffffffffffffffffffffffffffffffffffffffff1614611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d906135d9565b60405180910390fd5b80600d908051906020019061134c929190612db0565b5050565b600061135b82612534565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113ce576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b61143e611f48565b73ffffffffffffffffffffffffffffffffffffffff1661145c6116c0565b73ffffffffffffffffffffffffffffffffffffffff16146114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a9906135d9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611578611f48565b73ffffffffffffffffffffffffffffffffffffffff166115966116c0565b73ffffffffffffffffffffffffffffffffffffffff16146115ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e3906135d9565b60405180910390fd5b600e60009054906101000a900460ff1615600e60006101000a81548160ff021916908315150217905550565b611620611f48565b73ffffffffffffffffffffffffffffffffffffffff1661163e6116c0565b73ffffffffffffffffffffffffffffffffffffffff1614611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168b906135d9565b60405180910390fd5b600560009054906101000a900460ff1615600560006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546116f8906138f8565b80601f0160208091040260200160405190810160405280929190818152602001828054611724906138f8565b80156117715780601f1061174657610100808354040283529160200191611771565b820191906000526020600020905b81548152906001019060200180831161175457829003601f168201915b5050505050905090565b600e60009054906101000a900460ff1681565b600c5481565b61179c611f48565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611801576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900460ff16611980576118348273ffffffffffffffffffffffffffffffffffffffff16611f50565b15611874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186b90613579565b60405180910390fd5b8060096000611881611f48565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661192e611f48565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161197391906134dc565b60405180910390a3611a88565b806009600061198d611f48565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611a3a611f48565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a7f91906134dc565b60405180910390a35b5050565b611a94611f48565b73ffffffffffffffffffffffffffffffffffffffff16611ab26116c0565b73ffffffffffffffffffffffffffffffffffffffff1614611b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aff906135d9565b60405180910390fd5b80600c8190555050565b611b1d848484612025565b611b29848484846127b0565b611b5f576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6060611b9082611ecb565b611bc6576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611bd0612867565b9050600081511415611bf15760405180602001604052806000815250611c1c565b80611bfb846128f9565b604051602001611c0c929190613488565b6040516020818303038152906040525b915050919050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611cc0611f48565b73ffffffffffffffffffffffffffffffffffffffff16611cde6116c0565b73ffffffffffffffffffffffffffffffffffffffff1614611d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2b906135d9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9b90613539565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000808211611f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0690613599565b60405180910390fd5b60015482108015611f41575060066000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b826008600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061203082612534565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612057611f48565b73ffffffffffffffffffffffffffffffffffffffff16148061208a57506120898260000151612084611f48565b611c24565b5b806120cf5750612098611f48565b73ffffffffffffffffffffffffffffffffffffffff166120b78461091f565b73ffffffffffffffffffffffffffffffffffffffff16145b905080612108576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612171576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156121d8576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121e58585856001612a5a565b6121f56000848460000151611f73565b6001600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836006600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426006600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156124a6576001548110156124a55782600001516006600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516006600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461250f8585856001612a60565b5050505050565b612530828260405180602001604052806000815250612a66565b5050565b61253c612e36565b6000829050600154811015612779576000600660008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161277757600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461265b5780925050506127ab565b5b60011561277657818060019003925050600660008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146127715780925050506127ab565b61265c565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600560009054906101000a900460ff161580156127ed5750600a600084815260200190815260200160002060009054906101000a900460ff16155b1561285a576128118473ffffffffffffffffffffffffffffffffffffffff16611f50565b15612851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284890613579565b60405180910390fd5b6001905061285f565b600190505b949350505050565b6060600d8054612876906138f8565b80601f01602080910402602001604051908101604052809291908181526020018280546128a2906138f8565b80156128ef5780601f106128c4576101008083540402835291602001916128ef565b820191906000526020600020905b8154815290600101906020018083116128d257829003601f168201915b5050505050905090565b60606000821415612941576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612a55565b600082905060005b6000821461297357808061295c9061395b565b915050600a8261296c9190613783565b9150612949565b60008167ffffffffffffffff81111561298f5761298e613a91565b5b6040519080825280601f01601f1916602001820160405280156129c15781602001600182028036833780820191505090505b5090505b60008514612a4e576001826129da919061380e565b9150600a856129e991906139a4565b60306129f5919061372d565b60f81b818381518110612a0b57612a0a613a62565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612a479190613783565b94506129c5565b8093505050505b919050565b50505050565b50505050565b612a738383836001612a78565b505050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612ae6576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000841415612b21576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612b2e6000868387612a5a565b83600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846006600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426006600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b85811015612d9357818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4838015612d475750612d4560008884886127b0565b155b15612d7e576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81806001019250508080600101915050612ccc565b508060018190555050612da96000868387612a60565b5050505050565b828054612dbc906138f8565b90600052602060002090601f016020900481019282612dde5760008555612e25565b82601f10612df757805160ff1916838001178555612e25565b82800160010185558215612e25579182015b82811115612e24578251825591602001919060010190612e09565b5b509050612e329190612e79565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115612e92576000816000905550600101612e7a565b5090565b6000612ea9612ea484613699565b613674565b905082815260208101848484011115612ec557612ec4613ac5565b5b612ed08482856138b6565b509392505050565b6000612eeb612ee6846136ca565b613674565b905082815260208101848484011115612f0757612f06613ac5565b5b612f128482856138b6565b509392505050565b600081359050612f2981613d40565b92915050565b600081359050612f3e81613d57565b92915050565b600081359050612f5381613d6e565b92915050565b600082601f830112612f6e57612f6d613ac0565b5b8135612f7e848260208601612e96565b91505092915050565b600082601f830112612f9c57612f9b613ac0565b5b8135612fac848260208601612ed8565b91505092915050565b600081359050612fc481613d85565b92915050565b600060208284031215612fe057612fdf613acf565b5b6000612fee84828501612f1a565b91505092915050565b6000806040838503121561300e5761300d613acf565b5b600061301c85828601612f1a565b925050602061302d85828601612f1a565b9150509250929050565b6000806000606084860312156130505761304f613acf565b5b600061305e86828701612f1a565b935050602061306f86828701612f1a565b925050604061308086828701612fb5565b9150509250925092565b600080600080608085870312156130a4576130a3613acf565b5b60006130b287828801612f1a565b94505060206130c387828801612f1a565b93505060406130d487828801612fb5565b925050606085013567ffffffffffffffff8111156130f5576130f4613aca565b5b61310187828801612f59565b91505092959194509250565b6000806040838503121561312457613123613acf565b5b600061313285828601612f1a565b925050602061314385828601612f2f565b9150509250929050565b6000806040838503121561316457613163613acf565b5b600061317285828601612f1a565b925050602061318385828601612fb5565b9150509250929050565b6000602082840312156131a3576131a2613acf565b5b60006131b184828501612f44565b91505092915050565b6000602082840312156131d0576131cf613acf565b5b600082013567ffffffffffffffff8111156131ee576131ed613aca565b5b6131fa84828501612f87565b91505092915050565b60006020828403121561321957613218613acf565b5b600061322784828501612fb5565b91505092915050565b6000806040838503121561324757613246613acf565b5b600061325585828601612fb5565b925050602061326685828601612f2f565b9150509250929050565b61327981613842565b82525050565b61328881613854565b82525050565b6000613299826136fb565b6132a38185613711565b93506132b38185602086016138c5565b6132bc81613ad4565b840191505092915050565b60006132d2826136fb565b6132dc8185613722565b93506132ec8185602086016138c5565b80840191505092915050565b6000613305602e83613711565b915061331082613ae5565b604082019050919050565b6000613328602683613711565b915061333382613b34565b604082019050919050565b600061334b601483613711565b915061335682613b83565b602082019050919050565b600061336e603283613711565b915061337982613bac565b604082019050919050565b6000613391600f83613711565b915061339c82613bfb565b602082019050919050565b60006133b4602f83613711565b91506133bf82613c24565b604082019050919050565b60006133d7602083613711565b91506133e282613c73565b602082019050919050565b60006133fa601683613711565b915061340582613c9c565b602082019050919050565b600061341d600083613706565b915061342882613cc5565b600082019050919050565b6000613440601083613711565b915061344b82613cc8565b602082019050919050565b6000613463602d83613711565b915061346e82613cf1565b604082019050919050565b613482816138ac565b82525050565b600061349482856132c7565b91506134a082846132c7565b91508190509392505050565b60006134b782613410565b9150819050919050565b60006020820190506134d66000830184613270565b92915050565b60006020820190506134f1600083018461327f565b92915050565b60006020820190508181036000830152613511818461328e565b905092915050565b60006020820190508181036000830152613532816132f8565b9050919050565b600060208201905081810360008301526135528161331b565b9050919050565b600060208201905081810360008301526135728161333e565b9050919050565b6000602082019050818103600083015261359281613361565b9050919050565b600060208201905081810360008301526135b281613384565b9050919050565b600060208201905081810360008301526135d2816133a7565b9050919050565b600060208201905081810360008301526135f2816133ca565b9050919050565b60006020820190508181036000830152613612816133ed565b9050919050565b6000602082019050818103600083015261363281613433565b9050919050565b6000602082019050818103600083015261365281613456565b9050919050565b600060208201905061366e6000830184613479565b92915050565b600061367e61368f565b905061368a828261392a565b919050565b6000604051905090565b600067ffffffffffffffff8211156136b4576136b3613a91565b5b6136bd82613ad4565b9050602081019050919050565b600067ffffffffffffffff8211156136e5576136e4613a91565b5b6136ee82613ad4565b9050602081019050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613738826138ac565b9150613743836138ac565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613778576137776139d5565b5b828201905092915050565b600061378e826138ac565b9150613799836138ac565b9250826137a9576137a8613a04565b5b828204905092915050565b60006137bf826138ac565b91506137ca836138ac565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613803576138026139d5565b5b828202905092915050565b6000613819826138ac565b9150613824836138ac565b925082821015613837576138366139d5565b5b828203905092915050565b600061384d8261388c565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156138e35780820151818401526020810190506138c8565b838111156138f2576000848401525b50505050565b6000600282049050600182168061391057607f821691505b6020821081141561392457613923613a33565b5b50919050565b61393382613ad4565b810181811067ffffffffffffffff8211171561395257613951613a91565b5b80604052505050565b6000613966826138ac565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613999576139986139d5565b5b600182019050919050565b60006139af826138ac565b91506139ba836138ac565b9250826139ca576139c9613a04565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4d696e696d756d2031204e46542068617320746f206265206d696e746564207060008201527f6572207472616e73616374696f6e000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f53616c65206973206e6f74206f70656e20796574000000000000000000000000600082015250565b7f546f6b656e207472616e7366657220746f20636f6e747261637420616464726560008201527f7373206973206e6f7420616c6c6f7765642e0000000000000000000000000000602082015250565b7f496e76616c696420546f6b656e49640000000000000000000000000000000000600082015250565b7f45746865722073656e7420776974682074686973207472616e73616374696f6e60008201527f206973206e6f7420636f72726563740000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45786365656473206d6178696d756d20737570706c7900000000000000000000600082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f4d6178696d756d203135204e4654732063616e206265206d696e74656420706560008201527f72207472616e73616374696f6e00000000000000000000000000000000000000602082015250565b613d4981613842565b8114613d5457600080fd5b50565b613d6081613854565b8114613d6b57600080fd5b50565b613d7781613860565b8114613d8257600080fd5b50565b613d8e816138ac565b8114613d9957600080fd5b5056fea264697066735822122045c54967c2a5e11e329215c166e90b46a8da4c89585c59f0180b20af9018b2cb64736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000