0x6080604052600436106101445760003560e01c80636fc3eaec116100b657806395d89b411161006f57806395d89b411461041c578063a9059cbb14610447578063b87f137a14610484578063c3c8cd80146104ad578063c9567bf9146104c4578063dd62ed3e146104db5761014b565b80636fc3eaec1461034157806370a0823114610358578063715018a61461039557806371908a03146103ac578063751039fc146103da5780638da5cb5b146103f15761014b565b806323b872dd1161010857806323b872dd14610235578063273123b714610272578063313ce5671461029b57806345596e2e146102c65780635932ead1146102ef578063677daa57146103185761014b565b806306fdde0314610150578063095ea7b31461017b57806317e1df5b146101b857806318160ddd146101e157806321bbcbb11461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610518565b6040516101729190612c35565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612cff565b610555565b6040516101af9190612d5a565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612d75565b610573565b005b3480156101ed57600080fd5b506101f661066a565b6040516102039190612deb565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e9190612f4e565b61067a565b005b34801561024157600080fd5b5061025c60048036038101906102579190612f97565b6108dc565b6040516102699190612d5a565b60405180910390f35b34801561027e57600080fd5b5061029960048036038101906102949190612fea565b6109b5565b005b3480156102a757600080fd5b506102b0610aa5565b6040516102bd9190613033565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e8919061304e565b610aae565b005b3480156102fb57600080fd5b50610316600480360381019061031191906130a7565b610b5b565b005b34801561032457600080fd5b5061033f600480360381019061033a919061304e565b610c0d565b005b34801561034d57600080fd5b50610356610ce6565b005b34801561036457600080fd5b5061037f600480360381019061037a9190612fea565b610d8c565b60405161038c9190612deb565b60405180910390f35b3480156103a157600080fd5b506103aa610ddd565b005b3480156103b857600080fd5b506103c1610f30565b6040516103d194939291906130d4565b60405180910390f35b3480156103e657600080fd5b506103ef610f5c565b005b3480156103fd57600080fd5b50610406611011565b6040516104139190613128565b60405180910390f35b34801561042857600080fd5b5061043161103a565b60405161043e9190612c35565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190612cff565b611077565b60405161047b9190612d5a565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a6919061304e565b611095565b005b3480156104b957600080fd5b506104c261116e565b005b3480156104d057600080fd5b506104d961121c565b005b3480156104e757600080fd5b5061050260048036038101906104fd9190613143565b611749565b60405161050f9190612deb565b60405180910390f35b60606040518060400160405280600d81526020017f446163687368756e6420496e7500000000000000000000000000000000000000815250905090565b60006105696105626117d0565b84846117d8565b6001905092915050565b61057b6117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff906131cf565b60405180910390fd5b600e548385610617919061321e565b111561062257600080fd5b600f548183610631919061321e565b111561063c57600080fd5b83600a6000018190555082600a6001018190555081600a6002018190555080600a6003018190555050505050565b600067016345785d8a0000905090565b6106826117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461070f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610706906131cf565b60405180910390fd5b60005b81518110156108d8573073ffffffffffffffffffffffffffffffffffffffff1682828151811061074557610744613274565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156107d95750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106107b8576107b7613274565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b801561084d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061082c5761082b613274565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156108c55760016006600084848151811061086b5761086a613274565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806108d0906132a3565b915050610712565b5050565b60006108e98484846119a1565b6109aa846108f56117d0565b6109a585604051806060016040528060288152602001613af460289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061095b6117d0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120e39092919063ffffffff16565b6117d8565b600190509392505050565b6109bd6117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a41906131cf565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610ab66117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3a906131cf565b60405180910390fd5b6031811115610b5157600080fd5b8060118190555050565b610b636117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be7906131cf565b60405180910390fd5b80601760026101000a81548160ff02191690831515021790555050565b610c156117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c99906131cf565b60405180910390fd5b60008111610caf57600080fd5b610cdd6064610ccf8367016345785d8a000061214790919063ffffffff16565b6121c190919063ffffffff16565b60188190555050565b610cee6117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d72906131cf565b60405180910390fd5b6000479050610d898161220b565b50565b6000610dd6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612277565b9050919050565b610de56117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e69906131cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600a60000154600a60010154600a60020154600a60030154935093509350935090919293565b610f646117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe8906131cf565b60405180910390fd5b67016345785d8a000060188190555067016345785d8a0000601981905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4448554e44000000000000000000000000000000000000000000000000000000815250905090565b600061108b6110846117d0565b84846119a1565b6001905092915050565b61109d6117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611121906131cf565b60405180910390fd5b6000811161113757600080fd5b61116560646111578367016345785d8a000061214790919063ffffffff16565b6121c190919063ffffffff16565b60198190555050565b6111766117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa906131cf565b60405180910390fd5b600061120e30610d8c565b9050611219816122e5565b50565b6112246117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a8906131cf565b60405180910390fd5b601560149054906101000a900460ff1615611301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f890613337565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061139030601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1667016345785d8a00006117d8565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ff919061336c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148a919061336c565b6040518363ffffffff1660e01b81526004016114a7929190613399565b6020604051808303816000875af11580156114c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ea919061336c565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061157330610d8c565b60008061157e611011565b426040518863ffffffff1660e01b81526004016115a096959493929190613407565b60606040518083038185885af11580156115be573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115e3919061347d565b5050506001601760016101000a81548160ff0219169083151502179055506001601760026101000a81548160ff0219169083151502179055506729a2241af62c00006018819055506729a2241af62c00006019819055506001601560146101000a81548160ff0219169083151502179055504360168190555042601381905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016117029291906134d0565b6020604051808303816000875af1158015611721573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611745919061350e565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183e906135ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad9061363f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119949190612deb565b60405180910390a3505050565b600081116119e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119db906136d1565b60405180910390fd5b6001601760036101000a81548160ff021916908315150217905550611a07611011565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a755750611a45611011565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120d357601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b255750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b7b5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b935750601760029054906101000a900460ff165b15611c0057601854811115611ba757600080fd5b60195481611bb484610d8c565b611bbe919061321e565b1115611bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf69061373d565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ca85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d015750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611dcf57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611daa5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611db357600080fd5b6000601760036101000a81548160ff0219169083151502179055505b6001601654611dde919061321e565b4311158015611e3b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e875750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ee5576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000611ef030610d8c565b9050611f446064611f36601154611f28601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d8c565b61214790919063ffffffff16565b6121c190919063ffffffff16565b811115611fa057611f9d6064611f8f601154611f81601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d8c565b61214790919063ffffffff16565b6121c190919063ffffffff16565b90505b601760009054906101000a900460ff1615801561200b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156120235750601760019054906101000a900460ff165b1561204b57612031816122e5565b60004790506000811115612049576120484761220b565b5b505b6001600a6001015411801561206557506001600a60030154115b8015612080575060125460135461207c919061321e565b4210155b156120d15761209e6001600a6001015461256a90919063ffffffff16565b600a600101819055506120c06001600a6003015461256a90919063ffffffff16565b600a60030181905550426013819055505b505b6120de8383836125b4565b505050565b600083831115829061212b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121229190612c35565b60405180910390fd5b506000838561213a919061375d565b9050809150509392505050565b600080830361215957600090506121bb565b600082846121679190613791565b9050828482612176919061381a565b146121b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ad906138bd565b60405180910390fd5b809150505b92915050565b600061220383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125c4565b905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612273573d6000803e3d6000fd5b5050565b60006008548211156122be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b59061394f565b60405180910390fd5b60006122c8612627565b90506122dd81846121c190919063ffffffff16565b915050919050565b6001601760006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561231d5761231c612e0b565b5b60405190808252806020026020018201604052801561234b5781602001602082028036833780820191505090505b509050308160008151811061236357612362613274565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242e919061336c565b8160018151811061244257612441613274565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124a930601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117d8565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430603c426124f9919061321e565b6040518663ffffffff1660e01b8152600401612519959493929190613a2d565b600060405180830381600087803b15801561253357600080fd5b505af1158015612547573d6000803e3d6000fd5b50505050506000601760006101000a81548160ff02191690831515021790555050565b60006125ac83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120e3565b905092915050565b6125bf838383612652565b505050565b6000808311829061260b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126029190612c35565b60405180910390fd5b506000838561261a919061381a565b9050809150509392505050565b600080600061263461281d565b9150915061264b81836121c190919063ffffffff16565b9250505090565b6000806000806000806126648761287c565b9550955095509550955095506126c286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061275785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127a38161296f565b6127ad8483612a2c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161280a9190612deb565b60405180910390a3505050505050505050565b60008060006008549050600067016345785d8a0000905061285167016345785d8a00006008546121c190919063ffffffff16565b82101561286f5760085467016345785d8a0000935093505050612878565b81819350935050505b9091565b6000806000806000806000806000612892612a66565b6128b0576128ab8a600a60020154600a60030154612a7d565b6128c6565b6128c58a600a60000154600a60010154612a7d565b5b92509250925060006128d6612627565b905060008060006128e98e878787612b13565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000808284612920919061321e565b905083811015612965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295c90613ad3565b60405180910390fd5b8091505092915050565b6000612979612627565b90506000612990828461214790919063ffffffff16565b90506129e481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a418260085461256a90919063ffffffff16565b600881905550612a5c8160095461291190919063ffffffff16565b6009819055505050565b6000601760039054906101000a900460ff16905090565b600080600080612aa96064612a9b888a61214790919063ffffffff16565b6121c190919063ffffffff16565b90506000612ad36064612ac5888b61214790919063ffffffff16565b6121c190919063ffffffff16565b90506000612afc82612aee858c61256a90919063ffffffff16565b61256a90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b2c858961214790919063ffffffff16565b90506000612b43868961214790919063ffffffff16565b90506000612b5a878961214790919063ffffffff16565b90506000612b8382612b75858761256a90919063ffffffff16565b61256a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bd6578082015181840152602081019050612bbb565b83811115612be5576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c0782612b9c565b612c118185612ba7565b9350612c21818560208601612bb8565b612c2a81612beb565b840191505092915050565b60006020820190508181036000830152612c4f8184612bfc565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c9682612c6b565b9050919050565b612ca681612c8b565b8114612cb157600080fd5b50565b600081359050612cc381612c9d565b92915050565b6000819050919050565b612cdc81612cc9565b8114612ce757600080fd5b50565b600081359050612cf981612cd3565b92915050565b60008060408385031215612d1657612d15612c61565b5b6000612d2485828601612cb4565b9250506020612d3585828601612cea565b9150509250929050565b60008115159050919050565b612d5481612d3f565b82525050565b6000602082019050612d6f6000830184612d4b565b92915050565b60008060008060808587031215612d8f57612d8e612c61565b5b6000612d9d87828801612cea565b9450506020612dae87828801612cea565b9350506040612dbf87828801612cea565b9250506060612dd087828801612cea565b91505092959194509250565b612de581612cc9565b82525050565b6000602082019050612e006000830184612ddc565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e4382612beb565b810181811067ffffffffffffffff82111715612e6257612e61612e0b565b5b80604052505050565b6000612e75612c57565b9050612e818282612e3a565b919050565b600067ffffffffffffffff821115612ea157612ea0612e0b565b5b602082029050602081019050919050565b600080fd5b6000612eca612ec584612e86565b612e6b565b90508083825260208201905060208402830185811115612eed57612eec612eb2565b5b835b81811015612f165780612f028882612cb4565b845260208401935050602081019050612eef565b5050509392505050565b600082601f830112612f3557612f34612e06565b5b8135612f45848260208601612eb7565b91505092915050565b600060208284031215612f6457612f63612c61565b5b600082013567ffffffffffffffff811115612f8257612f81612c66565b5b612f8e84828501612f20565b91505092915050565b600080600060608486031215612fb057612faf612c61565b5b6000612fbe86828701612cb4565b9350506020612fcf86828701612cb4565b9250506040612fe086828701612cea565b9150509250925092565b60006020828403121561300057612fff612c61565b5b600061300e84828501612cb4565b91505092915050565b600060ff82169050919050565b61302d81613017565b82525050565b60006020820190506130486000830184613024565b92915050565b60006020828403121561306457613063612c61565b5b600061307284828501612cea565b91505092915050565b61308481612d3f565b811461308f57600080fd5b50565b6000813590506130a18161307b565b92915050565b6000602082840312156130bd576130bc612c61565b5b60006130cb84828501613092565b91505092915050565b60006080820190506130e96000830187612ddc565b6130f66020830186612ddc565b6131036040830185612ddc565b6131106060830184612ddc565b95945050505050565b61312281612c8b565b82525050565b600060208201905061313d6000830184613119565b92915050565b6000806040838503121561315a57613159612c61565b5b600061316885828601612cb4565b925050602061317985828601612cb4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131b9602083612ba7565b91506131c482613183565b602082019050919050565b600060208201905081810360008301526131e8816131ac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061322982612cc9565b915061323483612cc9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613269576132686131ef565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006132ae82612cc9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132e0576132df6131ef565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613321601783612ba7565b915061332c826132eb565b602082019050919050565b6000602082019050818103600083015261335081613314565b9050919050565b60008151905061336681612c9d565b92915050565b60006020828403121561338257613381612c61565b5b600061339084828501613357565b91505092915050565b60006040820190506133ae6000830185613119565b6133bb6020830184613119565b9392505050565b6000819050919050565b6000819050919050565b60006133f16133ec6133e7846133c2565b6133cc565b612cc9565b9050919050565b613401816133d6565b82525050565b600060c08201905061341c6000830189613119565b6134296020830188612ddc565b61343660408301876133f8565b61344360608301866133f8565b6134506080830185613119565b61345d60a0830184612ddc565b979650505050505050565b60008151905061347781612cd3565b92915050565b60008060006060848603121561349657613495612c61565b5b60006134a486828701613468565b93505060206134b586828701613468565b92505060406134c686828701613468565b9150509250925092565b60006040820190506134e56000830185613119565b6134f26020830184612ddc565b9392505050565b6000815190506135088161307b565b92915050565b60006020828403121561352457613523612c61565b5b6000613532848285016134f9565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613597602483612ba7565b91506135a28261353b565b604082019050919050565b600060208201905081810360008301526135c68161358a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613629602283612ba7565b9150613634826135cd565b604082019050919050565b600060208201905081810360008301526136588161361c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136bb602983612ba7565b91506136c68261365f565b604082019050919050565b600060208201905081810360008301526136ea816136ae565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613727601a83612ba7565b9150613732826136f1565b602082019050919050565b600060208201905081810360008301526137568161371a565b9050919050565b600061376882612cc9565b915061377383612cc9565b925082821015613786576137856131ef565b5b828203905092915050565b600061379c82612cc9565b91506137a783612cc9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156137e0576137df6131ef565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061382582612cc9565b915061383083612cc9565b9250826138405761383f6137eb565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006138a7602183612ba7565b91506138b28261384b565b604082019050919050565b600060208201905081810360008301526138d68161389a565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613939602a83612ba7565b9150613944826138dd565b604082019050919050565b600060208201905081810360008301526139688161392c565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139a481612c8b565b82525050565b60006139b6838361399b565b60208301905092915050565b6000602082019050919050565b60006139da8261396f565b6139e4818561397a565b93506139ef8361398b565b8060005b83811015613a20578151613a0788826139aa565b9750613a12836139c2565b9250506001810190506139f3565b5085935050505092915050565b600060a082019050613a426000830188612ddc565b613a4f60208301876133f8565b8181036040830152613a6181866139cf565b9050613a706060830185613119565b613a7d6080830184612ddc565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613abd601b83612ba7565b9150613ac882613a87565b602082019050919050565b60006020820190508181036000830152613aec81613ab0565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204ab1edb519992ab54dc593dac3aaffa8131d8c5029639f4766f13818e475fdfd64736f6c634300080f0033
0x608060405267016345785d8a00006000196200001c9190620004d4565b6000196200002b91906200053b565b60085560405180608001604052806000815260200160098152602001600081526020016009815250600a600082015181600001556020820151816001015560408201518160020155606082015181600301555050600a60010154600a6000015462000097919062000576565b600e55600a60030154600a60020154620000b2919062000576565b600f5560146011556107086012556000601760006101000a81548160ff0219169083151502179055506000601760016101000a81548160ff0219169083151502179055506000601760026101000a81548160ff0219169083151502179055506000601760036101000a81548160ff02191690831515021790555067016345785d8a000060185567016345785d8a00006019553480156200015157600080fd5b506000620001646200046a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3507310f83fb22008ea46e707d219e8b0946f234fd38e601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600854600260006200026e6200046a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002c26200047260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003f56200046a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516200045c9190620005e4565b60405180910390a362000601565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620004e1826200049b565b9150620004ee836200049b565b925082620005015762000500620004a5565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000548826200049b565b915062000555836200049b565b9250828210156200056b576200056a6200050c565b5b828203905092915050565b600062000583826200049b565b915062000590836200049b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005c857620005c76200050c565b5b828201905092915050565b620005de816200049b565b82525050565b6000602082019050620005fb6000830184620005d3565b92915050565b613b5180620006116000396000f3fe6080604052600436106101445760003560e01c80636fc3eaec116100b657806395d89b411161006f57806395d89b411461041c578063a9059cbb14610447578063b87f137a14610484578063c3c8cd80146104ad578063c9567bf9146104c4578063dd62ed3e146104db5761014b565b80636fc3eaec1461034157806370a0823114610358578063715018a61461039557806371908a03146103ac578063751039fc146103da5780638da5cb5b146103f15761014b565b806323b872dd1161010857806323b872dd14610235578063273123b714610272578063313ce5671461029b57806345596e2e146102c65780635932ead1146102ef578063677daa57146103185761014b565b806306fdde0314610150578063095ea7b31461017b57806317e1df5b146101b857806318160ddd146101e157806321bbcbb11461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610518565b6040516101729190612c35565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612cff565b610555565b6040516101af9190612d5a565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612d75565b610573565b005b3480156101ed57600080fd5b506101f661066a565b6040516102039190612deb565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e9190612f4e565b61067a565b005b34801561024157600080fd5b5061025c60048036038101906102579190612f97565b6108dc565b6040516102699190612d5a565b60405180910390f35b34801561027e57600080fd5b5061029960048036038101906102949190612fea565b6109b5565b005b3480156102a757600080fd5b506102b0610aa5565b6040516102bd9190613033565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e8919061304e565b610aae565b005b3480156102fb57600080fd5b50610316600480360381019061031191906130a7565b610b5b565b005b34801561032457600080fd5b5061033f600480360381019061033a919061304e565b610c0d565b005b34801561034d57600080fd5b50610356610ce6565b005b34801561036457600080fd5b5061037f600480360381019061037a9190612fea565b610d8c565b60405161038c9190612deb565b60405180910390f35b3480156103a157600080fd5b506103aa610ddd565b005b3480156103b857600080fd5b506103c1610f30565b6040516103d194939291906130d4565b60405180910390f35b3480156103e657600080fd5b506103ef610f5c565b005b3480156103fd57600080fd5b50610406611011565b6040516104139190613128565b60405180910390f35b34801561042857600080fd5b5061043161103a565b60405161043e9190612c35565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190612cff565b611077565b60405161047b9190612d5a565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a6919061304e565b611095565b005b3480156104b957600080fd5b506104c261116e565b005b3480156104d057600080fd5b506104d961121c565b005b3480156104e757600080fd5b5061050260048036038101906104fd9190613143565b611749565b60405161050f9190612deb565b60405180910390f35b60606040518060400160405280600d81526020017f446163687368756e6420496e7500000000000000000000000000000000000000815250905090565b60006105696105626117d0565b84846117d8565b6001905092915050565b61057b6117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff906131cf565b60405180910390fd5b600e548385610617919061321e565b111561062257600080fd5b600f548183610631919061321e565b111561063c57600080fd5b83600a6000018190555082600a6001018190555081600a6002018190555080600a6003018190555050505050565b600067016345785d8a0000905090565b6106826117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461070f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610706906131cf565b60405180910390fd5b60005b81518110156108d8573073ffffffffffffffffffffffffffffffffffffffff1682828151811061074557610744613274565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156107d95750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106107b8576107b7613274565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b801561084d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061082c5761082b613274565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156108c55760016006600084848151811061086b5761086a613274565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806108d0906132a3565b915050610712565b5050565b60006108e98484846119a1565b6109aa846108f56117d0565b6109a585604051806060016040528060288152602001613af460289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061095b6117d0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120e39092919063ffffffff16565b6117d8565b600190509392505050565b6109bd6117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a41906131cf565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610ab66117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3a906131cf565b60405180910390fd5b6031811115610b5157600080fd5b8060118190555050565b610b636117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be7906131cf565b60405180910390fd5b80601760026101000a81548160ff02191690831515021790555050565b610c156117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c99906131cf565b60405180910390fd5b60008111610caf57600080fd5b610cdd6064610ccf8367016345785d8a000061214790919063ffffffff16565b6121c190919063ffffffff16565b60188190555050565b610cee6117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d72906131cf565b60405180910390fd5b6000479050610d898161220b565b50565b6000610dd6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612277565b9050919050565b610de56117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e69906131cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600a60000154600a60010154600a60020154600a60030154935093509350935090919293565b610f646117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe8906131cf565b60405180910390fd5b67016345785d8a000060188190555067016345785d8a0000601981905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4448554e44000000000000000000000000000000000000000000000000000000815250905090565b600061108b6110846117d0565b84846119a1565b6001905092915050565b61109d6117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611121906131cf565b60405180910390fd5b6000811161113757600080fd5b61116560646111578367016345785d8a000061214790919063ffffffff16565b6121c190919063ffffffff16565b60198190555050565b6111766117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa906131cf565b60405180910390fd5b600061120e30610d8c565b9050611219816122e5565b50565b6112246117d0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a8906131cf565b60405180910390fd5b601560149054906101000a900460ff1615611301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f890613337565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061139030601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1667016345785d8a00006117d8565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ff919061336c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148a919061336c565b6040518363ffffffff1660e01b81526004016114a7929190613399565b6020604051808303816000875af11580156114c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ea919061336c565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061157330610d8c565b60008061157e611011565b426040518863ffffffff1660e01b81526004016115a096959493929190613407565b60606040518083038185885af11580156115be573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115e3919061347d565b5050506001601760016101000a81548160ff0219169083151502179055506001601760026101000a81548160ff0219169083151502179055506729a2241af62c00006018819055506729a2241af62c00006019819055506001601560146101000a81548160ff0219169083151502179055504360168190555042601381905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016117029291906134d0565b6020604051808303816000875af1158015611721573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611745919061350e565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183e906135ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad9061363f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119949190612deb565b60405180910390a3505050565b600081116119e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119db906136d1565b60405180910390fd5b6001601760036101000a81548160ff021916908315150217905550611a07611011565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a755750611a45611011565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120d357601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b255750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b7b5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b935750601760029054906101000a900460ff165b15611c0057601854811115611ba757600080fd5b60195481611bb484610d8c565b611bbe919061321e565b1115611bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf69061373d565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ca85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d015750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611dcf57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611daa5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611db357600080fd5b6000601760036101000a81548160ff0219169083151502179055505b6001601654611dde919061321e565b4311158015611e3b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e875750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ee5576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000611ef030610d8c565b9050611f446064611f36601154611f28601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d8c565b61214790919063ffffffff16565b6121c190919063ffffffff16565b811115611fa057611f9d6064611f8f601154611f81601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d8c565b61214790919063ffffffff16565b6121c190919063ffffffff16565b90505b601760009054906101000a900460ff1615801561200b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156120235750601760019054906101000a900460ff165b1561204b57612031816122e5565b60004790506000811115612049576120484761220b565b5b505b6001600a6001015411801561206557506001600a60030154115b8015612080575060125460135461207c919061321e565b4210155b156120d15761209e6001600a6001015461256a90919063ffffffff16565b600a600101819055506120c06001600a6003015461256a90919063ffffffff16565b600a60030181905550426013819055505b505b6120de8383836125b4565b505050565b600083831115829061212b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121229190612c35565b60405180910390fd5b506000838561213a919061375d565b9050809150509392505050565b600080830361215957600090506121bb565b600082846121679190613791565b9050828482612176919061381a565b146121b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ad906138bd565b60405180910390fd5b809150505b92915050565b600061220383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125c4565b905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612273573d6000803e3d6000fd5b5050565b60006008548211156122be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b59061394f565b60405180910390fd5b60006122c8612627565b90506122dd81846121c190919063ffffffff16565b915050919050565b6001601760006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561231d5761231c612e0b565b5b60405190808252806020026020018201604052801561234b5781602001602082028036833780820191505090505b509050308160008151811061236357612362613274565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242e919061336c565b8160018151811061244257612441613274565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124a930601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117d8565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430603c426124f9919061321e565b6040518663ffffffff1660e01b8152600401612519959493929190613a2d565b600060405180830381600087803b15801561253357600080fd5b505af1158015612547573d6000803e3d6000fd5b50505050506000601760006101000a81548160ff02191690831515021790555050565b60006125ac83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120e3565b905092915050565b6125bf838383612652565b505050565b6000808311829061260b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126029190612c35565b60405180910390fd5b506000838561261a919061381a565b9050809150509392505050565b600080600061263461281d565b9150915061264b81836121c190919063ffffffff16565b9250505090565b6000806000806000806126648761287c565b9550955095509550955095506126c286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061275785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127a38161296f565b6127ad8483612a2c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161280a9190612deb565b60405180910390a3505050505050505050565b60008060006008549050600067016345785d8a0000905061285167016345785d8a00006008546121c190919063ffffffff16565b82101561286f5760085467016345785d8a0000935093505050612878565b81819350935050505b9091565b6000806000806000806000806000612892612a66565b6128b0576128ab8a600a60020154600a60030154612a7d565b6128c6565b6128c58a600a60000154600a60010154612a7d565b5b92509250925060006128d6612627565b905060008060006128e98e878787612b13565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000808284612920919061321e565b905083811015612965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295c90613ad3565b60405180910390fd5b8091505092915050565b6000612979612627565b90506000612990828461214790919063ffffffff16565b90506129e481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a418260085461256a90919063ffffffff16565b600881905550612a5c8160095461291190919063ffffffff16565b6009819055505050565b6000601760039054906101000a900460ff16905090565b600080600080612aa96064612a9b888a61214790919063ffffffff16565b6121c190919063ffffffff16565b90506000612ad36064612ac5888b61214790919063ffffffff16565b6121c190919063ffffffff16565b90506000612afc82612aee858c61256a90919063ffffffff16565b61256a90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b2c858961214790919063ffffffff16565b90506000612b43868961214790919063ffffffff16565b90506000612b5a878961214790919063ffffffff16565b90506000612b8382612b75858761256a90919063ffffffff16565b61256a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bd6578082015181840152602081019050612bbb565b83811115612be5576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c0782612b9c565b612c118185612ba7565b9350612c21818560208601612bb8565b612c2a81612beb565b840191505092915050565b60006020820190508181036000830152612c4f8184612bfc565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c9682612c6b565b9050919050565b612ca681612c8b565b8114612cb157600080fd5b50565b600081359050612cc381612c9d565b92915050565b6000819050919050565b612cdc81612cc9565b8114612ce757600080fd5b50565b600081359050612cf981612cd3565b92915050565b60008060408385031215612d1657612d15612c61565b5b6000612d2485828601612cb4565b9250506020612d3585828601612cea565b9150509250929050565b60008115159050919050565b612d5481612d3f565b82525050565b6000602082019050612d6f6000830184612d4b565b92915050565b60008060008060808587031215612d8f57612d8e612c61565b5b6000612d9d87828801612cea565b9450506020612dae87828801612cea565b9350506040612dbf87828801612cea565b9250506060612dd087828801612cea565b91505092959194509250565b612de581612cc9565b82525050565b6000602082019050612e006000830184612ddc565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e4382612beb565b810181811067ffffffffffffffff82111715612e6257612e61612e0b565b5b80604052505050565b6000612e75612c57565b9050612e818282612e3a565b919050565b600067ffffffffffffffff821115612ea157612ea0612e0b565b5b602082029050602081019050919050565b600080fd5b6000612eca612ec584612e86565b612e6b565b90508083825260208201905060208402830185811115612eed57612eec612eb2565b5b835b81811015612f165780612f028882612cb4565b845260208401935050602081019050612eef565b5050509392505050565b600082601f830112612f3557612f34612e06565b5b8135612f45848260208601612eb7565b91505092915050565b600060208284031215612f6457612f63612c61565b5b600082013567ffffffffffffffff811115612f8257612f81612c66565b5b612f8e84828501612f20565b91505092915050565b600080600060608486031215612fb057612faf612c61565b5b6000612fbe86828701612cb4565b9350506020612fcf86828701612cb4565b9250506040612fe086828701612cea565b9150509250925092565b60006020828403121561300057612fff612c61565b5b600061300e84828501612cb4565b91505092915050565b600060ff82169050919050565b61302d81613017565b82525050565b60006020820190506130486000830184613024565b92915050565b60006020828403121561306457613063612c61565b5b600061307284828501612cea565b91505092915050565b61308481612d3f565b811461308f57600080fd5b50565b6000813590506130a18161307b565b92915050565b6000602082840312156130bd576130bc612c61565b5b60006130cb84828501613092565b91505092915050565b60006080820190506130e96000830187612ddc565b6130f66020830186612ddc565b6131036040830185612ddc565b6131106060830184612ddc565b95945050505050565b61312281612c8b565b82525050565b600060208201905061313d6000830184613119565b92915050565b6000806040838503121561315a57613159612c61565b5b600061316885828601612cb4565b925050602061317985828601612cb4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131b9602083612ba7565b91506131c482613183565b602082019050919050565b600060208201905081810360008301526131e8816131ac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061322982612cc9565b915061323483612cc9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613269576132686131ef565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006132ae82612cc9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132e0576132df6131ef565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613321601783612ba7565b915061332c826132eb565b602082019050919050565b6000602082019050818103600083015261335081613314565b9050919050565b60008151905061336681612c9d565b92915050565b60006020828403121561338257613381612c61565b5b600061339084828501613357565b91505092915050565b60006040820190506133ae6000830185613119565b6133bb6020830184613119565b9392505050565b6000819050919050565b6000819050919050565b60006133f16133ec6133e7846133c2565b6133cc565b612cc9565b9050919050565b613401816133d6565b82525050565b600060c08201905061341c6000830189613119565b6134296020830188612ddc565b61343660408301876133f8565b61344360608301866133f8565b6134506080830185613119565b61345d60a0830184612ddc565b979650505050505050565b60008151905061347781612cd3565b92915050565b60008060006060848603121561349657613495612c61565b5b60006134a486828701613468565b93505060206134b586828701613468565b92505060406134c686828701613468565b9150509250925092565b60006040820190506134e56000830185613119565b6134f26020830184612ddc565b9392505050565b6000815190506135088161307b565b92915050565b60006020828403121561352457613523612c61565b5b6000613532848285016134f9565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613597602483612ba7565b91506135a28261353b565b604082019050919050565b600060208201905081810360008301526135c68161358a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613629602283612ba7565b9150613634826135cd565b604082019050919050565b600060208201905081810360008301526136588161361c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136bb602983612ba7565b91506136c68261365f565b604082019050919050565b600060208201905081810360008301526136ea816136ae565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613727601a83612ba7565b9150613732826136f1565b602082019050919050565b600060208201905081810360008301526137568161371a565b9050919050565b600061376882612cc9565b915061377383612cc9565b925082821015613786576137856131ef565b5b828203905092915050565b600061379c82612cc9565b91506137a783612cc9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156137e0576137df6131ef565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061382582612cc9565b915061383083612cc9565b9250826138405761383f6137eb565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006138a7602183612ba7565b91506138b28261384b565b604082019050919050565b600060208201905081810360008301526138d68161389a565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613939602a83612ba7565b9150613944826138dd565b604082019050919050565b600060208201905081810360008301526139688161392c565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139a481612c8b565b82525050565b60006139b6838361399b565b60208301905092915050565b6000602082019050919050565b60006139da8261396f565b6139e4818561397a565b93506139ef8361398b565b8060005b83811015613a20578151613a0788826139aa565b9750613a12836139c2565b9250506001810190506139f3565b5085935050505092915050565b600060a082019050613a426000830188612ddc565b613a4f60208301876133f8565b8181036040830152613a6181866139cf565b9050613a706060830185613119565b613a7d6080830184612ddc565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613abd601b83612ba7565b9150613ac882613a87565b602082019050919050565b60006020820190508181036000830152613aec81613ab0565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204ab1edb519992ab54dc593dac3aaffa8131d8c5029639f4766f13818e475fdfd64736f6c634300080f0033