608060405273c532a74256d3db42d0bf7a0400fefdbad769400860035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737c00f1e438a6d2e30206cf75ce3b2cf8a1bd4cc760045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507367dfa7bf5bfb9a52a5dc5f71849d5f3cd82c759360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600e556023600f556023601055602360115560236012555f6013555f6014555f601555600160165f6101000a81548160ff021916908315150217905550348015610149575f80fd5b505f339050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600481526020017f46574f47000000000000000000000000000000000000000000000000000000008152506006908161022c9190610d53565b506040518060400160405280600481526020017f46574f4700000000000000000000000000000000000000000000000000000000815250600790816102719190610d53565b50601260085f6101000a81548160ff021916908360ff1602179055505f66017e9d8602b400905060085f9054906101000a900460ff16600a6102b39190610f8a565b816102be9190610fd4565b600a81905550614e20600a546102d49190611042565b601781905550600a5460015f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040516103bf9190611081565b60405180910390a3600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f1960025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610635573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065991906110f8565b90508073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e591906110f8565b6040518363ffffffff1660e01b8152600401610702929190611132565b6020604051808303815f875af115801561071e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074291906110f8565b600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c5f600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610863573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088791906110f8565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f196040518363ffffffff1660e01b81526004016108e3929190611159565b6020604051808303815f875af11580156108ff573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061092391906111b5565b505f60188190555061095b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661096360201b60201c565b5050506112c0565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e79061123a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a55906112a2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610b9457607f821691505b602082108103610ba757610ba6610b50565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610c097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610bce565b610c138683610bce565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610c57610c52610c4d84610c2b565b610c34565b610c2b565b9050919050565b5f819050919050565b610c7083610c3d565b610c84610c7c82610c5e565b848454610bda565b825550505050565b5f90565b610c98610c8c565b610ca3818484610c67565b505050565b5b81811015610cc657610cbb5f82610c90565b600181019050610ca9565b5050565b601f821115610d0b57610cdc81610bad565b610ce584610bbf565b81016020851015610cf4578190505b610d08610d0085610bbf565b830182610ca8565b50505b505050565b5f82821c905092915050565b5f610d2b5f1984600802610d10565b1980831691505092915050565b5f610d438383610d1c565b9150826002028217905092915050565b610d5c82610b19565b67ffffffffffffffff811115610d7557610d74610b23565b5b610d7f8254610b7d565b610d8a828285610cca565b5f60209050601f831160018114610dbb575f8415610da9578287015190505b610db38582610d38565b865550610e1a565b601f198416610dc986610bad565b5f5b82811015610df057848901518255600182019150602085019450602081019050610dcb565b86831015610e0d5784890151610e09601f891682610d1c565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610ea457808604811115610e8057610e7f610e22565b5b6001851615610e8f5780820291505b8081029050610e9d85610e4f565b9450610e64565b94509492505050565b5f82610ebc5760019050610f77565b81610ec9575f9050610f77565b8160018114610edf5760028114610ee957610f18565b6001915050610f77565b60ff841115610efb57610efa610e22565b5b8360020a915084821115610f1257610f11610e22565b5b50610f77565b5060208310610133831016604e8410600b8410161715610f4d5782820a905083811115610f4857610f47610e22565b5b610f77565b610f5a8484846001610e5b565b92509050818404811115610f7157610f70610e22565b5b81810290505b9392505050565b5f60ff82169050919050565b5f610f9482610c2b565b9150610f9f83610f7e565b9250610fcc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610ead565b905092915050565b5f610fde82610c2b565b9150610fe983610c2b565b9250828202610ff781610c2b565b9150828204841483151761100e5761100d610e22565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61104c82610c2b565b915061105783610c2b565b92508261106757611066611015565b5b828204905092915050565b61107b81610c2b565b82525050565b5f6020820190506110945f830184611072565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110c78261109e565b9050919050565b6110d7816110bd565b81146110e1575f80fd5b50565b5f815190506110f2816110ce565b92915050565b5f6020828403121561110d5761110c61109a565b5b5f61111a848285016110e4565b91505092915050565b61112c816110bd565b82525050565b5f6040820190506111455f830185611123565b6111526020830184611123565b9392505050565b5f60408201905061116c5f830185611123565b6111796020830184611072565b9392505050565b5f8115159050919050565b61119481611180565b811461119e575f80fd5b50565b5f815190506111af8161118b565b92915050565b5f602082840312156111ca576111c961109a565b5b5f6111d7848285016111a1565b91505092915050565b5f82825260208201905092915050565b7f796f7520617265206e6f74206f776e65720000000000000000000000000000005f82015250565b5f6112246011836111e0565b915061122f826111f0565b602082019050919050565b5f6020820190508181035f83015261125181611218565b9050919050565b7f6e657720697320300000000000000000000000000000000000000000000000005f82015250565b5f61128c6008836111e0565b915061129782611258565b602082019050919050565b5f6020820190508181035f8301526112b981611280565b9050919050565b613b39806112cd5f395ff3fe6080604052600436106101e6575f3560e01c806365b61b7711610101578063a67755c211610094578063cefab2af11610063578063cefab2af146106ab578063dd62ed3e146106d5578063f2fde38b14610711578063f887ea4014610739576101ed565b8063a67755c214610609578063a9059cbb14610631578063bc2b8fb71461066d578063bc76c05214610695576101ed565b80637cc5b1e6116100d05780637cc5b1e6146105635780638da5cb5b1461058d5780638ff4013f146105b757806395d89b41146105df576101ed565b806365b61b77146104d15780636c580801146104fb57806370a0823114610511578063715018a61461054d576101ed565b806336b2e027116101795780634bf28fd0116101485780634bf28fd01461042d578063553193ca1461045757806358e56b63146104815780636402511e146104a9576101ed565b806336b2e027146103655780633e0cdeb1146103a15780633ecad271146103c95780633f80b6d714610405576101ed565b806323b872dd116101b557806323b872dd146102ab57806327b1a8e9146102e7578063313ce567146103115780633455a9db1461033b576101ed565b806306fdde03146101f1578063095ea7b31461021b57806318160ddd146102575780631b58374914610281576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b50610205610763565b6040516102129190612c26565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190612ce4565b6107f3565b60405161024e9190612d3c565b60405180910390f35b348015610262575f80fd5b5061026b610809565b6040516102789190612d64565b60405180910390f35b34801561028c575f80fd5b50610295610812565b6040516102a29190612d64565b60405180910390f35b3480156102b6575f80fd5b506102d160048036038101906102cc9190612d7d565b610818565b6040516102de9190612d3c565b60405180910390f35b3480156102f2575f80fd5b506102fb6109b0565b6040516103089190612d64565b60405180910390f35b34801561031c575f80fd5b506103256109b6565b6040516103329190612de8565b60405180910390f35b348015610346575f80fd5b5061034f6109cb565b60405161035c9190612e10565b60405180910390f35b348015610370575f80fd5b5061038b60048036038101906103869190612e29565b6109f0565b6040516103989190612d3c565b60405180910390f35b3480156103ac575f80fd5b506103c760048036038101906103c29190612e8f565b610a0d565b005b3480156103d4575f80fd5b506103ef60048036038101906103ea9190612e29565b610b34565b6040516103fc9190612d3c565b60405180910390f35b348015610410575f80fd5b5061042b60048036038101906104269190612eba565b610b51565b005b348015610438575f80fd5b50610441610c08565b60405161044e9190612e10565b60405180910390f35b348015610462575f80fd5b5061046b610c2e565b6040516104789190612d64565b60405180910390f35b34801561048c575f80fd5b506104a760048036038101906104a2919061309b565b610c34565b005b3480156104b4575f80fd5b506104cf60048036038101906104ca91906130f5565b610d4c565b005b3480156104dc575f80fd5b506104e5610de3565b6040516104f2919061317b565b60405180910390f35b348015610506575f80fd5b5061050f610e08565b005b34801561051c575f80fd5b5061053760048036038101906105329190612e29565b610eae565b6040516105449190612d64565b60405180910390f35b348015610558575f80fd5b50610561610ef4565b005b34801561056e575f80fd5b5061057761103b565b60405161058491906131a3565b60405180910390f35b348015610598575f80fd5b506105a1611060565b6040516105ae9190612e10565b60405180910390f35b3480156105c2575f80fd5b506105dd60048036038101906105d891906130f5565b611087565b005b3480156105ea575f80fd5b506105f361111e565b6040516106009190612c26565b60405180910390f35b348015610614575f80fd5b5061062f600480360381019061062a9190612e29565b6111ae565b005b34801561063c575f80fd5b5061065760048036038101906106529190612ce4565b61135e565b6040516106649190612d3c565b60405180910390f35b348015610678575f80fd5b50610693600480360381019061068e9190613215565b611374565b005b3480156106a0575f80fd5b506106a9611780565b005b3480156106b6575f80fd5b506106bf611837565b6040516106cc9190612d3c565b60405180910390f35b3480156106e0575f80fd5b506106fb60048036038101906106f69190613286565b611849565b6040516107089190612d64565b60405180910390f35b34801561071c575f80fd5b5061073760048036038101906107329190612e29565b6118cb565b005b348015610744575f80fd5b5061074d611a81565b60405161075a9190612e10565b60405180910390f35b606060068054610772906132f1565b80601f016020809104026020016040519081016040528092919081815260200182805461079e906132f1565b80156107e95780601f106107c0576101008083540402835291602001916107e9565b820191905f5260205f20905b8154815290600101906020018083116107cc57829003601f168201915b5050505050905090565b5f6107ff338484611aa6565b6001905092915050565b5f600a54905090565b60185481565b5f610824848484611b8d565b5f1960025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054146109a5578160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610928919061334e565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600190509392505050565b600e5481565b5f60085f9054906101000a900460ff16905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6009602052805f5260405f205f915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610ab257503373ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae8906133cb565b60405180910390fd5b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c602052805f5260405f205f915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd590613433565b60405180910390fd5b84601181905550836012819055508260138190555081601481905550806015819055505050505050565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb890613433565b60405180910390fd5b5f5b8251811015610d47578160095f858481518110610ce357610ce2613451565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610cc3565b505050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd090613433565b60405180910390fd5b8060178190555050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8c90613433565b60405180910390fd5b5f60195414610ea4575f610ea6565b435b601981905550565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7890613433565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b90613433565b60405180910390fd5b8060188190555050565b60606007805461112d906132f1565b80601f0160208091040260200160405190810160405280929190818152602001828054611159906132f1565b80156111a45780601f1061117b576101008083540402835291602001916111a4565b820191905f5260205f20905b81548152906001019060200180831161118757829003601f168201915b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461135b578073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112589190612e10565b602060405180830381865afa158015611273573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112979190613492565b6040518363ffffffff1660e01b81526004016112b49291906134dd565b6020604051808303815f875af11580156112d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f49190613518565b5060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611359573d5f803e3d5ffd5b505b50565b5f61136a338484611b8d565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f890613433565b60405180910390fd5b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114909190613557565b90508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f196040518363ffffffff1660e01b81526004016114ef929190613582565b6020604051808303815f875af115801561150b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152f9190613518565b508073ffffffffffffffffffffffffffffffffffffffff166323b872dd86308473ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b81526004016115879190612e10565b602060405180830381865afa1580156115a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c69190613492565b6040518463ffffffff1660e01b81526004016115e4939291906135a9565b6020604051808303815f875af1158015611600573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116249190613518565b505f5b84849050811015611670576116638386868481811061164957611648613451565b5b905060200201602081019061165e9190612e29565b61201e565b8080600101915050611627565b50436019819055505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116b29190612e10565b602060405180830381865afa1580156116cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f19190613492565b90505f811115611778578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87836040518363ffffffff1660e01b8152600401611736929190613582565b6020604051808303815f875af1158015611752573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117769190613518565b505b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180490613433565b60405180910390fd5b60165f9054906101000a900460ff161560165f6101000a81548160ff021916908315150217905550565b60165f9054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194f90613433565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bd90613628565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b809190612d64565b60405180910390a3505050565b5f611b9784610eae565b905081811015611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd390613690565b60405180910390fd5b600d5f9054906101000a900460ff1615611c0257611bfb8484846124a8565b5050612019565b5f600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611c655750600d5f9054906101000a900460ff16155b8015611cb8575060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d0b575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d1a5750601554600e54115b15611d8a575f839050611d2c30610eae565b811115611d745760015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505b601754811115611d8857611d87816125bf565b5b505b60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611e28575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e405750600d5f9054906101000a900460ff16155b1561200a575f60195411611e52575f80fd5b60019050600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ef95750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611f4c575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fcc57600e5f815480929190611f63906136ae565b91905055505f6018541115611fcb5760185483611f7f86610eae565b611f8991906136f5565b1115611fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc190613772565b60405180910390fd5b5b5b60165f9054906101000a900460ff168015611fe657508183145b15612009576305f5e10083611ffb91906137bd565b83612006919061334e565b92505b5b6120168585858461281d565b50505b505050565b6001600d5f6101000a81548160ff0219169083151502179055505f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120c79190613557565b90505f600267ffffffffffffffff8111156120e5576120e4612f35565b5b6040519080825280602002602001820160405280156121135781602001602082028036833780820191505090505b50905081815f8151811061212a57612129613451565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061217957612178613451565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f600267ffffffffffffffff8111156121cf576121ce612f35565b5b6040519080825280602002602001820160405280156121fd5781602001602082028036833780820191505090505b50905030815f8151811061221457612213613451565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828160018151811061226357612262613451565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016122d79190612e10565b602060405180830381865afa1580156122f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123169190613492565b90505f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f88856040518363ffffffff1660e01b81526004016123759291906138a4565b5f60405180830381865afa15801561238f573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906123b79190613992565b6001815181106123ca576123c9613451565b5b602002602001015190508181116123e157806123e3565b815b90505f81036123f657505050505061248b565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795825f878a426040518663ffffffff1660e01b8152600401612458959493929190613a12565b5f604051808303815f87803b15801561246f575f80fd5b505af1158015612481573d5f803e3d5ffd5b5050505050505050505b5f600d5f6101000a81548160ff0219169083151502179055505050565b5f8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546124f5919061334e565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461254891906136f5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125ac9190612d64565b60405180910390a3600190509392505050565b6001600d5f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156125f5576125f4612f35565b5b6040519080825280602002602001820160405280156126235781602001602082028036833780820191505090505b50905030815f8151811061263a57612639613451565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127029190613557565b8160018151811061271657612715613451565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016127d3959493929190613a6a565b5f604051808303815f87803b1580156127ea575f80fd5b505af11580156127fc573d5f803e3d5ffd5b50505050505f600d5f6101000a81548160ff02191690831515021790555050565b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612866919061334e565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8115612aaa575f600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561291c57601454600e541161291157601054612915565b6012545b9050612986565b600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561298557601354600e541161297e57600f54612982565b6011545b90505b5b5f606482866129959190613ac2565b61299f91906137bd565b90505f811115612aa75780836129b591906136f5565b92508060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a0091906136f5565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a9e9190612d64565b60405180910390a35b50505b8083612ab6919061334e565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612afe91906136f5565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386612b9a919061334e565b604051612ba79190612d64565b60405180910390a35050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612bf882612bb6565b612c028185612bc0565b9350612c12818560208601612bd0565b612c1b81612bde565b840191505092915050565b5f6020820190508181035f830152612c3e8184612bee565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c8082612c57565b9050919050565b612c9081612c76565b8114612c9a575f80fd5b50565b5f81359050612cab81612c87565b92915050565b5f819050919050565b612cc381612cb1565b8114612ccd575f80fd5b50565b5f81359050612cde81612cba565b92915050565b5f8060408385031215612cfa57612cf9612c4f565b5b5f612d0785828601612c9d565b9250506020612d1885828601612cd0565b9150509250929050565b5f8115159050919050565b612d3681612d22565b82525050565b5f602082019050612d4f5f830184612d2d565b92915050565b612d5e81612cb1565b82525050565b5f602082019050612d775f830184612d55565b92915050565b5f805f60608486031215612d9457612d93612c4f565b5b5f612da186828701612c9d565b9350506020612db286828701612c9d565b9250506040612dc386828701612cd0565b9150509250925092565b5f60ff82169050919050565b612de281612dcd565b82525050565b5f602082019050612dfb5f830184612dd9565b92915050565b612e0a81612c76565b82525050565b5f602082019050612e235f830184612e01565b92915050565b5f60208284031215612e3e57612e3d612c4f565b5b5f612e4b84828501612c9d565b91505092915050565b5f612e5e82612c57565b9050919050565b612e6e81612e54565b8114612e78575f80fd5b50565b5f81359050612e8981612e65565b92915050565b5f60208284031215612ea457612ea3612c4f565b5b5f612eb184828501612e7b565b91505092915050565b5f805f805f60a08688031215612ed357612ed2612c4f565b5b5f612ee088828901612cd0565b9550506020612ef188828901612cd0565b9450506040612f0288828901612cd0565b9350506060612f1388828901612cd0565b9250506080612f2488828901612cd0565b9150509295509295909350565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f6b82612bde565b810181811067ffffffffffffffff82111715612f8a57612f89612f35565b5b80604052505050565b5f612f9c612c46565b9050612fa88282612f62565b919050565b5f67ffffffffffffffff821115612fc757612fc6612f35565b5b602082029050602081019050919050565b5f80fd5b5f612fee612fe984612fad565b612f93565b9050808382526020820190506020840283018581111561301157613010612fd8565b5b835b8181101561303a57806130268882612c9d565b845260208401935050602081019050613013565b5050509392505050565b5f82601f83011261305857613057612f31565b5b8135613068848260208601612fdc565b91505092915050565b61307a81612d22565b8114613084575f80fd5b50565b5f8135905061309581613071565b92915050565b5f80604083850312156130b1576130b0612c4f565b5b5f83013567ffffffffffffffff8111156130ce576130cd612c53565b5b6130da85828601613044565b92505060206130eb85828601613087565b9150509250929050565b5f6020828403121561310a57613109612c4f565b5b5f61311784828501612cd0565b91505092915050565b5f819050919050565b5f61314361313e61313984612c57565b613120565b612c57565b9050919050565b5f61315482613129565b9050919050565b5f6131658261314a565b9050919050565b6131758161315b565b82525050565b5f60208201905061318e5f83018461316c565b92915050565b61319d81612e54565b82525050565b5f6020820190506131b65f830184613194565b92915050565b5f80fd5b5f8083601f8401126131d5576131d4612f31565b5b8235905067ffffffffffffffff8111156131f2576131f16131bc565b5b60208301915083602082028301111561320e5761320d612fd8565b5b9250929050565b5f805f806060858703121561322d5761322c612c4f565b5b5f61323a87828801612c9d565b945050602085013567ffffffffffffffff81111561325b5761325a612c53565b5b613267878288016131c0565b9350935050604061327a87828801612cd0565b91505092959194509250565b5f806040838503121561329c5761329b612c4f565b5b5f6132a985828601612c9d565b92505060206132ba85828601612c9d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061330857607f821691505b60208210810361331b5761331a6132c4565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61335882612cb1565b915061336383612cb1565b925082820390508181111561337b5761337a613321565b5b92915050565b7f2146756e646572000000000000000000000000000000000000000000000000005f82015250565b5f6133b5600783612bc0565b91506133c082613381565b602082019050919050565b5f6020820190508181035f8301526133e2816133a9565b9050919050565b7f796f7520617265206e6f74206f776e65720000000000000000000000000000005f82015250565b5f61341d601183612bc0565b9150613428826133e9565b602082019050919050565b5f6020820190508181035f83015261344a81613411565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061348c81612cba565b92915050565b5f602082840312156134a7576134a6612c4f565b5b5f6134b48482850161347e565b91505092915050565b5f6134c78261314a565b9050919050565b6134d7816134bd565b82525050565b5f6040820190506134f05f8301856134ce565b6134fd6020830184612d55565b9392505050565b5f8151905061351281613071565b92915050565b5f6020828403121561352d5761352c612c4f565b5b5f61353a84828501613504565b91505092915050565b5f8151905061355181612c87565b92915050565b5f6020828403121561356c5761356b612c4f565b5b5f61357984828501613543565b91505092915050565b5f6040820190506135955f830185612e01565b6135a26020830184612d55565b9392505050565b5f6060820190506135bc5f830186612e01565b6135c96020830185612e01565b6135d66040830184612d55565b949350505050565b7f6e657720697320300000000000000000000000000000000000000000000000005f82015250565b5f613612600883612bc0565b915061361d826135de565b602082019050919050565b5f6020820190508181035f83015261363f81613606565b9050919050565b7f62616c616e63654e6f74456e6f756768000000000000000000000000000000005f82015250565b5f61367a601083612bc0565b915061368582613646565b602082019050919050565b5f6020820190508181035f8301526136a78161366e565b9050919050565b5f6136b882612cb1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136ea576136e9613321565b5b600182019050919050565b5f6136ff82612cb1565b915061370a83612cb1565b925082820190508082111561372257613721613321565b5b92915050565b7f77616c6c65746c696d69740000000000000000000000000000000000000000005f82015250565b5f61375c600b83612bc0565b915061376782613728565b602082019050919050565b5f6020820190508181035f83015261378981613750565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137c782612cb1565b91506137d283612cb1565b9250826137e2576137e1613790565b5b828204905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61381f81612c76565b82525050565b5f6138308383613816565b60208301905092915050565b5f602082019050919050565b5f613852826137ed565b61385c81856137f7565b935061386783613807565b805f5b8381101561389757815161387e8882613825565b97506138898361383c565b92505060018101905061386a565b5085935050505092915050565b5f6040820190506138b75f830185612d55565b81810360208301526138c98184613848565b90509392505050565b5f67ffffffffffffffff8211156138ec576138eb612f35565b5b602082029050602081019050919050565b5f61390f61390a846138d2565b612f93565b9050808382526020820190506020840283018581111561393257613931612fd8565b5b835b8181101561395b5780613947888261347e565b845260208401935050602081019050613934565b5050509392505050565b5f82601f83011261397957613978612f31565b5b81516139898482602086016138fd565b91505092915050565b5f602082840312156139a7576139a6612c4f565b5b5f82015167ffffffffffffffff8111156139c4576139c3612c53565b5b6139d084828501613965565b91505092915050565b5f819050919050565b5f6139fc6139f76139f2846139d9565b613120565b612cb1565b9050919050565b613a0c816139e2565b82525050565b5f60a082019050613a255f830188612d55565b613a326020830187613a03565b8181036040830152613a448186613848565b9050613a536060830185612e01565b613a606080830184612d55565b9695505050505050565b5f60a082019050613a7d5f830188612d55565b613a8a6020830187613a03565b8181036040830152613a9c8186613848565b9050613aab60608301856134ce565b613ab86080830184612d55565b9695505050505050565b5f613acc82612cb1565b9150613ad783612cb1565b9250828202613ae581612cb1565b91508282048414831517613afc57613afb613321565b5b509291505056fea26469706673582212205193594ae2f84230f1997656d451e081b800de1943f8abafe33dafa44b0750f864736f6c634300081a0033