[ { "inputs": [ { "internalType": "uint256", "name": "_operatorFeePercentage", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "articleId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "name", "type": "string" }, { "indexed": false, "internalType": "address", "name": "business", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "ArticleCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "articleId", "type": "uint256" } ], "name": "ArticleDeleted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "articleId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "name", "type": "string" }, { "indexed": false, "internalType": "address", "name": "business", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "ArticleUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "bookingId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "customer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "totalAmount", "type": "uint256" } ], "name": "BookingCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "bookingId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "BookingPaid", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "_bookingId", "type": "uint256" } ], "name": "completePayment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "address", "name": "_business", "type": "address" }, { "internalType": "uint256", "name": "_price", "type": "uint256" } ], "name": "createArticle", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_articleIds", "type": "uint256[]" }, { "internalType": "address", "name": "_customer", "type": "address" } ], "name": "createBooking", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_articleId", "type": "uint256" } ], "name": "deleteArticle", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_bookingId", "type": "uint256" } ], "name": "payBooking", "outputs": [], "stateMutability": "payable", "type": "function" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "bookingId", "type": "uint256" } ], "name": "PaymentCompleted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "bookingId", "type": "uint256" } ], "name": "PaymentRefunded", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "_bookingId", "type": "uint256" } ], "name": "refundPayment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_articleId", "type": "uint256" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "address", "name": "_business", "type": "address" }, { "internalType": "uint256", "name": "_price", "type": "uint256" } ], "name": "updateArticle", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "articleCounter", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "articles", "outputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "address", "name": "business", "type": "address" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "bool", "name": "isActive", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "bookingArticles", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "bookingCounter", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "bookings", "outputs": [ { "internalType": "uint256", "name": "totalAmount", "type": "uint256" }, { "internalType": "uint256", "name": "operatorFee", "type": "uint256" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "address", "name": "customer", "type": "address" }, { "internalType": "address", "name": "payer", "type": "address" }, { "internalType": "bool", "name": "isPaid", "type": "bool" }, { "internalType": "bool", "name": "isCompleted", "type": "bool" }, { "internalType": "bool", "name": "isRefunded", "type": "bool" }, { "internalType": "uint256", "name": "articleCount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_articleIds", "type": "uint256[]" } ], "name": "calculateTotalAmount", "outputs": [ { "internalType": "uint256", "name": "totalAmount", "type": "uint256" }, { "internalType": "uint256", "name": "operatorFee", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DISPUTE_PERIOD", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAllArticles", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "string[]", "name": "", "type": "string[]" }, { "internalType": "address[]", "name": "", "type": "address[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "bool[]", "name": "", "type": "bool[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAllBookings", "outputs": [ { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "timestamps", "type": "uint256[]" }, { "internalType": "address[]", "name": "customers", "type": "address[]" }, { "internalType": "address[]", "name": "payers", "type": "address[]" }, { "internalType": "bool[]", "name": "paidStatus", "type": "bool[]" }, { "internalType": "bool[]", "name": "completedStatus", "type": "bool[]" }, { "internalType": "bool[]", "name": "refundedStatus", "type": "bool[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_articleId", "type": "uint256" } ], "name": "getArticle", "outputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "address", "name": "business", "type": "address" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "bool", "name": "isActive", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_bookingId", "type": "uint256" } ], "name": "getBookingArticles", "outputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "address", "name": "business", "type": "address" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "bool", "name": "isActive", "type": "bool" } ], "internalType": "struct TourismPayments.ArticleInfo[]", "name": "articleInfos", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "operator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "operatorFeePercentage", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ] 60806040523480156200001157600080fd5b50604051620037e0380380620037e083398181016040528101906200003791906200009c565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060018190555050620000ec565b6000815190506200009681620000d2565b92915050565b600060208284031215620000af57600080fd5b6000620000bf8482850162000085565b91505092915050565b6000819050919050565b620000dd81620000c8565b8114620000e957600080fd5b50565b6136e480620000fc6000396000f3fe60806040526004361061011f5760003560e01c806385892266116100a0578063b44d310b11610064578063b44d310b14610410578063bd85d8671461043f578063d287ac421461047f578063edcfafe6146104aa578063f63813f4146104ea5761011f565b80638589226614610338578063a5bbe22b14610354578063aa42539a1461037f578063ab3ac785146103bc578063b2df2398146103e55761011f565b80634f01c6f2116100e75780634f01c6f21461022c578063570ca735146102555780635ea3ab85146102805780637aa80af2146102be578063842be18b146102fb5761011f565b80630953ae17146101245780631dab301e1461014f5780633774a0cb146101945780634245f2fe146101d1578063498de8b314610203575b600080fd5b34801561013057600080fd5b50610139610513565b60405161014691906130f1565b60405180910390f35b34801561015b57600080fd5b506101766004803603810190610171919061277b565b610519565b60405161018b99989796959493929190613135565b60405180910390f35b3480156101a057600080fd5b506101bb60048036038101906101b69190612714565b6105ce565b6040516101c891906130f1565b60405180910390f35b3480156101dd57600080fd5b506101e661072f565b6040516101fa989796959493929190612eb1565b60405180910390f35b34801561020f57600080fd5b5061022a6004803603810190610225919061277b565b610e37565b005b34801561023857600080fd5b50610253600480360381019061024e919061277b565b610ef9565b005b34801561026157600080fd5b5061026a61115b565b6040516102779190612dfe565b60405180910390f35b34801561028c57600080fd5b506102a760048036038101906102a2919061267f565b61117f565b6040516102b592919061310c565b60405180910390f35b3480156102ca57600080fd5b506102e560048036038101906102e091906126c0565b6112d9565b6040516102f291906130f1565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d919061281f565b611641565b60405161032f91906130f1565b60405180910390f35b610352600480360381019061034d919061277b565b611666565b005b34801561036057600080fd5b506103696117ba565b60405161037691906130f1565b60405180910390f35b34801561038b57600080fd5b506103a660048036038101906103a1919061277b565b6117c1565b6040516103b39190612e19565b60405180910390f35b3480156103c857600080fd5b506103e360048036038101906103de91906127a4565b611a07565b005b3480156103f157600080fd5b506103fa611b29565b60405161040791906130f1565b60405180910390f35b34801561041c57600080fd5b50610425611b2f565b604051610436959493929190612e3b565b60405180910390f35b34801561044b57600080fd5b506104666004803603810190610461919061277b565b61202f565b6040516104769493929190612fa5565b60405180910390f35b34801561048b57600080fd5b50610494612128565b6040516104a191906130f1565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc919061277b565b61212e565b6040516104e19493929190612fa5565b60405180910390f35b3480156104f657600080fd5b50610511600480360381019061050c919061277b565b612213565b005b60035481565b60046020528060005260406000206000915090508060000154908060010154908060020154908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040160149054906101000a900460ff16908060040160159054906101000a900460ff16908060040160169054906101000a900460ff16908060050154905089565b600080600360008154809291906105e49061356a565b91905055905060405180608001604052808681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020016103e8670de0b6b3a76400008661062e9190613420565b61063891906133ef565b815260200160011515815250600660008381526020019081526020016000206000820151816000019080519060200190610673929190612474565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015560608201518160030160006101000a81548160ff021916908315150217905550905050807f7d947412b2e027bd98da1e8b47e87b80aa0e8a6f0549b5eda4ca32310012253886868660405161071c93929190612f67565b60405180910390a2809150509392505050565b60608060608060608060608060025467ffffffffffffffff81111561077d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156107ab5781602001602082028036833780820191505090505b50975060025467ffffffffffffffff8111156107f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561081e5781602001602082028036833780820191505090505b50965060025467ffffffffffffffff811115610863577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156108915781602001602082028036833780820191505090505b50955060025467ffffffffffffffff8111156108d6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156109045781602001602082028036833780820191505090505b50945060025467ffffffffffffffff811115610949577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156109775781602001602082028036833780820191505090505b50935060025467ffffffffffffffff8111156109bc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156109ea5781602001602082028036833780820191505090505b50925060025467ffffffffffffffff811115610a2f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610a5d5781602001602082028036833780820191505090505b50915060025467ffffffffffffffff811115610aa2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610ad05781602001602082028036833780820191505090505b50905060005b600254811015610e2c576000600460008381526020019081526020016000209050818a8381518110610b31577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250508060000154898381518110610b7b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250508060020154888381518110610bc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250508060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16878381518110610c2f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16868381518110610cc7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508060040160149054906101000a900460ff16858381518110610d4c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010190151590811515815250508060040160159054906101000a900460ff16848381518110610da9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010190151590811515815250508060040160169054906101000a900460ff16838381518110610e06577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019015159081151581525050508080610e249061356a565b915050610ad6565b509091929394959697565b6006600082815260200190815260200160002060030160009054906101000a900460ff16610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9190613011565b60405180910390fd5b60006006600083815260200190815260200160002060030160006101000a81548160ff021916908315150217905550807f952950ab607c4a7f87f6a9b15935047221e6d7375af7861f5762eafbbdcbd9ae60405160405180910390a250565b60006004600083815260200190815260200160002090508060040160149054906101000a900460ff16610f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f58906130b1565b60405180910390fd5b8060040160159054906101000a900460ff16158015610f8f57508060040160169054906101000a900460ff16155b610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc590613091565b60405180910390fd5b60018160040160156101000a81548160ff02191690831515021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600101549081150290604051600060405180830381858888f19350505050158015611055573d6000803e3d6000fd5b5060005b816005015481101561112957600060056000858152602001908152602001600020600083815260200190815260200160002054905060006006600083815260200190815260200160002090508060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600201549081150290604051600060405180830381858888f19350505050158015611113573d6000803e3d6000fd5b50505080806111219061356a565b915050611059565b50817f6bef1b5e95b741d6e665eb9b5c2d3e1203c46a771451055a9d41e0b8ff4510b760405160405180910390a25050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060005b83518110156112a857600660008583815181106111cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060030160009054906101000a900460ff16611231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122890613011565b60405180910390fd5b6006600085838151811061126e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060020154836112939190613399565b925080806112a09061356a565b915050611185565b50612710600154836112ba9190613420565b6112c491906133ef565b905080826112d29190613399565b9150915091565b60008083511161131e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611315906130d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138590612ff1565b60405180910390fd5b60008061139a8561117f565b915091506000600260008154809291906113b39061356a565b9190505590506040518061012001604052808481526020018381526020014281526020018673ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160001515815260200160001515815260200187518152506004600083815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff02191690831515021790555060c08201518160040160156101000a81548160ff02191690831515021790555060e08201518160040160166101000a81548160ff021916908315150217905550610100820151816005015590505060005b86518110156115e5578681815181106115a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516005600084815260200190815260200160002060008381526020019081526020016000208190555080806115dd9061356a565b915050611560565b508473ffffffffffffffffffffffffffffffffffffffff16817f0303b7d3e01f9add26263f7746cf07cc567c8711ba4d0dcb43d346deb7fbd9908560405161162d91906130f1565b60405180910390a380935050505092915050565b6005602052816000526040600020602052806000526040600020600091509150505481565b60006004600083815260200190815260200160002090508060040160149054906101000a900460ff16156116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c690613051565b60405180910390fd5b80600001543414611715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170c90613031565b60405180910390fd5b60018160040160146101000a81548160ff021916908315150217905550428160020181905550338160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550817f7fe0f2451d656c771dcb9bb8cec3e368d133666dc25f03a0d78123933125c25a346040516117ae91906130f1565b60405180910390a25050565b6202a30081565b60606000600460008481526020019081526020016000209050806005015467ffffffffffffffff81111561181e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561185757816020015b6118446124fa565b81526020019060019003908161183c5790505b50915060005b8160050154811015611a00576000600560008681526020019081526020016000206000838152602001908152602001600020549050600060066000838152602001908152602001600020905060405180608001604052808260000180546118c390613538565b80601f01602080910402602001604051908101604052809291908181526020018280546118ef90613538565b801561193c5780601f106119115761010080835404028352916020019161193c565b820191906000526020600020905b81548152906001019060200180831161191f57829003601f168201915b505050505081526020018260010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826002015481526020018260030160009054906101000a900460ff1615158152508584815181106119e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181905250505080806119f89061356a565b91505061185d565b5050919050565b6006600085815260200190815260200160002060030160009054906101000a900460ff16611a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6190613011565b60405180910390fd5b600060066000868152602001908152602001600020905083816000019080519060200190611a99929190612474565b50828160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818160020181905550847fe8d63f0c3ae29a1a3d3b306affaea1d0ee7ebe03d28b236e445c18d386d284ba858585604051611b1a93929190612f67565b60405180910390a25050505050565b60015481565b6060806060806060600060035467ffffffffffffffff811115611b7b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611ba95781602001602082028036833780820191505090505b509050600060035467ffffffffffffffff811115611bf0577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611c2357816020015b6060815260200190600190039081611c0e5790505b509050600060035467ffffffffffffffff811115611c6a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611c985781602001602082028036833780820191505090505b509050600060035467ffffffffffffffff811115611cdf577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611d0d5781602001602082028036833780820191505090505b509050600060035467ffffffffffffffff811115611d54577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611d825781602001602082028036833780820191505090505b50905060005b60035481101561201357600060066000838152602001908152602001600020905081878381518110611de3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001018181525050806000018054611dfe90613538565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2a90613538565b8015611e775780601f10611e4c57610100808354040283529160200191611e77565b820191906000526020600020905b815481529060010190602001808311611e5a57829003601f168201915b5050505050868381518110611eb5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101819052508060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16858381518110611f1e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508060020154848381518110611f96577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250508060030160009054906101000a900460ff16838381518110611fed577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101901515908115158152505050808061200b9061356a565b915050611d88565b5084848484849950995099509950995050505050509091929394565b6060600080600080600660008781526020019081526020016000209050806000018160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600201548360030160009054906101000a900460ff1683805461209890613538565b80601f01602080910402602001604051908101604052809291908181526020018280546120c490613538565b80156121115780601f106120e657610100808354040283529160200191612111565b820191906000526020600020905b8154815290600101906020018083116120f457829003601f168201915b505050505093509450945094509450509193509193565b60025481565b600660205280600052604060002060009150905080600001805461215190613538565b80601f016020809104026020016040519081016040528092919081815260200182805461217d90613538565b80156121ca5780601f1061219f576101008083540402835291602001916121ca565b820191906000526020600020905b8154815290600101906020018083116121ad57829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030160009054906101000a900460ff16905084565b60006004600083815260200190815260200160002090508060040160149054906101000a900460ff1661227b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612272906130b1565b60405180910390fd5b8060040160159054906101000a900460ff161580156122a957508060040160169054906101000a900460ff16155b6122e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122df90613091565b60405180910390fd5b6202a30081600201546122fb9190613399565b42111561233d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233490613071565b60405180910390fd5b60018160040160166101000a81548160ff02191690831515021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600101549081150290604051600060405180830381858888f193505050501580156123c4573d6000803e3d6000fd5b508060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600101548360000154612417919061347a565b9081150290604051600060405180830381858888f19350505050158015612442573d6000803e3d6000fd5b50817fc12258dbc8f5aaf21f9b7ef40fbfb87befc7c46ac42dccc2c5cc565347e56ee660405160405180910390a25050565b82805461248090613538565b90600052602060002090601f0160209004810192826124a257600085556124e9565b82601f106124bb57805160ff19168380011785556124e9565b828001600101855582156124e9579182015b828111156124e85782518255916020019190600101906124cd565b5b5090506124f6919061253a565b5090565b604051806080016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000151581525090565b5b8082111561255357600081600090555060010161253b565b5090565b600061256a612565846131f3565b6131c2565b9050808382526020820190508285602086028201111561258957600080fd5b60005b858110156125b9578161259f888261266a565b84526020840193506020830192505060018101905061258c565b5050509392505050565b60006125d66125d18461321f565b6131c2565b9050828152602081018484840111156125ee57600080fd5b6125f98482856134f6565b509392505050565b60008135905061261081613680565b92915050565b600082601f83011261262757600080fd5b8135612637848260208601612557565b91505092915050565b600082601f83011261265157600080fd5b81356126618482602086016125c3565b91505092915050565b60008135905061267981613697565b92915050565b60006020828403121561269157600080fd5b600082013567ffffffffffffffff8111156126ab57600080fd5b6126b784828501612616565b91505092915050565b600080604083850312156126d357600080fd5b600083013567ffffffffffffffff8111156126ed57600080fd5b6126f985828601612616565b925050602061270a85828601612601565b9150509250929050565b60008060006060848603121561272957600080fd5b600084013567ffffffffffffffff81111561274357600080fd5b61274f86828701612640565b935050602061276086828701612601565b92505060406127718682870161266a565b9150509250925092565b60006020828403121561278d57600080fd5b600061279b8482850161266a565b91505092915050565b600080600080608085870312156127ba57600080fd5b60006127c88782880161266a565b945050602085013567ffffffffffffffff8111156127e557600080fd5b6127f187828801612640565b935050604061280287828801612601565b92505060606128138782880161266a565b91505092959194509250565b6000806040838503121561283257600080fd5b60006128408582860161266a565b92505060206128518582860161266a565b9150509250929050565b600061286783836128cb565b60208301905092915050565b600061287f8383612aed565b60208301905092915050565b60006128978383612b0b565b905092915050565b60006128ab8383612d7d565b905092915050565b60006128bf8383612de0565b60208301905092915050565b6128d4816134ae565b82525050565b6128e3816134ae565b82525050565b60006128f48261329f565b6128fe8185613322565b93506129098361324f565b8060005b8381101561293a578151612921888261285b565b975061292c836132e1565b92505060018101905061290d565b5085935050505092915050565b6000612952826132aa565b61295c8185613333565b93506129678361325f565b8060005b8381101561299857815161297f8882612873565b975061298a836132ee565b92505060018101905061296b565b5085935050505092915050565b60006129b0826132b5565b6129ba8185613344565b9350836020820285016129cc8561326f565b8060005b85811015612a0857848403895281516129e9858261288b565b94506129f4836132fb565b925060208a019950506001810190506129d0565b50829750879550505050505092915050565b6000612a25826132c0565b612a2f8185613355565b935083602082028501612a418561327f565b8060005b85811015612a7d5784840389528151612a5e858261289f565b9450612a6983613308565b925060208a01995050600181019050612a45565b50829750879550505050505092915050565b6000612a9a826132cb565b612aa48185613366565b9350612aaf8361328f565b8060005b83811015612ae0578151612ac788826128b3565b9750612ad283613315565b925050600181019050612ab3565b5085935050505092915050565b612af6816134c0565b82525050565b612b05816134c0565b82525050565b6000612b16826132d6565b612b208185613377565b9350612b30818560208601613505565b612b398161366f565b840191505092915050565b6000612b4f826132d6565b612b598185613388565b9350612b69818560208601613505565b612b728161366f565b840191505092915050565b6000612b8a601883613388565b91507f496e76616c696420637573746f6d6572206164647265737300000000000000006000830152602082019050919050565b6000612bca601683613388565b91507f41727469636c6520646f6573206e6f74206578697374000000000000000000006000830152602082019050919050565b6000612c0a601883613388565b91507f496e636f7272656374207061796d656e7420616d6f756e7400000000000000006000830152602082019050919050565b6000612c4a601483613388565b91507f426f6f6b696e6720616c726561647920706169640000000000000000000000006000830152602082019050919050565b6000612c8a601683613388565b91507f4469737075746520706572696f642065787069726564000000000000000000006000830152602082019050919050565b6000612cca601983613388565b91507f426f6f6b696e6720616c72656164792070726f636573736564000000000000006000830152602082019050919050565b6000612d0a601083613388565b91507f426f6f6b696e67206e6f742070616964000000000000000000000000000000006000830152602082019050919050565b6000612d4a601483613388565b91507f4e6f2061727469636c65732070726f76696465640000000000000000000000006000830152602082019050919050565b60006080830160008301518482036000860152612d9a8282612b0b565b9150506020830151612daf60208601826128cb565b506040830151612dc26040860182612de0565b506060830151612dd56060860182612aed565b508091505092915050565b612de9816134ec565b82525050565b612df8816134ec565b82525050565b6000602082019050612e1360008301846128da565b92915050565b60006020820190508181036000830152612e338184612a1a565b905092915050565b600060a0820190508181036000830152612e558188612a8f565b90508181036020830152612e6981876129a5565b90508181036040830152612e7d81866128e9565b90508181036060830152612e918185612a8f565b90508181036080830152612ea58184612947565b90509695505050505050565b6000610100820190508181036000830152612ecc818b612a8f565b90508181036020830152612ee0818a612a8f565b90508181036040830152612ef48189612a8f565b90508181036060830152612f0881886128e9565b90508181036080830152612f1c81876128e9565b905081810360a0830152612f308186612947565b905081810360c0830152612f448185612947565b905081810360e0830152612f588184612947565b90509998505050505050505050565b60006060820190508181036000830152612f818186612b44565b9050612f9060208301856128da565b612f9d6040830184612def565b949350505050565b60006080820190508181036000830152612fbf8187612b44565b9050612fce60208301866128da565b612fdb6040830185612def565b612fe86060830184612afc565b95945050505050565b6000602082019050818103600083015261300a81612b7d565b9050919050565b6000602082019050818103600083015261302a81612bbd565b9050919050565b6000602082019050818103600083015261304a81612bfd565b9050919050565b6000602082019050818103600083015261306a81612c3d565b9050919050565b6000602082019050818103600083015261308a81612c7d565b9050919050565b600060208201905081810360008301526130aa81612cbd565b9050919050565b600060208201905081810360008301526130ca81612cfd565b9050919050565b600060208201905081810360008301526130ea81612d3d565b9050919050565b60006020820190506131066000830184612def565b92915050565b60006040820190506131216000830185612def565b61312e6020830184612def565b9392505050565b60006101208201905061314b600083018c612def565b613158602083018b612def565b613165604083018a612def565b61317260608301896128da565b61317f60808301886128da565b61318c60a0830187612afc565b61319960c0830186612afc565b6131a660e0830185612afc565b6131b4610100830184612def565b9a9950505050505050505050565b6000604051905081810181811067ffffffffffffffff821117156131e9576131e8613640565b5b8060405250919050565b600067ffffffffffffffff82111561320e5761320d613640565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561323a57613239613640565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006133a4826134ec565b91506133af836134ec565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133e4576133e36135b3565b5b828201905092915050565b60006133fa826134ec565b9150613405836134ec565b925082613415576134146135e2565b5b828204905092915050565b600061342b826134ec565b9150613436836134ec565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561346f5761346e6135b3565b5b828202905092915050565b6000613485826134ec565b9150613490836134ec565b9250828210156134a3576134a26135b3565b5b828203905092915050565b60006134b9826134cc565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613523578082015181840152602081019050613508565b83811115613532576000848401525b50505050565b6000600282049050600182168061355057607f821691505b6020821081141561356457613563613611565b5b50919050565b6000613575826134ec565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156135a8576135a76135b3565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b613689816134ae565b811461369457600080fd5b50565b6136a0816134ec565b81146136ab57600080fd5b5056fea264697066735822122069f8759a8396ca4f902a19f906a13cfd0e5404c3dbaffd8019f88eacf6d3d70664736f6c63430008000033