0x6080604052600436106101235760003560e01c8063715018a6116100a0578063b87f137a11610064578063b87f137a146103ba578063c3c8cd80146103e3578063c9567bf9146103fa578063ccfee5d614610411578063dd62ed3e1461043a5761012a565b8063715018a6146102f9578063751039fc146103105780638da5cb5b1461032757806395d89b4114610352578063a9059cbb1461037d5761012a565b8063313ce567116100e7578063313ce567146102285780635932ead114610253578063677daa571461027c5780636fc3eaec146102a557806370a08231146102bc5761012a565b806306fdde031461012f578063095ea7b31461015a57806318160ddd1461019757806323b872dd146101c2578063273123b7146101ff5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b50610144610477565b60405161015191906127cd565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190612897565b6104b4565b60405161018e91906128f2565b60405180910390f35b3480156101a357600080fd5b506101ac6104d2565b6040516101b9919061291c565b60405180910390f35b3480156101ce57600080fd5b506101e960048036038101906101e49190612937565b6104e3565b6040516101f691906128f2565b60405180910390f35b34801561020b57600080fd5b506102266004803603810190610221919061298a565b6105bc565b005b34801561023457600080fd5b5061023d6106ac565b60405161024a91906129d3565b60405180910390f35b34801561025f57600080fd5b5061027a60048036038101906102759190612a1a565b6106b5565b005b34801561028857600080fd5b506102a3600480360381019061029e9190612a47565b610767565b005b3480156102b157600080fd5b506102ba610841565b005b3480156102c857600080fd5b506102e360048036038101906102de919061298a565b6108b3565b6040516102f0919061291c565b60405180910390f35b34801561030557600080fd5b5061030e610904565b005b34801561031c57600080fd5b50610325610a57565b005b34801561033357600080fd5b5061033c610b0e565b6040516103499190612a83565b60405180910390f35b34801561035e57600080fd5b50610367610b37565b60405161037491906127cd565b60405180910390f35b34801561038957600080fd5b506103a4600480360381019061039f9190612897565b610b74565b6040516103b191906128f2565b60405180910390f35b3480156103c657600080fd5b506103e160048036038101906103dc9190612a47565b610b92565b005b3480156103ef57600080fd5b506103f8610c6c565b005b34801561040657600080fd5b5061040f610ce6565b005b34801561041d57600080fd5b5061043860048036038101906104339190612be6565b6112a1565b005b34801561044657600080fd5b50610461600480360381019061045c9190612c2f565b6113cb565b60405161046e919061291c565b60405180910390f35b60606040518060400160405280600881526020017f5461727461727573000000000000000000000000000000000000000000000000815250905090565b60006104c86104c1611452565b848461145a565b6001905092915050565b600068056bc75e2f7b811a00905090565b60006104f0848484611625565b6105b1846104fc611452565b6105ac8560405180606001604052806028815260200161377160289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610562611452565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cb89092919063ffffffff16565b61145a565b600190509392505050565b6105c4611452565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064890612cbb565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b6106bd611452565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461074a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074190612cbb565b60405180910390fd5b80600e60176101000a81548160ff02191690831515021790555050565b61076f611452565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f390612cbb565b60405180910390fd5b6000811161080957600080fd5b610838606461082a8368056bc75e2f7b811a00611d1c90919063ffffffff16565b611d9790919063ffffffff16565b600f8190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610882611452565b73ffffffffffffffffffffffffffffffffffffffff16146108a257600080fd5b60004790506108b081611de1565b50565b60006108fd600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4d565b9050919050565b61090c611452565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099090612cbb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a5f611452565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae390612cbb565b60405180910390fd5b68056bc75e2f7b811a00600f8190555068056bc75e2f7b811a00601081905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5441520000000000000000000000000000000000000000000000000000000000815250905090565b6000610b88610b81611452565b8484611625565b6001905092915050565b610b9a611452565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1e90612cbb565b60405180910390fd5b60008111610c3457600080fd5b610c636064610c558368056bc75e2f7b811a00611d1c90919063ffffffff16565b611d9790919063ffffffff16565b60108190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cad611452565b73ffffffffffffffffffffffffffffffffffffffff1614610ccd57600080fd5b6000610cd8306108b3565b9050610ce381611ebb565b50565b610cee611452565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7290612cbb565b60405180910390fd5b600e60149054906101000a900460ff1615610dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc290612d27565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e5b30600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1668056bc75e2f7b811a0061145a565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ea157600080fd5b505afa158015610eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed99190612d5c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f3b57600080fd5b505afa158015610f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f739190612d5c565b6040518363ffffffff1660e01b8152600401610f90929190612d89565b602060405180830381600087803b158015610faa57600080fd5b505af1158015610fbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe29190612d5c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061106b306108b3565b600080611076610b0e565b426040518863ffffffff1660e01b815260040161109896959493929190612df7565b6060604051808303818588803b1580156110b157600080fd5b505af11580156110c5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110ea9190612e6d565b5050506001600e60166101000a81548160ff0219169083151502179055506001600e60176101000a81548160ff0219169083151502179055506111546103e8611146601468056bc75e2f7b811a00611d1c90919063ffffffff16565b611d9790919063ffffffff16565b600f8190555061118b6103e861117d601e68056bc75e2f7b811a00611d1c90919063ffffffff16565b611d9790919063ffffffff16565b6010819055506001600e60146101000a81548160ff021916908315150217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161124b929190612ec0565b602060405180830381600087803b15801561126557600080fd5b505af1158015611279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129d9190612efe565b5050565b6112a9611452565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d90612cbb565b60405180910390fd5b60005b81518110156113c75760016006600084848151811061135b5761135a612f2b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113bf90612f89565b915050611339565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c190613044565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561153a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611531906130d6565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611618919061291c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c90613168565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc906131fa565b60405180910390fd5b60008111611748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173f9061328c565b60405180910390fd5b6000600a819055506007600b81905550611760610b0e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ce575061179e610b0e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ca857600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118775750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61188057600080fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561192b5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119815750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119995750600e60179054906101000a900460ff165b15611ad757600f548111156119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da906132f8565b60405180910390fd5b601054816119f0846108b3565b6119fa9190613318565b1115611a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a32906133ba565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a8657600080fd5b601e42611a939190613318565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611b825750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bd85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bee576000600a819055506007600b819055505b6000611bf9306108b3565b9050600e60159054906101000a900460ff16158015611c665750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611c7e5750600e60169054906101000a900460ff165b15611ca657611c8c81611ebb565b60004790506000811115611ca457611ca347611de1565b5b505b505b611cb3838383612143565b505050565b6000838311158290611d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf791906127cd565b60405180910390fd5b5060008385611d0f91906133da565b9050809150509392505050565b600080831415611d2f5760009050611d91565b60008284611d3d919061340e565b9050828482611d4c9190613497565b14611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d839061353a565b60405180910390fd5b809150505b92915050565b6000611dd983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612153565b905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e49573d6000803e3d6000fd5b5050565b6000600854821115611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b906135cc565b60405180910390fd5b6000611e9e6121b6565b9050611eb38184611d9790919063ffffffff16565b915050919050565b6001600e60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611ef357611ef2612aa3565b5b604051908082528060200260200182016040528015611f215781602001602082028036833780820191505090505b5090503081600081518110611f3957611f38612f2b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611fdb57600080fd5b505afa158015611fef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120139190612d5c565b8160018151811061202757612026612f2b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061208e30600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461145a565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120f29594939291906136aa565b600060405180830381600087803b15801561210c57600080fd5b505af1158015612120573d6000803e3d6000fd5b50505050506000600e60156101000a81548160ff02191690831515021790555050565b61214e8383836121e1565b505050565b6000808311829061219a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219191906127cd565b60405180910390fd5b50600083856121a99190613497565b9050809150509392505050565b60008060006121c36123ac565b915091506121da8183611d9790919063ffffffff16565b9250505090565b6000806000806000806121f38761240e565b95509550955095509550955061225186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122e685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124c090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123328161251e565b61233c84836125db565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612399919061291c565b60405180910390a3505050505050505050565b60008060006008549050600068056bc75e2f7b811a0090506123e268056bc75e2f7b811a00600854611d9790919063ffffffff16565b8210156124015760085468056bc75e2f7b811a0093509350505061240a565b81819350935050505b9091565b600080600080600080600080600061242b8a600a54600b54612615565b925092509250600061243b6121b6565b9050600080600061244e8e8787876126ab565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006124b883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cb8565b905092915050565b60008082846124cf9190613318565b905083811015612514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250b90613750565b60405180910390fd5b8091505092915050565b60006125286121b6565b9050600061253f8284611d1c90919063ffffffff16565b905061259381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124c090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6125f08260085461247690919063ffffffff16565b60088190555061260b816009546124c090919063ffffffff16565b6009819055505050565b6000806000806126416064612633888a611d1c90919063ffffffff16565b611d9790919063ffffffff16565b9050600061266b606461265d888b611d1c90919063ffffffff16565b611d9790919063ffffffff16565b9050600061269482612686858c61247690919063ffffffff16565b61247690919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806126c48589611d1c90919063ffffffff16565b905060006126db8689611d1c90919063ffffffff16565b905060006126f28789611d1c90919063ffffffff16565b9050600061271b8261270d858761247690919063ffffffff16565b61247690919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561276e578082015181840152602081019050612753565b8381111561277d576000848401525b50505050565b6000601f19601f8301169050919050565b600061279f82612734565b6127a9818561273f565b93506127b9818560208601612750565b6127c281612783565b840191505092915050565b600060208201905081810360008301526127e78184612794565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061282e82612803565b9050919050565b61283e81612823565b811461284957600080fd5b50565b60008135905061285b81612835565b92915050565b6000819050919050565b61287481612861565b811461287f57600080fd5b50565b6000813590506128918161286b565b92915050565b600080604083850312156128ae576128ad6127f9565b5b60006128bc8582860161284c565b92505060206128cd85828601612882565b9150509250929050565b60008115159050919050565b6128ec816128d7565b82525050565b600060208201905061290760008301846128e3565b92915050565b61291681612861565b82525050565b6000602082019050612931600083018461290d565b92915050565b6000806000606084860312156129505761294f6127f9565b5b600061295e8682870161284c565b935050602061296f8682870161284c565b925050604061298086828701612882565b9150509250925092565b6000602082840312156129a05761299f6127f9565b5b60006129ae8482850161284c565b91505092915050565b600060ff82169050919050565b6129cd816129b7565b82525050565b60006020820190506129e860008301846129c4565b92915050565b6129f7816128d7565b8114612a0257600080fd5b50565b600081359050612a14816129ee565b92915050565b600060208284031215612a3057612a2f6127f9565b5b6000612a3e84828501612a05565b91505092915050565b600060208284031215612a5d57612a5c6127f9565b5b6000612a6b84828501612882565b91505092915050565b612a7d81612823565b82525050565b6000602082019050612a986000830184612a74565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612adb82612783565b810181811067ffffffffffffffff82111715612afa57612af9612aa3565b5b80604052505050565b6000612b0d6127ef565b9050612b198282612ad2565b919050565b600067ffffffffffffffff821115612b3957612b38612aa3565b5b602082029050602081019050919050565b600080fd5b6000612b62612b5d84612b1e565b612b03565b90508083825260208201905060208402830185811115612b8557612b84612b4a565b5b835b81811015612bae5780612b9a888261284c565b845260208401935050602081019050612b87565b5050509392505050565b600082601f830112612bcd57612bcc612a9e565b5b8135612bdd848260208601612b4f565b91505092915050565b600060208284031215612bfc57612bfb6127f9565b5b600082013567ffffffffffffffff811115612c1a57612c196127fe565b5b612c2684828501612bb8565b91505092915050565b60008060408385031215612c4657612c456127f9565b5b6000612c548582860161284c565b9250506020612c658582860161284c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ca560208361273f565b9150612cb082612c6f565b602082019050919050565b60006020820190508181036000830152612cd481612c98565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612d1160178361273f565b9150612d1c82612cdb565b602082019050919050565b60006020820190508181036000830152612d4081612d04565b9050919050565b600081519050612d5681612835565b92915050565b600060208284031215612d7257612d716127f9565b5b6000612d8084828501612d47565b91505092915050565b6000604082019050612d9e6000830185612a74565b612dab6020830184612a74565b9392505050565b6000819050919050565b6000819050919050565b6000612de1612ddc612dd784612db2565b612dbc565b612861565b9050919050565b612df181612dc6565b82525050565b600060c082019050612e0c6000830189612a74565b612e19602083018861290d565b612e266040830187612de8565b612e336060830186612de8565b612e406080830185612a74565b612e4d60a083018461290d565b979650505050505050565b600081519050612e678161286b565b92915050565b600080600060608486031215612e8657612e856127f9565b5b6000612e9486828701612e58565b9350506020612ea586828701612e58565b9250506040612eb686828701612e58565b9150509250925092565b6000604082019050612ed56000830185612a74565b612ee2602083018461290d565b9392505050565b600081519050612ef8816129ee565b92915050565b600060208284031215612f1457612f136127f9565b5b6000612f2284828501612ee9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f9482612861565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612fc757612fc6612f5a565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061302e60248361273f565b915061303982612fd2565b604082019050919050565b6000602082019050818103600083015261305d81613021565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130c060228361273f565b91506130cb82613064565b604082019050919050565b600060208201905081810360008301526130ef816130b3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061315260258361273f565b915061315d826130f6565b604082019050919050565b6000602082019050818103600083015261318181613145565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131e460238361273f565b91506131ef82613188565b604082019050919050565b60006020820190508181036000830152613213816131d7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061327660298361273f565b91506132818261321a565b604082019050919050565b600060208201905081810360008301526132a581613269565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006132e260198361273f565b91506132ed826132ac565b602082019050919050565b60006020820190508181036000830152613311816132d5565b9050919050565b600061332382612861565b915061332e83612861565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561336357613362612f5a565b5b828201905092915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b60006133a4601a8361273f565b91506133af8261336e565b602082019050919050565b600060208201905081810360008301526133d381613397565b9050919050565b60006133e582612861565b91506133f083612861565b92508282101561340357613402612f5a565b5b828203905092915050565b600061341982612861565b915061342483612861565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561345d5761345c612f5a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134a282612861565b91506134ad83612861565b9250826134bd576134bc613468565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061352460218361273f565b915061352f826134c8565b604082019050919050565b6000602082019050818103600083015261355381613517565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006135b6602a8361273f565b91506135c18261355a565b604082019050919050565b600060208201905081810360008301526135e5816135a9565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61362181612823565b82525050565b60006136338383613618565b60208301905092915050565b6000602082019050919050565b6000613657826135ec565b61366181856135f7565b935061366c83613608565b8060005b8381101561369d5781516136848882613627565b975061368f8361363f565b925050600181019050613670565b5085935050505092915050565b600060a0820190506136bf600083018861290d565b6136cc6020830187612de8565b81810360408301526136de818661364c565b90506136ed6060830185612a74565b6136fa608083018461290d565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061373a601b8361273f565b915061374582613704565b602082019050919050565b600060208201905081810360008301526137698161372d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fe8a1695795213042ed7fbbc3f8dc925b315b1596c623feeb221df5dca194f9a64736f6c63430008080033
0x608060405268056bc75e2f7b811a006000196200001d91906200042b565b6000196200002c919062000492565b6008556000600e60156101000a81548160ff0219169083151502179055506000600e60166101000a81548160ff0219169083151502179055506000600e60176101000a81548160ff02191690831515021790555068056bc75e2f7b811a00600f5568056bc75e2f7b811a00601055348015620000a757600080fd5b506000620000ba620003c160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350739c196c80fef509f4d822202d1ce4da06e7000e6f600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060085460026000620001c4620003c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016005600062000218620003c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200034b620003c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef68056bc75e2f7b811a00604051620003b39190620004de565b60405180910390a3620004fb565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200043882620003f2565b91506200044583620003f2565b925082620004585762000457620003fc565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200049f82620003f2565b9150620004ac83620003f2565b925082821015620004c257620004c162000463565b5b828203905092915050565b620004d881620003f2565b82525050565b6000602082019050620004f56000830184620004cd565b92915050565b6137ce806200050b6000396000f3fe6080604052600436106101235760003560e01c8063715018a6116100a0578063b87f137a11610064578063b87f137a146103ba578063c3c8cd80146103e3578063c9567bf9146103fa578063ccfee5d614610411578063dd62ed3e1461043a5761012a565b8063715018a6146102f9578063751039fc146103105780638da5cb5b1461032757806395d89b4114610352578063a9059cbb1461037d5761012a565b8063313ce567116100e7578063313ce567146102285780635932ead114610253578063677daa571461027c5780636fc3eaec146102a557806370a08231146102bc5761012a565b806306fdde031461012f578063095ea7b31461015a57806318160ddd1461019757806323b872dd146101c2578063273123b7146101ff5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b50610144610477565b60405161015191906127cd565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190612897565b6104b4565b60405161018e91906128f2565b60405180910390f35b3480156101a357600080fd5b506101ac6104d2565b6040516101b9919061291c565b60405180910390f35b3480156101ce57600080fd5b506101e960048036038101906101e49190612937565b6104e3565b6040516101f691906128f2565b60405180910390f35b34801561020b57600080fd5b506102266004803603810190610221919061298a565b6105bc565b005b34801561023457600080fd5b5061023d6106ac565b60405161024a91906129d3565b60405180910390f35b34801561025f57600080fd5b5061027a60048036038101906102759190612a1a565b6106b5565b005b34801561028857600080fd5b506102a3600480360381019061029e9190612a47565b610767565b005b3480156102b157600080fd5b506102ba610841565b005b3480156102c857600080fd5b506102e360048036038101906102de919061298a565b6108b3565b6040516102f0919061291c565b60405180910390f35b34801561030557600080fd5b5061030e610904565b005b34801561031c57600080fd5b50610325610a57565b005b34801561033357600080fd5b5061033c610b0e565b6040516103499190612a83565b60405180910390f35b34801561035e57600080fd5b50610367610b37565b60405161037491906127cd565b60405180910390f35b34801561038957600080fd5b506103a4600480360381019061039f9190612897565b610b74565b6040516103b191906128f2565b60405180910390f35b3480156103c657600080fd5b506103e160048036038101906103dc9190612a47565b610b92565b005b3480156103ef57600080fd5b506103f8610c6c565b005b34801561040657600080fd5b5061040f610ce6565b005b34801561041d57600080fd5b5061043860048036038101906104339190612be6565b6112a1565b005b34801561044657600080fd5b50610461600480360381019061045c9190612c2f565b6113cb565b60405161046e919061291c565b60405180910390f35b60606040518060400160405280600881526020017f5461727461727573000000000000000000000000000000000000000000000000815250905090565b60006104c86104c1611452565b848461145a565b6001905092915050565b600068056bc75e2f7b811a00905090565b60006104f0848484611625565b6105b1846104fc611452565b6105ac8560405180606001604052806028815260200161377160289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610562611452565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cb89092919063ffffffff16565b61145a565b600190509392505050565b6105c4611452565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064890612cbb565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b6106bd611452565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461074a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074190612cbb565b60405180910390fd5b80600e60176101000a81548160ff02191690831515021790555050565b61076f611452565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f390612cbb565b60405180910390fd5b6000811161080957600080fd5b610838606461082a8368056bc75e2f7b811a00611d1c90919063ffffffff16565b611d9790919063ffffffff16565b600f8190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610882611452565b73ffffffffffffffffffffffffffffffffffffffff16146108a257600080fd5b60004790506108b081611de1565b50565b60006108fd600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4d565b9050919050565b61090c611452565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099090612cbb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a5f611452565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae390612cbb565b60405180910390fd5b68056bc75e2f7b811a00600f8190555068056bc75e2f7b811a00601081905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5441520000000000000000000000000000000000000000000000000000000000815250905090565b6000610b88610b81611452565b8484611625565b6001905092915050565b610b9a611452565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1e90612cbb565b60405180910390fd5b60008111610c3457600080fd5b610c636064610c558368056bc75e2f7b811a00611d1c90919063ffffffff16565b611d9790919063ffffffff16565b60108190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cad611452565b73ffffffffffffffffffffffffffffffffffffffff1614610ccd57600080fd5b6000610cd8306108b3565b9050610ce381611ebb565b50565b610cee611452565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7290612cbb565b60405180910390fd5b600e60149054906101000a900460ff1615610dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc290612d27565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e5b30600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1668056bc75e2f7b811a0061145a565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ea157600080fd5b505afa158015610eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed99190612d5c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f3b57600080fd5b505afa158015610f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f739190612d5c565b6040518363ffffffff1660e01b8152600401610f90929190612d89565b602060405180830381600087803b158015610faa57600080fd5b505af1158015610fbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe29190612d5c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061106b306108b3565b600080611076610b0e565b426040518863ffffffff1660e01b815260040161109896959493929190612df7565b6060604051808303818588803b1580156110b157600080fd5b505af11580156110c5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110ea9190612e6d565b5050506001600e60166101000a81548160ff0219169083151502179055506001600e60176101000a81548160ff0219169083151502179055506111546103e8611146601468056bc75e2f7b811a00611d1c90919063ffffffff16565b611d9790919063ffffffff16565b600f8190555061118b6103e861117d601e68056bc75e2f7b811a00611d1c90919063ffffffff16565b611d9790919063ffffffff16565b6010819055506001600e60146101000a81548160ff021916908315150217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161124b929190612ec0565b602060405180830381600087803b15801561126557600080fd5b505af1158015611279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129d9190612efe565b5050565b6112a9611452565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d90612cbb565b60405180910390fd5b60005b81518110156113c75760016006600084848151811061135b5761135a612f2b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113bf90612f89565b915050611339565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c190613044565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561153a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611531906130d6565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611618919061291c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c90613168565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc906131fa565b60405180910390fd5b60008111611748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173f9061328c565b60405180910390fd5b6000600a819055506007600b81905550611760610b0e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ce575061179e610b0e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ca857600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118775750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61188057600080fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561192b5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119815750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119995750600e60179054906101000a900460ff165b15611ad757600f548111156119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da906132f8565b60405180910390fd5b601054816119f0846108b3565b6119fa9190613318565b1115611a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a32906133ba565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a8657600080fd5b601e42611a939190613318565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611b825750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bd85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bee576000600a819055506007600b819055505b6000611bf9306108b3565b9050600e60159054906101000a900460ff16158015611c665750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611c7e5750600e60169054906101000a900460ff165b15611ca657611c8c81611ebb565b60004790506000811115611ca457611ca347611de1565b5b505b505b611cb3838383612143565b505050565b6000838311158290611d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf791906127cd565b60405180910390fd5b5060008385611d0f91906133da565b9050809150509392505050565b600080831415611d2f5760009050611d91565b60008284611d3d919061340e565b9050828482611d4c9190613497565b14611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d839061353a565b60405180910390fd5b809150505b92915050565b6000611dd983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612153565b905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e49573d6000803e3d6000fd5b5050565b6000600854821115611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b906135cc565b60405180910390fd5b6000611e9e6121b6565b9050611eb38184611d9790919063ffffffff16565b915050919050565b6001600e60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611ef357611ef2612aa3565b5b604051908082528060200260200182016040528015611f215781602001602082028036833780820191505090505b5090503081600081518110611f3957611f38612f2b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611fdb57600080fd5b505afa158015611fef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120139190612d5c565b8160018151811061202757612026612f2b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061208e30600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461145a565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120f29594939291906136aa565b600060405180830381600087803b15801561210c57600080fd5b505af1158015612120573d6000803e3d6000fd5b50505050506000600e60156101000a81548160ff02191690831515021790555050565b61214e8383836121e1565b505050565b6000808311829061219a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219191906127cd565b60405180910390fd5b50600083856121a99190613497565b9050809150509392505050565b60008060006121c36123ac565b915091506121da8183611d9790919063ffffffff16565b9250505090565b6000806000806000806121f38761240e565b95509550955095509550955061225186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122e685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124c090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123328161251e565b61233c84836125db565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612399919061291c565b60405180910390a3505050505050505050565b60008060006008549050600068056bc75e2f7b811a0090506123e268056bc75e2f7b811a00600854611d9790919063ffffffff16565b8210156124015760085468056bc75e2f7b811a0093509350505061240a565b81819350935050505b9091565b600080600080600080600080600061242b8a600a54600b54612615565b925092509250600061243b6121b6565b9050600080600061244e8e8787876126ab565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006124b883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cb8565b905092915050565b60008082846124cf9190613318565b905083811015612514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250b90613750565b60405180910390fd5b8091505092915050565b60006125286121b6565b9050600061253f8284611d1c90919063ffffffff16565b905061259381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124c090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6125f08260085461247690919063ffffffff16565b60088190555061260b816009546124c090919063ffffffff16565b6009819055505050565b6000806000806126416064612633888a611d1c90919063ffffffff16565b611d9790919063ffffffff16565b9050600061266b606461265d888b611d1c90919063ffffffff16565b611d9790919063ffffffff16565b9050600061269482612686858c61247690919063ffffffff16565b61247690919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806126c48589611d1c90919063ffffffff16565b905060006126db8689611d1c90919063ffffffff16565b905060006126f28789611d1c90919063ffffffff16565b9050600061271b8261270d858761247690919063ffffffff16565b61247690919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561276e578082015181840152602081019050612753565b8381111561277d576000848401525b50505050565b6000601f19601f8301169050919050565b600061279f82612734565b6127a9818561273f565b93506127b9818560208601612750565b6127c281612783565b840191505092915050565b600060208201905081810360008301526127e78184612794565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061282e82612803565b9050919050565b61283e81612823565b811461284957600080fd5b50565b60008135905061285b81612835565b92915050565b6000819050919050565b61287481612861565b811461287f57600080fd5b50565b6000813590506128918161286b565b92915050565b600080604083850312156128ae576128ad6127f9565b5b60006128bc8582860161284c565b92505060206128cd85828601612882565b9150509250929050565b60008115159050919050565b6128ec816128d7565b82525050565b600060208201905061290760008301846128e3565b92915050565b61291681612861565b82525050565b6000602082019050612931600083018461290d565b92915050565b6000806000606084860312156129505761294f6127f9565b5b600061295e8682870161284c565b935050602061296f8682870161284c565b925050604061298086828701612882565b9150509250925092565b6000602082840312156129a05761299f6127f9565b5b60006129ae8482850161284c565b91505092915050565b600060ff82169050919050565b6129cd816129b7565b82525050565b60006020820190506129e860008301846129c4565b92915050565b6129f7816128d7565b8114612a0257600080fd5b50565b600081359050612a14816129ee565b92915050565b600060208284031215612a3057612a2f6127f9565b5b6000612a3e84828501612a05565b91505092915050565b600060208284031215612a5d57612a5c6127f9565b5b6000612a6b84828501612882565b91505092915050565b612a7d81612823565b82525050565b6000602082019050612a986000830184612a74565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612adb82612783565b810181811067ffffffffffffffff82111715612afa57612af9612aa3565b5b80604052505050565b6000612b0d6127ef565b9050612b198282612ad2565b919050565b600067ffffffffffffffff821115612b3957612b38612aa3565b5b602082029050602081019050919050565b600080fd5b6000612b62612b5d84612b1e565b612b03565b90508083825260208201905060208402830185811115612b8557612b84612b4a565b5b835b81811015612bae5780612b9a888261284c565b845260208401935050602081019050612b87565b5050509392505050565b600082601f830112612bcd57612bcc612a9e565b5b8135612bdd848260208601612b4f565b91505092915050565b600060208284031215612bfc57612bfb6127f9565b5b600082013567ffffffffffffffff811115612c1a57612c196127fe565b5b612c2684828501612bb8565b91505092915050565b60008060408385031215612c4657612c456127f9565b5b6000612c548582860161284c565b9250506020612c658582860161284c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ca560208361273f565b9150612cb082612c6f565b602082019050919050565b60006020820190508181036000830152612cd481612c98565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612d1160178361273f565b9150612d1c82612cdb565b602082019050919050565b60006020820190508181036000830152612d4081612d04565b9050919050565b600081519050612d5681612835565b92915050565b600060208284031215612d7257612d716127f9565b5b6000612d8084828501612d47565b91505092915050565b6000604082019050612d9e6000830185612a74565b612dab6020830184612a74565b9392505050565b6000819050919050565b6000819050919050565b6000612de1612ddc612dd784612db2565b612dbc565b612861565b9050919050565b612df181612dc6565b82525050565b600060c082019050612e0c6000830189612a74565b612e19602083018861290d565b612e266040830187612de8565b612e336060830186612de8565b612e406080830185612a74565b612e4d60a083018461290d565b979650505050505050565b600081519050612e678161286b565b92915050565b600080600060608486031215612e8657612e856127f9565b5b6000612e9486828701612e58565b9350506020612ea586828701612e58565b9250506040612eb686828701612e58565b9150509250925092565b6000604082019050612ed56000830185612a74565b612ee2602083018461290d565b9392505050565b600081519050612ef8816129ee565b92915050565b600060208284031215612f1457612f136127f9565b5b6000612f2284828501612ee9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f9482612861565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612fc757612fc6612f5a565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061302e60248361273f565b915061303982612fd2565b604082019050919050565b6000602082019050818103600083015261305d81613021565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130c060228361273f565b91506130cb82613064565b604082019050919050565b600060208201905081810360008301526130ef816130b3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061315260258361273f565b915061315d826130f6565b604082019050919050565b6000602082019050818103600083015261318181613145565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131e460238361273f565b91506131ef82613188565b604082019050919050565b60006020820190508181036000830152613213816131d7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061327660298361273f565b91506132818261321a565b604082019050919050565b600060208201905081810360008301526132a581613269565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006132e260198361273f565b91506132ed826132ac565b602082019050919050565b60006020820190508181036000830152613311816132d5565b9050919050565b600061332382612861565b915061332e83612861565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561336357613362612f5a565b5b828201905092915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b60006133a4601a8361273f565b91506133af8261336e565b602082019050919050565b600060208201905081810360008301526133d381613397565b9050919050565b60006133e582612861565b91506133f083612861565b92508282101561340357613402612f5a565b5b828203905092915050565b600061341982612861565b915061342483612861565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561345d5761345c612f5a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134a282612861565b91506134ad83612861565b9250826134bd576134bc613468565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061352460218361273f565b915061352f826134c8565b604082019050919050565b6000602082019050818103600083015261355381613517565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006135b6602a8361273f565b91506135c18261355a565b604082019050919050565b600060208201905081810360008301526135e5816135a9565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61362181612823565b82525050565b60006136338383613618565b60208301905092915050565b6000602082019050919050565b6000613657826135ec565b61366181856135f7565b935061366c83613608565b8060005b8381101561369d5781516136848882613627565b975061368f8361363f565b925050600181019050613670565b5085935050505092915050565b600060a0820190506136bf600083018861290d565b6136cc6020830187612de8565b81810360408301526136de818661364c565b90506136ed6060830185612a74565b6136fa608083018461290d565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061373a601b8361273f565b915061374582613704565b602082019050919050565b600060208201905081810360008301526137698161372d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fe8a1695795213042ed7fbbc3f8dc925b315b1596c623feeb221df5dca194f9a64736f6c63430008080033