mirror of
https://github.com/luxfhe/example-playground.git
synced 2026-10-30 18:13:21 +00:00
1 line
165 KiB
JSON
1 line
165 KiB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"symbol","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"_allowanceEncrypted","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"euint32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"allowanceEncrypted","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"permission","type":"tuple","internalType":"struct Permission","components":[{"name":"publicKey","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"approveEncrypted","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"tuple","internalType":"struct Euint32","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfEncrypted","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"auth","type":"tuple","internalType":"struct Permission","components":[{"name":"publicKey","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintEncrypted","inputs":[{"name":"encryptedAmount","type":"tuple","internalType":"struct Euint32","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferEncrypted","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"euint32"}],"outputs":[{"name":"","type":"uint256","internalType":"euint32"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferEncrypted","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"encryptedAmount","type":"tuple","internalType":"struct Euint32","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"uint256","internalType":"euint32"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFromEncrypted","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"euint32"}],"outputs":[{"name":"","type":"uint256","internalType":"euint32"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFromEncrypted","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"tuple","internalType":"struct Euint32","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"uint256","internalType":"euint32"}],"stateMutability":"nonpayable"},{"type":"function","name":"unwrap","inputs":[{"name":"amount","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wrap","inputs":[{"name":"amount","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalEncrypted","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TransferEncrypted","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"ErrorInsufficientFunds","inputs":[]},{"type":"error","name":"InvalidEncryptedInput","inputs":[{"name":"got","type":"uint8","internalType":"uint8"},{"name":"expected","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidShortString","inputs":[]},{"type":"error","name":"SecurityZoneOutOfBounds","inputs":[{"name":"value","type":"int32","internalType":"int32"}]},{"type":"error","name":"SignerNotMessageSender","inputs":[]},{"type":"error","name":"SignerNotOwner","inputs":[]},{"type":"error","name":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x6101606040526100145f61018560201b60201c565b600955348015610022575f5ffd5b5060405161442e38038061442e83398181016040528101906100449190610639565b6040518060400160405280601181526020017f4c7578464845205065726d697373696f6e0000000000000000000000000000008152506040518060400160405280600381526020017f312e300000000000000000000000000000000000000000000000000000000000815250838381600390816100c191906108bf565b5080600490816100d191906108bf565b5050506100e860058361019d60201b90919060201c565b610120818152505061010460068261019d60201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a081815250506101416101ea60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505050505050610d8c565b5f610196825f61024460201b60201c565b9050919050565b5f6020835110156101be576101b78361026460201b60201c565b90506101e4565b826101ce836102c960201b60201c565b5f0190816101dc91906108bf565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016102299594939291906109f4565b60405160208183030381529060405280519060200120905090565b5f5f610258846004856102d260201b60201c565b90508091505092915050565b5f5f829050601f815111156102b057826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016102a79190610a8d565b60405180910390fd5b8051816102bc90610ada565b5f1c175f1b915050919050565b5f819050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff8111156103205761031f610515565b5b60405190808252806020026020018201604052801561034e5781602001602082028036833780820191505090505b50610371898960ff166103668a6103d960201b60201c565b61043060201b60201c565b6040518563ffffffff1660e01b81526004016103909493929190610c85565b6020604051808303815f875af11580156103ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d09190610d00565b90509392505050565b5f5f8260030b121561042257816040517f8f568bf80000000000000000000000000000000000000000000000000000000081526004016104199190610d46565b60405180910390fd5b8163ffffffff169050919050565b60605f600367ffffffffffffffff81111561044e5761044d610515565b5b60405190808252806020026020018201604052801561047c5781602001602082028036833780820191505090505b50905084815f8151811061049357610492610d5f565b5b60200260200101818152505083816001815181106104b4576104b3610d5f565b5b60200260200101818152505082816002815181106104d5576104d4610d5f565b5b602002602001018181525050809150509392505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61054b82610505565b810181811067ffffffffffffffff8211171561056a57610569610515565b5b80604052505050565b5f61057c6104ec565b90506105888282610542565b919050565b5f67ffffffffffffffff8211156105a7576105a6610515565b5b6105b082610505565b9050602081019050919050565b8281835e5f83830152505050565b5f6105dd6105d88461058d565b610573565b9050828152602081018484840111156105f9576105f8610501565b5b6106048482856105bd565b509392505050565b5f82601f8301126106205761061f6104fd565b5b81516106308482602086016105cb565b91505092915050565b5f5f6040838503121561064f5761064e6104f5565b5b5f83015167ffffffffffffffff81111561066c5761066b6104f9565b5b6106788582860161060c565b925050602083015167ffffffffffffffff811115610699576106986104f9565b5b6106a58582860161060c565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806106fd57607f821691505b6020821081036107105761070f6106b9565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026107727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610737565b61077c8683610737565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6107c06107bb6107b684610794565b61079d565b610794565b9050919050565b5f819050919050565b6107d9836107a6565b6107ed6107e5826107c7565b848454610743565b825550505050565b5f5f905090565b6108046107f5565b61080f8184846107d0565b505050565b5b81811015610832576108275f826107fc565b600181019050610815565b5050565b601f8211156108775761084881610716565b61085184610728565b81016020851015610860578190505b61087461086c85610728565b830182610814565b50505b505050565b5f82821c905092915050565b5f6108975f198460080261087c565b1980831691505092915050565b5f6108af8383610888565b9150826002028217905092915050565b6108c8826106af565b67ffffffffffffffff8111156108e1576108e0610515565b5b6108eb82546106e6565b6108f6828285610836565b5f60209050601f831160018114610927575f8415610915578287015190505b61091f85826108a4565b865550610986565b601f19841661093586610716565b5f5b8281101561095c57848901518255600182019150602085019450602081019050610937565b868310156109795784890151610975601f891682610888565b8355505b6001600288020188555050505b505050505050565b5f819050919050565b6109a08161098e565b82525050565b6109af81610794565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109de826109b5565b9050919050565b6109ee816109d4565b82525050565b5f60a082019050610a075f830188610997565b610a146020830187610997565b610a216040830186610997565b610a2e60608301856109a6565b610a3b60808301846109e5565b9695505050505050565b5f82825260208201905092915050565b5f610a5f826106af565b610a698185610a45565b9350610a798185602086016105bd565b610a8281610505565b840191505092915050565b5f6020820190508181035f830152610aa58184610a55565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f610ad1825161098e565b80915050919050565b5f610ae482610aad565b82610aee84610ab7565b9050610af981610ac6565b92506020821015610b3957610b347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802610737565b831692505b5050919050565b5f60ff82169050919050565b610b5581610b40565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60208110610b9957610b98610b5b565b5b50565b5f819050610ba982610b88565b919050565b5f610bb882610b9c565b9050919050565b610bc881610bae565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610c0081610794565b82525050565b5f610c118383610bf7565b60208301905092915050565b5f602082019050919050565b5f610c3382610bce565b610c3d8185610bd8565b9350610c4883610be8565b805f5b83811015610c78578151610c5f8882610c06565b9750610c6a83610c1d565b925050600181019050610c4b565b5085935050505092915050565b5f608082019050610c985f830187610b4c565b610ca56020830186610bbf565b8181036040830152610cb78185610c29565b90508181036060830152610ccb8184610c29565b905095945050505050565b610cdf81610794565b8114610ce9575f5ffd5b50565b5f81519050610cfa81610cd6565b92915050565b5f60208284031215610d1557610d146104f5565b5b5f610d2284828501610cec565b91505092915050565b5f8160030b9050919050565b610d4081610d2b565b82525050565b5f602082019050610d595f830184610d37565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b60805160a05160c05160e051610100516101205161014051613651610ddd5f395f6113d901525f61139e01525f6121a601525f61218501525f611a7101525f611ac701525f611af001526136515ff3fe608060405234801561000f575f5ffd5b5060043610610140575f3560e01c806370a08231116100b6578063a9059cbb1161007a578063a9059cbb146103a0578063af575a00146103d0578063c4224c1914610400578063dd62ed3e14610430578063e1a136d514610460578063fe229cbe1461049057610140565b806370a08231146102f657806384b0196e1461032657806395d89b411461034a5780639f284be714610368578063a0712d681461038457610140565b8063313ce56711610108578063313ce567146102105780635356c4291461022e5780635fd006b11461025e578063602772041461027a57806363c05a33146102aa5780636e0505e1146102da57610140565b806306fdde0314610144578063095ea7b31461016257806318160ddd1461019257806323b872dd146101b057806323db9354146101e0575b5f5ffd5b61014c6104c0565b6040516101599190612715565b60405180910390f35b61017c600480360381019061017791906127d3565b610550565b604051610189919061282b565b60405180910390f35b61019a610572565b6040516101a79190612853565b60405180910390f35b6101ca60048036038101906101c5919061286c565b61057b565b6040516101d7919061282b565b60405180910390f35b6101fa60048036038101906101f591906128bc565b6105a9565b6040516102079190612933565b60405180910390f35b61021861062b565b6040516102259190612967565b60405180910390f35b610248600480360381019061024391906129a2565b610633565b6040516102559190612a4e565b60405180910390f35b61027860048036038101906102739190612a8c565b61072d565b005b610294600480360381019061028f9190612ca3565b610743565b6040516102a19190612a4e565b60405180910390f35b6102c460048036038101906102bf9190612cfd565b61086a565b6040516102d1919061282b565b60405180910390f35b6102f460048036038101906102ef9190612d90565b610891565b005b610310600480360381019061030b9190612dbb565b6109ae565b60405161031d9190612853565b60405180910390f35b61032e6109f3565b6040516103419796959493929190612ef5565b60405180910390f35b610352610a98565b60405161035f9190612715565b60405180910390f35b610382600480360381019061037d9190612d90565b610b28565b005b61039e60048036038101906103999190612f77565b610c30565b005b6103ba60048036038101906103b591906127d3565b610c3d565b6040516103c7919061282b565b60405180910390f35b6103ea60048036038101906103e59190612fcc565b610c5f565b6040516103f79190612933565b60405180910390f35b61041a6004803603810190610415919061301c565b610c8a565b6040516104279190612933565b60405180910390f35b61044a600480360381019061044591906128bc565b610c9e565b6040516104579190612853565b60405180910390f35b61047a6004803603810190610475919061305a565b610d20565b6040516104879190612933565b60405180910390f35b6104aa60048036038101906104a59190612cfd565b610d5c565b6040516104b79190612933565b60405180910390f35b6060600380546104cf906130f3565b80601f01602080910402602001604051908101604052809291908181526020018280546104fb906130f3565b80156105465780601f1061051d57610100808354040283529160200191610546565b820191905f5260205f20905b81548152906001019060200180831161052957829003601f168201915b5050505050905090565b5f5f61055a610d80565b9050610567818585610d87565b600191505092915050565b5f600254905090565b5f5f610585610d80565b9050610592858285610d99565b61059d858585610e2c565b60019150509392505050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f6012905090565b60608161063f90613123565b5f6106947f6bdaeb2d29561f159c7ef98b16b27015fb2aeb87209c7ee656226d912f59927d835f0151604051602001610679929190613135565b60405160208183030381529060405280519060200120610f1c565b90505f6106a5828460200151610f35565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461070c576040517f3093a27700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61072261071933886105a9565b865f0135610f5f565b935050505092915050565b610740338261073b90613217565b610f90565b50565b606081835f61079c7f6bdaeb2d29561f159c7ef98b16b27015fb2aeb87209c7ee656226d912f59927d845f0151604051602001610781929190613135565b60405160208183030381529060405280519060200120610f1c565b90505f6107ad828560200151610f35565b90508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610814576040517f51c65eae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61085e60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054875f0151610f5f565b94505050505092915050565b5f61088733846108828561087d90613217565b61103b565b6110ae565b6001905092915050565b5f6108a18263ffffffff16611210565b90505f6108fd6108ee60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484611222565b6108f75f611210565b8461126b565b905061094660075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826112cd565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610993600954826112cd565b6009819055506109a9338463ffffffff16611316565b505050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f6060805f5f5f6060610a04611395565b610a0c6113d0565b46305f5f1b5f67ffffffffffffffff811115610a2b57610a2a612ad7565b5b604051908082528060200260200182016040528015610a595781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b606060048054610aa7906130f3565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad3906130f3565b8015610b1e5780601f10610af557610100808354040283529160200191610b1e565b820191905f5260205f20905b815481529060010190602001808311610b0157829003601f168201915b5050505050905090565b8063ffffffff16610b38336109ae565b1015610b70576040517ffda7bbda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b80338263ffffffff1661140b565b5f610b908263ffffffff16611210565b9050610bd960075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261148a565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610c266009548261148a565b6009819055505050565b610c3a3382611316565b50565b5f5f610c47610d80565b9050610c54818585610e2c565b600191505092915050565b5f5f8290505f610c708633846114d3565b9050610c7d86868361150e565b5080925050509392505050565b5f610c9633848461150e565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f5f610d3483610d2f90613217565b61103b565b90505f610d428633846114d3565b9050610d4f86868361150e565b5080925050509392505050565b5f610d7883610d7384610d6e90613217565b61103b565b610c8a565b905092915050565b5f33905090565b610d948383836001611686565b505050565b5f610da48484610c9e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015610e265781811015610e17578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610e0e93929190613229565b60405180910390fd5b610e2584848484035f611686565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e9c575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610e93919061325e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f0c575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610f03919061325e565b60405180910390fd5b610f17838383611855565b505050565b5f610f2e610f28611a6e565b83611b24565b9050919050565b5f5f5f5f610f438686611b64565b925092509250610f538282611bb9565b82935050505092915050565b60605f8390508083604051602001610f78929190613277565b60405160208183030381529060405291505092915050565b5f610f9a8261103b565b9050610fe360075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261148a565b60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506110306009548261148a565b600981905550505050565b5f5f600490508060ff16836040015160ff1614611095578260400151816040517f67cf307100000000000000000000000000000000000000000000000000000000815260040161108c92919061329e565b60405180910390fd5b6110a66110a184611d1b565b611d5d565b915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361111e575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611115919061325e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361118e575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611185919061325e565b60405180910390fd5b8060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f61121b825f611df4565b9050919050565b5f61122c83611e0e565b61123c576112395f611210565b92505b61124582611e0e565b611255576112525f611210565b91505b611263600484846015611e1f565b905092915050565b5f61127584611f0e565b611285576112825f611f1f565b93505b61128e83611e0e565b61129e5761129b5f611210565b92505b6112a782611e0e565b6112b7576112b45f611210565b91505b6112c46004858585611f31565b90509392505050565b5f6112d783611e0e565b6112e7576112e45f611210565b92505b6112f082611e0e565b611300576112fd5f611210565b91505b61130e600484846007611e1f565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611386575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161137d919061325e565b60405180910390fd5b6113915f8383611855565b5050565b60606113cb60057f000000000000000000000000000000000000000000000000000000000000000061202290919063ffffffff16565b905090565b606061140660067f000000000000000000000000000000000000000000000000000000000000000061202290919063ffffffff16565b905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361147b575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611472919061325e565b60405180910390fd5b611486825f83611855565b5050565b5f61149483611e0e565b6114a4576114a15f611210565b92505b6114ad82611e0e565b6114bd576114ba5f611210565b91505b6114cb600484846008611e1f565b905092915050565b5f5f6114df85856105a9565b90505f6114ec82856120cf565b905061150286866114fd85856112cd565b6110ae565b80925050509392505050565b5f5f61156961155a8460075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612118565b846115645f611210565b61126b565b90506115b260075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261148a565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061163a60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826112cd565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036116f6575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016116ed919061325e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611766575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161175d919061325e565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561184f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516118469190612853565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118a5578060025f82825461189991906132f2565b92505081905550611973565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561192e578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161192593929190613229565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119ba578060025f8282540392505081905550611a04565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a619190612853565b60405180910390a3505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148015611ae957507f000000000000000000000000000000000000000000000000000000000000000046145b15611b16577f00000000000000000000000000000000000000000000000000000000000000009050611b21565b611b1e612161565b90505b90565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f5f5f6041845103611ba4575f5f5f602087015192506040870151915060608701515f1a9050611b96888285856121f6565b955095509550505050611bb2565b5f600285515f1b9250925092505b9250925092565b5f6003811115611bcc57611bcb613325565b5b826003811115611bdf57611bde613325565b5b0315611d175760016003811115611bf957611bf8613325565b5b826003811115611c0c57611c0b613325565b5b03611c43576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115611c5757611c56613325565b5b826003811115611c6a57611c69613325565b5b03611cae57805f1c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401611ca59190612853565b60405180910390fd5b600380811115611cc157611cc0613325565b5b826003811115611cd457611cd3613325565b5b03611d1657806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401611d0d9190613352565b60405180910390fd5b5b5050565b611d2361267a565b6040518060800160405280835f01518152602001836020015160ff168152602001600460ff16815260200183606001518152509050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff166327f9c76283336040518363ffffffff1660e01b8152600401611dad929190613422565b6020604051808303815f875af1158015611dc9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ded9190613464565b9050919050565b5f5f611e02846004856122dd565b90508091505092915050565b5f611e18826123d8565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd8684611e5c88886123e4565b5f67ffffffffffffffff811115611e7657611e75612ad7565b5b604051908082528060200260200182016040528015611ea45781602001602082028036833780820191505090505b506040518563ffffffff1660e01b8152600401611ec494939291906134d5565b6020604051808303815f875af1158015611ee0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f049190613464565b9050949350505050565b5f611f18826123d8565b9050919050565b5f611f2a825f61247e565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd866004611f708888886124a7565b5f67ffffffffffffffff811115611f8a57611f89612ad7565b5b604051908082528060200260200182016040528015611fb85781602001602082028036833780820191505090505b506040518563ffffffff1660e01b8152600401611fd894939291906134d5565b6020604051808303815f875af1158015611ff4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120189190613464565b9050949350505050565b606060ff5f1b831461203e5761203783612563565b90506120c9565b81805461204a906130f3565b80601f0160208091040260200160405190810160405280929190818152602001828054612076906130f3565b80156120c15780601f10612098576101008083540402835291602001916120c1565b820191905f5260205f20905b8154815290600101906020018083116120a457829003601f168201915b505050505090505b92915050565b5f6120d983611e0e565b6120e9576120e65f611210565b92505b6120f282611e0e565b612102576120ff5f611210565b91505b612110600484846016611e1f565b905092915050565b5f61212283611e0e565b6121325761212f5f611210565b92505b61213b82611e0e565b61214b576121485f611210565b91505b612159600484846014611e1f565b905092915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000046306040516020016121db959493929190613526565b60405160208183030381529060405280519060200120905090565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115612232575f6003859250925092506122d3565b5f6001888888886040515f81526020016040526040516122559493929190613577565b6020604051602081039080840390855afa158015612275573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122c6575f60015f5f1b935093509350506122d3565b805f5f5f1b935093509350505b9450945094915050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff81111561232b5761232a612ad7565b5b6040519080825280602002602001820160405280156123595781602001602082028036833780820191505090505b50612370898960ff1661236b8a6125d5565b6124a7565b6040518563ffffffff1660e01b815260040161238f94939291906134d5565b6020604051808303815f875af11580156123ab573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123cf9190613464565b90509392505050565b5f5f8214159050919050565b60605f600267ffffffffffffffff81111561240257612401612ad7565b5b6040519080825280602002602001820160405280156124305781602001602082028036833780820191505090505b50905083815f81518110612447576124466135ba565b5b6020026020010181815250508281600181518110612468576124676135ba565b5b6020026020010181815250508091505092915050565b5f5f5f9050831561248e57600190505b5f61249a825f866122dd565b9050809250505092915050565b60605f600367ffffffffffffffff8111156124c5576124c4612ad7565b5b6040519080825280602002602001820160405280156124f35781602001602082028036833780820191505090505b50905084815f8151811061250a576125096135ba565b5b602002602001018181525050838160018151811061252b5761252a6135ba565b5b602002602001018181525050828160028151811061254c5761254b6135ba565b5b602002602001018181525050809150509392505050565b60605f61256f8361262c565b90505f602067ffffffffffffffff81111561258d5761258c612ad7565b5b6040519080825280601f01601f1916602001820160405280156125bf5781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f5f8260030b121561261e57816040517f8f568bf80000000000000000000000000000000000000000000000000000000081526004016126159190613602565b60405180910390fd5b8163ffffffff169050919050565b5f5f60ff835f1c169050601f811115612671576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b60405180608001604052805f81526020015f60ff1681526020015f60ff168152602001606081525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6126e7826126a5565b6126f181856126af565b93506127018185602086016126bf565b61270a816126cd565b840191505092915050565b5f6020820190508181035f83015261272d81846126dd565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61276f82612746565b9050919050565b61277f81612765565b8114612789575f5ffd5b50565b5f8135905061279a81612776565b92915050565b5f819050919050565b6127b2816127a0565b81146127bc575f5ffd5b50565b5f813590506127cd816127a9565b92915050565b5f5f604083850312156127e9576127e861273e565b5b5f6127f68582860161278c565b9250506020612807858286016127bf565b9150509250929050565b5f8115159050919050565b61282581612811565b82525050565b5f60208201905061283e5f83018461281c565b92915050565b61284d816127a0565b82525050565b5f6020820190506128665f830184612844565b92915050565b5f5f5f606084860312156128835761288261273e565b5b5f6128908682870161278c565b93505060206128a18682870161278c565b92505060406128b2868287016127bf565b9150509250925092565b5f5f604083850312156128d2576128d161273e565b5b5f6128df8582860161278c565b92505060206128f08582860161278c565b9150509250929050565b5f819050919050565b5f61291d612918612913846127a0565b6128fa565b6127a0565b9050919050565b61292d81612903565b82525050565b5f6020820190506129465f830184612924565b92915050565b5f60ff82169050919050565b6129618161294c565b82525050565b5f60208201905061297a5f830184612958565b92915050565b5f5ffd5b5f6040828403121561299957612998612980565b5b81905092915050565b5f5f604083850312156129b8576129b761273e565b5b5f6129c58582860161278c565b925050602083013567ffffffffffffffff8111156129e6576129e5612742565b5b6129f285828601612984565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f612a20826129fc565b612a2a8185612a06565b9350612a3a8185602086016126bf565b612a43816126cd565b840191505092915050565b5f6020820190508181035f830152612a668184612a16565b905092915050565b5f60808284031215612a8357612a82612980565b5b81905092915050565b5f60208284031215612aa157612aa061273e565b5b5f82013567ffffffffffffffff811115612abe57612abd612742565b5b612aca84828501612a6e565b91505092915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b0d826126cd565b810181811067ffffffffffffffff82111715612b2c57612b2b612ad7565b5b80604052505050565b5f612b3e612735565b9050612b4a8282612b04565b919050565b5f5ffd5b5f819050919050565b612b6581612b53565b8114612b6f575f5ffd5b50565b5f81359050612b8081612b5c565b92915050565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff821115612ba857612ba7612ad7565b5b612bb1826126cd565b9050602081019050919050565b828183375f83830152505050565b5f612bde612bd984612b8e565b612b35565b905082815260208101848484011115612bfa57612bf9612b8a565b5b612c05848285612bbe565b509392505050565b5f82601f830112612c2157612c20612b86565b5b8135612c31848260208601612bcc565b91505092915050565b5f60408284031215612c4f57612c4e612ad3565b5b612c596040612b35565b90505f612c6884828501612b72565b5f83015250602082013567ffffffffffffffff811115612c8b57612c8a612b4f565b5b612c9784828501612c0d565b60208301525092915050565b5f5f60408385031215612cb957612cb861273e565b5b5f612cc68582860161278c565b925050602083013567ffffffffffffffff811115612ce757612ce6612742565b5b612cf385828601612c3a565b9150509250929050565b5f5f60408385031215612d1357612d1261273e565b5b5f612d208582860161278c565b925050602083013567ffffffffffffffff811115612d4157612d40612742565b5b612d4d85828601612a6e565b9150509250929050565b5f63ffffffff82169050919050565b612d6f81612d57565b8114612d79575f5ffd5b50565b5f81359050612d8a81612d66565b92915050565b5f60208284031215612da557612da461273e565b5b5f612db284828501612d7c565b91505092915050565b5f60208284031215612dd057612dcf61273e565b5b5f612ddd8482850161278c565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b612e1a81612de6565b82525050565b612e2981612765565b82525050565b612e3881612b53565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612e70816127a0565b82525050565b5f612e818383612e67565b60208301905092915050565b5f602082019050919050565b5f612ea382612e3e565b612ead8185612e48565b9350612eb883612e58565b805f5b83811015612ee8578151612ecf8882612e76565b9750612eda83612e8d565b925050600181019050612ebb565b5085935050505092915050565b5f60e082019050612f085f83018a612e11565b8181036020830152612f1a81896126dd565b90508181036040830152612f2e81886126dd565b9050612f3d6060830187612844565b612f4a6080830186612e20565b612f5760a0830185612e2f565b81810360c0830152612f698184612e99565b905098975050505050505050565b5f60208284031215612f8c57612f8b61273e565b5b5f612f99848285016127bf565b91505092915050565b612fab816127a0565b8114612fb5575f5ffd5b50565b5f81359050612fc681612fa2565b92915050565b5f5f5f60608486031215612fe357612fe261273e565b5b5f612ff08682870161278c565b93505060206130018682870161278c565b925050604061301286828701612fb8565b9150509250925092565b5f5f604083850312156130325761303161273e565b5b5f61303f8582860161278c565b925050602061305085828601612fb8565b9150509250929050565b5f5f5f606084860312156130715761307061273e565b5b5f61307e8682870161278c565b935050602061308f8682870161278c565b925050604084013567ffffffffffffffff8111156130b0576130af612742565b5b6130bc86828701612a6e565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061310a57607f821691505b60208210810361311d5761311c6130c6565b5b50919050565b5f61312e3683612c3a565b9050919050565b5f6040820190506131485f830185612e2f565b6131556020830184612e2f565b9392505050565b6131658161294c565b811461316f575f5ffd5b50565b5f813590506131808161315c565b92915050565b5f6080828403121561319b5761319a612ad3565b5b6131a56080612b35565b90505f6131b4848285016127bf565b5f8301525060206131c784828501613172565b60208301525060406131db84828501613172565b604083015250606082013567ffffffffffffffff8111156131ff576131fe612b4f565b5b61320b84828501612c0d565b60608301525092915050565b5f6132223683613186565b9050919050565b5f60608201905061323c5f830186612e20565b6132496020830185612844565b6132566040830184612844565b949350505050565b5f6020820190506132715f830184612e20565b92915050565b5f60408201905061328a5f830185612844565b6132976020830184612e2f565b9392505050565b5f6040820190506132b15f830185612958565b6132be6020830184612958565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6132fc826127a0565b9150613307836127a0565b925082820190508082111561331f5761331e6132c5565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020820190506133655f830184612e2f565b92915050565b6133748161294c565b82525050565b5f82825260208201905092915050565b5f613394826129fc565b61339e818561337a565b93506133ae8185602086016126bf565b6133b7816126cd565b840191505092915050565b5f608083015f8301516133d75f860182612e67565b5060208301516133ea602086018261336b565b5060408301516133fd604086018261336b565b5060608301518482036060860152613415828261338a565b9150508091505092915050565b5f6040820190508181035f83015261343a81856133c2565b90506134496020830184612e20565b9392505050565b5f8151905061345e816127a9565b92915050565b5f602082840312156134795761347861273e565b5b5f61348684828501613450565b91505092915050565b602081106134a05761349f613325565b5b50565b5f8190506134b08261348f565b919050565b5f6134bf826134a3565b9050919050565b6134cf816134b5565b82525050565b5f6080820190506134e85f830187612958565b6134f560208301866134c6565b81810360408301526135078185612e99565b9050818103606083015261351b8184612e99565b905095945050505050565b5f60a0820190506135395f830188612e2f565b6135466020830187612e2f565b6135536040830186612e2f565b6135606060830185612844565b61356d6080830184612e20565b9695505050505050565b5f60808201905061358a5f830187612e2f565b6135976020830186612958565b6135a46040830185612e2f565b6135b16060830184612e2f565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160030b9050919050565b6135fc816135e7565b82525050565b5f6020820190506136155f8301846135f3565b9291505056fea264697066735822122063635d3620b6c934a29e8d063287ce7c6016de940d6ab89e687da95e0b5e9f7064736f6c634300081b0033","sourceMap":"440:5556:4:-:0;;;812:16;826:1;812:13;;;:16;;:::i;:::-;773:55;;835:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3428:431:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;917:4:4;923:6;1656:5:17;1648;:13;;;;;;:::i;:::-;;1681:7;1671;:17;;;;;;:::i;:::-;;1582:113;;3501:45:26;3532:13;3501:4;:30;;;;:45;;;;:::i;:::-;3493:53;;;;;;3567:51;3601:16;3567:7;:33;;;;:51;;;;:::i;:::-;3556:62;;;;;;3658:4;3642:22;;;;;;3628:36;;;;;;3707:7;3691:25;;;;;;3674:42;;;;;;3744:13;3727:30;;;;;;3792:23;:21;;;:23;;:::i;:::-;3767:48;;;;;;3847:4;3825:27;;;;;;;;;;3428:431;;835:98:4;;440:5556;;127894:104:7;127946:7;127972:19;127982:5;127989:1;127972:9;;;:19;;:::i;:::-;127965:26;;127894:104;;;:::o;2887:340:22:-;2983:11;3032:2;3016:5;3010:19;:24;3006:215;;;3057:20;3071:5;3057:13;;;:20;;:::i;:::-;3050:27;;;;3006:215;3149:5;3108:32;3134:5;3108:25;;;:32;;:::i;:::-;:38;;:46;;;;;;:::i;:::-;;1390:66;3192:17;;3168:42;;2887:340;;;;;:::o;4213:179:26:-;4268:7;2079:95;4326:11;;4339:14;;4355:13;4378:4;4304:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4294:91;;;;;;4287:98;;4213:179;:::o;128225:210:7:-;128297:7;128316:10;128329:66;128355:5;7770:1:11;128382:12:7;128329:25;;;:66;;:::i;:::-;128316:79;;128425:2;128405:23;;;128225:210;;;;:::o;1708:286:22:-;1773:11;1796:17;1822:3;1796:30;;1854:2;1840:4;:11;:16;1836:72;;;1893:3;1879:18;;;;;;;;;;;:::i;:::-;;;;;;;;1836:72;1974:4;:11;1965:4;1957:13;;;:::i;:::-;1949:22;;:36;1941:45;;1917:70;;;1708:286;;;:::o;3468:175:23:-;3536:20;3617:10;3607:20;;3468:175;;;:::o;743:372:9:-;834:7;745:42:10;860:44:9;;;918:6;938:25;991:1;977:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1007:91;1037:5;1044:6;1007:91;;1052:45;1084:12;1052:31;;;:45;;:::i;:::-;1007:29;;;:91;;:::i;:::-;860:248;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;853:255;;743:372;;;;;:::o;629:208:8:-;696:7;727:1;719:5;:9;;;715:77;;;775:5;751:30;;;;;;;;;;;:::i;:::-;;;;;;;;715:77;823:5;808:22;;801:29;;629:208;;;:::o;1745:284::-;1845:16;1873:23;1913:1;1899:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1873:42;;1937:6;1925;1932:1;1925:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1965:6;1953;1960:1;1953:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1993:6;1981;1988:1;1981:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;2016:6;2009:13;;;1745:284;;;;;:::o;7:75:33:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:139::-;1699:6;1694:3;1689;1683:23;1740:1;1731:6;1726:3;1722:16;1715:27;1610:139;;;:::o;1755:434::-;1844:5;1869:66;1885:49;1927:6;1885:49;:::i;:::-;1869:66;:::i;:::-;1860:75;;1958:6;1951:5;1944:21;1996:4;1989:5;1985:16;2034:3;2025:6;2020:3;2016:16;2013:25;2010:112;;;2041:79;;:::i;:::-;2010:112;2131:52;2176:6;2171:3;2166;2131:52;:::i;:::-;1850:339;1755:434;;;;;:::o;2209:355::-;2276:5;2325:3;2318:4;2310:6;2306:17;2302:27;2292:122;;2333:79;;:::i;:::-;2292:122;2443:6;2437:13;2468:90;2554:3;2546:6;2539:4;2531:6;2527:17;2468:90;:::i;:::-;2459:99;;2282:282;2209:355;;;;:::o;2570:853::-;2669:6;2677;2726:2;2714:9;2705:7;2701:23;2697:32;2694:119;;;2732:79;;:::i;:::-;2694:119;2873:1;2862:9;2858:17;2852:24;2903:18;2895:6;2892:30;2889:117;;;2925:79;;:::i;:::-;2889:117;3030:74;3096:7;3087:6;3076:9;3072:22;3030:74;:::i;:::-;3020:84;;2823:291;3174:2;3163:9;3159:18;3153:25;3205:18;3197:6;3194:30;3191:117;;;3227:79;;:::i;:::-;3191:117;3332:74;3398:7;3389:6;3378:9;3374:22;3332:74;:::i;:::-;3322:84;;3124:292;2570:853;;;;;:::o;3429:99::-;3481:6;3515:5;3509:12;3499:22;;3429:99;;;:::o;3534:180::-;3582:77;3579:1;3572:88;3679:4;3676:1;3669:15;3703:4;3700:1;3693:15;3720:320;3764:6;3801:1;3795:4;3791:12;3781:22;;3848:1;3842:4;3838:12;3869:18;3859:81;;3925:4;3917:6;3913:17;3903:27;;3859:81;3987:2;3979:6;3976:14;3956:18;3953:38;3950:84;;4006:18;;:::i;:::-;3950:84;3771:269;3720:320;;;:::o;4046:141::-;4095:4;4118:3;4110:11;;4141:3;4138:1;4131:14;4175:4;4172:1;4162:18;4154:26;;4046:141;;;:::o;4193:93::-;4230:6;4277:2;4272;4265:5;4261:14;4257:23;4247:33;;4193:93;;;:::o;4292:107::-;4336:8;4386:5;4380:4;4376:16;4355:37;;4292:107;;;;:::o;4405:393::-;4474:6;4524:1;4512:10;4508:18;4547:97;4577:66;4566:9;4547:97;:::i;:::-;4665:39;4695:8;4684:9;4665:39;:::i;:::-;4653:51;;4737:4;4733:9;4726:5;4722:21;4713:30;;4786:4;4776:8;4772:19;4765:5;4762:30;4752:40;;4481:317;;4405:393;;;;;:::o;4804:77::-;4841:7;4870:5;4859:16;;4804:77;;;:::o;4887:60::-;4915:3;4936:5;4929:12;;4887:60;;;:::o;4953:142::-;5003:9;5036:53;5054:34;5063:24;5081:5;5063:24;:::i;:::-;5054:34;:::i;:::-;5036:53;:::i;:::-;5023:66;;4953:142;;;:::o;5101:75::-;5144:3;5165:5;5158:12;;5101:75;;;:::o;5182:269::-;5292:39;5323:7;5292:39;:::i;:::-;5353:91;5402:41;5426:16;5402:41;:::i;:::-;5394:6;5387:4;5381:11;5353:91;:::i;:::-;5347:4;5340:105;5258:193;5182:269;;;:::o;5457:73::-;5502:3;5523:1;5516:8;;5457:73;:::o;5536:189::-;5613:32;;:::i;:::-;5654:65;5712:6;5704;5698:4;5654:65;:::i;:::-;5589:136;5536:189;;:::o;5731:186::-;5791:120;5808:3;5801:5;5798:14;5791:120;;;5862:39;5899:1;5892:5;5862:39;:::i;:::-;5835:1;5828:5;5824:13;5815:22;;5791:120;;;5731:186;;:::o;5923:543::-;6024:2;6019:3;6016:11;6013:446;;;6058:38;6090:5;6058:38;:::i;:::-;6142:29;6160:10;6142:29;:::i;:::-;6132:8;6128:44;6325:2;6313:10;6310:18;6307:49;;;6346:8;6331:23;;6307:49;6369:80;6425:22;6443:3;6425:22;:::i;:::-;6415:8;6411:37;6398:11;6369:80;:::i;:::-;6028:431;;6013:446;5923:543;;;:::o;6472:117::-;6526:8;6576:5;6570:4;6566:16;6545:37;;6472:117;;;;:::o;6595:169::-;6639:6;6672:51;6720:1;6716:6;6708:5;6705:1;6701:13;6672:51;:::i;:::-;6668:56;6753:4;6747;6743:15;6733:25;;6646:118;6595:169;;;;:::o;6769:295::-;6845:4;6991:29;7016:3;7010:4;6991:29;:::i;:::-;6983:37;;7053:3;7050:1;7046:11;7040:4;7037:21;7029:29;;6769:295;;;;:::o;7069:1395::-;7186:37;7219:3;7186:37;:::i;:::-;7288:18;7280:6;7277:30;7274:56;;;7310:18;;:::i;:::-;7274:56;7354:38;7386:4;7380:11;7354:38;:::i;:::-;7439:67;7499:6;7491;7485:4;7439:67;:::i;:::-;7533:1;7557:4;7544:17;;7589:2;7581:6;7578:14;7606:1;7601:618;;;;8263:1;8280:6;8277:77;;;8329:9;8324:3;8320:19;8314:26;8305:35;;8277:77;8380:67;8440:6;8433:5;8380:67;:::i;:::-;8374:4;8367:81;8236:222;7571:887;;7601:618;7653:4;7649:9;7641:6;7637:22;7687:37;7719:4;7687:37;:::i;:::-;7746:1;7760:208;7774:7;7771:1;7768:14;7760:208;;;7853:9;7848:3;7844:19;7838:26;7830:6;7823:42;7904:1;7896:6;7892:14;7882:24;;7951:2;7940:9;7936:18;7923:31;;7797:4;7794:1;7790:12;7785:17;;7760:208;;;7996:6;7987:7;7984:19;7981:179;;;8054:9;8049:3;8045:19;8039:26;8097:48;8139:4;8131:6;8127:17;8116:9;8097:48;:::i;:::-;8089:6;8082:64;8004:156;7981:179;8206:1;8202;8194:6;8190:14;8186:22;8180:4;8173:36;7608:611;;;7571:887;;7161:1303;;;7069:1395;;:::o;8470:77::-;8507:7;8536:5;8525:16;;8470:77;;;:::o;8553:118::-;8640:24;8658:5;8640:24;:::i;:::-;8635:3;8628:37;8553:118;;:::o;8677:::-;8764:24;8782:5;8764:24;:::i;:::-;8759:3;8752:37;8677:118;;:::o;8801:126::-;8838:7;8878:42;8871:5;8867:54;8856:65;;8801:126;;;:::o;8933:96::-;8970:7;8999:24;9017:5;8999:24;:::i;:::-;8988:35;;8933:96;;;:::o;9035:118::-;9122:24;9140:5;9122:24;:::i;:::-;9117:3;9110:37;9035:118;;:::o;9159:664::-;9364:4;9402:3;9391:9;9387:19;9379:27;;9416:71;9484:1;9473:9;9469:17;9460:6;9416:71;:::i;:::-;9497:72;9565:2;9554:9;9550:18;9541:6;9497:72;:::i;:::-;9579;9647:2;9636:9;9632:18;9623:6;9579:72;:::i;:::-;9661;9729:2;9718:9;9714:18;9705:6;9661:72;:::i;:::-;9743:73;9811:3;9800:9;9796:19;9787:6;9743:73;:::i;:::-;9159:664;;;;;;;;:::o;9829:169::-;9913:11;9947:6;9942:3;9935:19;9987:4;9982:3;9978:14;9963:29;;9829:169;;;;:::o;10004:377::-;10092:3;10120:39;10153:5;10120:39;:::i;:::-;10175:71;10239:6;10234:3;10175:71;:::i;:::-;10168:78;;10255:65;10313:6;10308:3;10301:4;10294:5;10290:16;10255:65;:::i;:::-;10345:29;10367:6;10345:29;:::i;:::-;10340:3;10336:39;10329:46;;10096:285;10004:377;;;;:::o;10387:313::-;10500:4;10538:2;10527:9;10523:18;10515:26;;10587:9;10581:4;10577:20;10573:1;10562:9;10558:17;10551:47;10615:78;10688:4;10679:6;10615:78;:::i;:::-;10607:86;;10387:313;;;;:::o;10706:98::-;10757:6;10791:5;10785:12;10775:22;;10706:98;;;:::o;10810:116::-;10861:4;10884:3;10876:11;;10914:4;10909:3;10905:14;10897:22;;10810:116;;;:::o;10932:154::-;10975:11;11011:29;11035:3;11029:10;11011:29;:::i;:::-;11074:5;11050:29;;10987:99;10932:154;;;:::o;11092:594::-;11176:5;11207:38;11239:5;11207:38;:::i;:::-;11270:5;11297:40;11331:5;11297:40;:::i;:::-;11285:52;;11356:35;11382:8;11356:35;:::i;:::-;11347:44;;11415:2;11407:6;11404:14;11401:278;;;11486:169;11571:66;11541:6;11537:2;11533:15;11530:1;11526:23;11486:169;:::i;:::-;11463:5;11442:227;11433:236;;11401:278;11182:504;;11092:594;;;:::o;11692:86::-;11727:7;11767:4;11760:5;11756:16;11745:27;;11692:86;;;:::o;11784:112::-;11867:22;11883:5;11867:22;:::i;:::-;11862:3;11855:35;11784:112;;:::o;11902:180::-;11950:77;11947:1;11940:88;12047:4;12044:1;12037:15;12071:4;12068:1;12061:15;12088:122;12177:2;12170:5;12167:13;12157:47;;12184:18;;:::i;:::-;12157:47;12088:122;:::o;12216:143::-;12269:7;12298:5;12287:16;;12304:49;12347:5;12304:49;:::i;:::-;12216:143;;;:::o;12365:::-;12429:9;12462:40;12496:5;12462:40;:::i;:::-;12449:53;;12365:143;;;:::o;12514:159::-;12615:51;12660:5;12615:51;:::i;:::-;12610:3;12603:64;12514:159;;:::o;12679:114::-;12746:6;12780:5;12774:12;12764:22;;12679:114;;;:::o;12799:184::-;12898:11;12932:6;12927:3;12920:19;12972:4;12967:3;12963:14;12948:29;;12799:184;;;;:::o;12989:132::-;13056:4;13079:3;13071:11;;13109:4;13104:3;13100:14;13092:22;;12989:132;;;:::o;13127:108::-;13204:24;13222:5;13204:24;:::i;:::-;13199:3;13192:37;13127:108;;:::o;13241:179::-;13310:10;13331:46;13373:3;13365:6;13331:46;:::i;:::-;13409:4;13404:3;13400:14;13386:28;;13241:179;;;;:::o;13426:113::-;13496:4;13528;13523:3;13519:14;13511:22;;13426:113;;;:::o;13575:732::-;13694:3;13723:54;13771:5;13723:54;:::i;:::-;13793:86;13872:6;13867:3;13793:86;:::i;:::-;13786:93;;13903:56;13953:5;13903:56;:::i;:::-;13982:7;14013:1;13998:284;14023:6;14020:1;14017:13;13998:284;;;14099:6;14093:13;14126:63;14185:3;14170:13;14126:63;:::i;:::-;14119:70;;14212:60;14265:6;14212:60;:::i;:::-;14202:70;;14058:224;14045:1;14042;14038:9;14033:14;;13998:284;;;14002:14;14298:3;14291:10;;13699:608;;;13575:732;;;;:::o;14313:875::-;14600:4;14638:3;14627:9;14623:19;14615:27;;14652:67;14716:1;14705:9;14701:17;14692:6;14652:67;:::i;:::-;14729:86;14811:2;14800:9;14796:18;14787:6;14729:86;:::i;:::-;14862:9;14856:4;14852:20;14847:2;14836:9;14832:18;14825:48;14890:108;14993:4;14984:6;14890:108;:::i;:::-;14882:116;;15045:9;15039:4;15035:20;15030:2;15019:9;15015:18;15008:48;15073:108;15176:4;15167:6;15073:108;:::i;:::-;15065:116;;14313:875;;;;;;;:::o;15194:122::-;15267:24;15285:5;15267:24;:::i;:::-;15260:5;15257:35;15247:63;;15306:1;15303;15296:12;15247:63;15194:122;:::o;15322:143::-;15379:5;15410:6;15404:13;15395:22;;15426:33;15453:5;15426:33;:::i;:::-;15322:143;;;;:::o;15471:351::-;15541:6;15590:2;15578:9;15569:7;15565:23;15561:32;15558:119;;;15596:79;;:::i;:::-;15558:119;15716:1;15741:64;15797:7;15788:6;15777:9;15773:22;15741:64;:::i;:::-;15731:74;;15687:128;15471:351;;;;:::o;15828:90::-;15863:7;15906:5;15903:1;15892:20;15881:31;;15828:90;;;:::o;15924:112::-;16007:22;16023:5;16007:22;:::i;:::-;16002:3;15995:35;15924:112;;:::o;16042:214::-;16131:4;16169:2;16158:9;16154:18;16146:26;;16182:67;16246:1;16235:9;16231:17;16222:6;16182:67;:::i;:::-;16042:214;;;;:::o;16262:180::-;16310:77;16307:1;16300:88;16407:4;16404:1;16397:15;16431:4;16428:1;16421:15;440:5556:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610140575f3560e01c806370a08231116100b6578063a9059cbb1161007a578063a9059cbb146103a0578063af575a00146103d0578063c4224c1914610400578063dd62ed3e14610430578063e1a136d514610460578063fe229cbe1461049057610140565b806370a08231146102f657806384b0196e1461032657806395d89b411461034a5780639f284be714610368578063a0712d681461038457610140565b8063313ce56711610108578063313ce567146102105780635356c4291461022e5780635fd006b11461025e578063602772041461027a57806363c05a33146102aa5780636e0505e1146102da57610140565b806306fdde0314610144578063095ea7b31461016257806318160ddd1461019257806323b872dd146101b057806323db9354146101e0575b5f5ffd5b61014c6104c0565b6040516101599190612715565b60405180910390f35b61017c600480360381019061017791906127d3565b610550565b604051610189919061282b565b60405180910390f35b61019a610572565b6040516101a79190612853565b60405180910390f35b6101ca60048036038101906101c5919061286c565b61057b565b6040516101d7919061282b565b60405180910390f35b6101fa60048036038101906101f591906128bc565b6105a9565b6040516102079190612933565b60405180910390f35b61021861062b565b6040516102259190612967565b60405180910390f35b610248600480360381019061024391906129a2565b610633565b6040516102559190612a4e565b60405180910390f35b61027860048036038101906102739190612a8c565b61072d565b005b610294600480360381019061028f9190612ca3565b610743565b6040516102a19190612a4e565b60405180910390f35b6102c460048036038101906102bf9190612cfd565b61086a565b6040516102d1919061282b565b60405180910390f35b6102f460048036038101906102ef9190612d90565b610891565b005b610310600480360381019061030b9190612dbb565b6109ae565b60405161031d9190612853565b60405180910390f35b61032e6109f3565b6040516103419796959493929190612ef5565b60405180910390f35b610352610a98565b60405161035f9190612715565b60405180910390f35b610382600480360381019061037d9190612d90565b610b28565b005b61039e60048036038101906103999190612f77565b610c30565b005b6103ba60048036038101906103b591906127d3565b610c3d565b6040516103c7919061282b565b60405180910390f35b6103ea60048036038101906103e59190612fcc565b610c5f565b6040516103f79190612933565b60405180910390f35b61041a6004803603810190610415919061301c565b610c8a565b6040516104279190612933565b60405180910390f35b61044a600480360381019061044591906128bc565b610c9e565b6040516104579190612853565b60405180910390f35b61047a6004803603810190610475919061305a565b610d20565b6040516104879190612933565b60405180910390f35b6104aa60048036038101906104a59190612cfd565b610d5c565b6040516104b79190612933565b60405180910390f35b6060600380546104cf906130f3565b80601f01602080910402602001604051908101604052809291908181526020018280546104fb906130f3565b80156105465780601f1061051d57610100808354040283529160200191610546565b820191905f5260205f20905b81548152906001019060200180831161052957829003601f168201915b5050505050905090565b5f5f61055a610d80565b9050610567818585610d87565b600191505092915050565b5f600254905090565b5f5f610585610d80565b9050610592858285610d99565b61059d858585610e2c565b60019150509392505050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f6012905090565b60608161063f90613123565b5f6106947f6bdaeb2d29561f159c7ef98b16b27015fb2aeb87209c7ee656226d912f59927d835f0151604051602001610679929190613135565b60405160208183030381529060405280519060200120610f1c565b90505f6106a5828460200151610f35565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461070c576040517f3093a27700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61072261071933886105a9565b865f0135610f5f565b935050505092915050565b610740338261073b90613217565b610f90565b50565b606081835f61079c7f6bdaeb2d29561f159c7ef98b16b27015fb2aeb87209c7ee656226d912f59927d845f0151604051602001610781929190613135565b60405160208183030381529060405280519060200120610f1c565b90505f6107ad828560200151610f35565b90508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610814576040517f51c65eae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61085e60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054875f0151610f5f565b94505050505092915050565b5f61088733846108828561087d90613217565b61103b565b6110ae565b6001905092915050565b5f6108a18263ffffffff16611210565b90505f6108fd6108ee60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484611222565b6108f75f611210565b8461126b565b905061094660075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826112cd565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610993600954826112cd565b6009819055506109a9338463ffffffff16611316565b505050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f6060805f5f5f6060610a04611395565b610a0c6113d0565b46305f5f1b5f67ffffffffffffffff811115610a2b57610a2a612ad7565b5b604051908082528060200260200182016040528015610a595781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b606060048054610aa7906130f3565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad3906130f3565b8015610b1e5780601f10610af557610100808354040283529160200191610b1e565b820191905f5260205f20905b815481529060010190602001808311610b0157829003601f168201915b5050505050905090565b8063ffffffff16610b38336109ae565b1015610b70576040517ffda7bbda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b80338263ffffffff1661140b565b5f610b908263ffffffff16611210565b9050610bd960075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261148a565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610c266009548261148a565b6009819055505050565b610c3a3382611316565b50565b5f5f610c47610d80565b9050610c54818585610e2c565b600191505092915050565b5f5f8290505f610c708633846114d3565b9050610c7d86868361150e565b5080925050509392505050565b5f610c9633848461150e565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f5f610d3483610d2f90613217565b61103b565b90505f610d428633846114d3565b9050610d4f86868361150e565b5080925050509392505050565b5f610d7883610d7384610d6e90613217565b61103b565b610c8a565b905092915050565b5f33905090565b610d948383836001611686565b505050565b5f610da48484610c9e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015610e265781811015610e17578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610e0e93929190613229565b60405180910390fd5b610e2584848484035f611686565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e9c575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610e93919061325e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f0c575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610f03919061325e565b60405180910390fd5b610f17838383611855565b505050565b5f610f2e610f28611a6e565b83611b24565b9050919050565b5f5f5f5f610f438686611b64565b925092509250610f538282611bb9565b82935050505092915050565b60605f8390508083604051602001610f78929190613277565b60405160208183030381529060405291505092915050565b5f610f9a8261103b565b9050610fe360075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261148a565b60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506110306009548261148a565b600981905550505050565b5f5f600490508060ff16836040015160ff1614611095578260400151816040517f67cf307100000000000000000000000000000000000000000000000000000000815260040161108c92919061329e565b60405180910390fd5b6110a66110a184611d1b565b611d5d565b915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361111e575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611115919061325e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361118e575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611185919061325e565b60405180910390fd5b8060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f61121b825f611df4565b9050919050565b5f61122c83611e0e565b61123c576112395f611210565b92505b61124582611e0e565b611255576112525f611210565b91505b611263600484846015611e1f565b905092915050565b5f61127584611f0e565b611285576112825f611f1f565b93505b61128e83611e0e565b61129e5761129b5f611210565b92505b6112a782611e0e565b6112b7576112b45f611210565b91505b6112c46004858585611f31565b90509392505050565b5f6112d783611e0e565b6112e7576112e45f611210565b92505b6112f082611e0e565b611300576112fd5f611210565b91505b61130e600484846007611e1f565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611386575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161137d919061325e565b60405180910390fd5b6113915f8383611855565b5050565b60606113cb60057f000000000000000000000000000000000000000000000000000000000000000061202290919063ffffffff16565b905090565b606061140660067f000000000000000000000000000000000000000000000000000000000000000061202290919063ffffffff16565b905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361147b575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611472919061325e565b60405180910390fd5b611486825f83611855565b5050565b5f61149483611e0e565b6114a4576114a15f611210565b92505b6114ad82611e0e565b6114bd576114ba5f611210565b91505b6114cb600484846008611e1f565b905092915050565b5f5f6114df85856105a9565b90505f6114ec82856120cf565b905061150286866114fd85856112cd565b6110ae565b80925050509392505050565b5f5f61156961155a8460075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612118565b846115645f611210565b61126b565b90506115b260075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261148a565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061163a60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826112cd565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036116f6575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016116ed919061325e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611766575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161175d919061325e565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561184f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516118469190612853565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118a5578060025f82825461189991906132f2565b92505081905550611973565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561192e578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161192593929190613229565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119ba578060025f8282540392505081905550611a04565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a619190612853565b60405180910390a3505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148015611ae957507f000000000000000000000000000000000000000000000000000000000000000046145b15611b16577f00000000000000000000000000000000000000000000000000000000000000009050611b21565b611b1e612161565b90505b90565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f5f5f6041845103611ba4575f5f5f602087015192506040870151915060608701515f1a9050611b96888285856121f6565b955095509550505050611bb2565b5f600285515f1b9250925092505b9250925092565b5f6003811115611bcc57611bcb613325565b5b826003811115611bdf57611bde613325565b5b0315611d175760016003811115611bf957611bf8613325565b5b826003811115611c0c57611c0b613325565b5b03611c43576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115611c5757611c56613325565b5b826003811115611c6a57611c69613325565b5b03611cae57805f1c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401611ca59190612853565b60405180910390fd5b600380811115611cc157611cc0613325565b5b826003811115611cd457611cd3613325565b5b03611d1657806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401611d0d9190613352565b60405180910390fd5b5b5050565b611d2361267a565b6040518060800160405280835f01518152602001836020015160ff168152602001600460ff16815260200183606001518152509050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff166327f9c76283336040518363ffffffff1660e01b8152600401611dad929190613422565b6020604051808303815f875af1158015611dc9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ded9190613464565b9050919050565b5f5f611e02846004856122dd565b90508091505092915050565b5f611e18826123d8565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd8684611e5c88886123e4565b5f67ffffffffffffffff811115611e7657611e75612ad7565b5b604051908082528060200260200182016040528015611ea45781602001602082028036833780820191505090505b506040518563ffffffff1660e01b8152600401611ec494939291906134d5565b6020604051808303815f875af1158015611ee0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f049190613464565b9050949350505050565b5f611f18826123d8565b9050919050565b5f611f2a825f61247e565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd866004611f708888886124a7565b5f67ffffffffffffffff811115611f8a57611f89612ad7565b5b604051908082528060200260200182016040528015611fb85781602001602082028036833780820191505090505b506040518563ffffffff1660e01b8152600401611fd894939291906134d5565b6020604051808303815f875af1158015611ff4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120189190613464565b9050949350505050565b606060ff5f1b831461203e5761203783612563565b90506120c9565b81805461204a906130f3565b80601f0160208091040260200160405190810160405280929190818152602001828054612076906130f3565b80156120c15780601f10612098576101008083540402835291602001916120c1565b820191905f5260205f20905b8154815290600101906020018083116120a457829003601f168201915b505050505090505b92915050565b5f6120d983611e0e565b6120e9576120e65f611210565b92505b6120f282611e0e565b612102576120ff5f611210565b91505b612110600484846016611e1f565b905092915050565b5f61212283611e0e565b6121325761212f5f611210565b92505b61213b82611e0e565b61214b576121485f611210565b91505b612159600484846014611e1f565b905092915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000046306040516020016121db959493929190613526565b60405160208183030381529060405280519060200120905090565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115612232575f6003859250925092506122d3565b5f6001888888886040515f81526020016040526040516122559493929190613577565b6020604051602081039080840390855afa158015612275573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122c6575f60015f5f1b935093509350506122d3565b805f5f5f1b935093509350505b9450945094915050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff81111561232b5761232a612ad7565b5b6040519080825280602002602001820160405280156123595781602001602082028036833780820191505090505b50612370898960ff1661236b8a6125d5565b6124a7565b6040518563ffffffff1660e01b815260040161238f94939291906134d5565b6020604051808303815f875af11580156123ab573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123cf9190613464565b90509392505050565b5f5f8214159050919050565b60605f600267ffffffffffffffff81111561240257612401612ad7565b5b6040519080825280602002602001820160405280156124305781602001602082028036833780820191505090505b50905083815f81518110612447576124466135ba565b5b6020026020010181815250508281600181518110612468576124676135ba565b5b6020026020010181815250508091505092915050565b5f5f5f9050831561248e57600190505b5f61249a825f866122dd565b9050809250505092915050565b60605f600367ffffffffffffffff8111156124c5576124c4612ad7565b5b6040519080825280602002602001820160405280156124f35781602001602082028036833780820191505090505b50905084815f8151811061250a576125096135ba565b5b602002602001018181525050838160018151811061252b5761252a6135ba565b5b602002602001018181525050828160028151811061254c5761254b6135ba565b5b602002602001018181525050809150509392505050565b60605f61256f8361262c565b90505f602067ffffffffffffffff81111561258d5761258c612ad7565b5b6040519080825280601f01601f1916602001820160405280156125bf5781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f5f8260030b121561261e57816040517f8f568bf80000000000000000000000000000000000000000000000000000000081526004016126159190613602565b60405180910390fd5b8163ffffffff169050919050565b5f5f60ff835f1c169050601f811115612671576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b60405180608001604052805f81526020015f60ff1681526020015f60ff168152602001606081525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6126e7826126a5565b6126f181856126af565b93506127018185602086016126bf565b61270a816126cd565b840191505092915050565b5f6020820190508181035f83015261272d81846126dd565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61276f82612746565b9050919050565b61277f81612765565b8114612789575f5ffd5b50565b5f8135905061279a81612776565b92915050565b5f819050919050565b6127b2816127a0565b81146127bc575f5ffd5b50565b5f813590506127cd816127a9565b92915050565b5f5f604083850312156127e9576127e861273e565b5b5f6127f68582860161278c565b9250506020612807858286016127bf565b9150509250929050565b5f8115159050919050565b61282581612811565b82525050565b5f60208201905061283e5f83018461281c565b92915050565b61284d816127a0565b82525050565b5f6020820190506128665f830184612844565b92915050565b5f5f5f606084860312156128835761288261273e565b5b5f6128908682870161278c565b93505060206128a18682870161278c565b92505060406128b2868287016127bf565b9150509250925092565b5f5f604083850312156128d2576128d161273e565b5b5f6128df8582860161278c565b92505060206128f08582860161278c565b9150509250929050565b5f819050919050565b5f61291d612918612913846127a0565b6128fa565b6127a0565b9050919050565b61292d81612903565b82525050565b5f6020820190506129465f830184612924565b92915050565b5f60ff82169050919050565b6129618161294c565b82525050565b5f60208201905061297a5f830184612958565b92915050565b5f5ffd5b5f6040828403121561299957612998612980565b5b81905092915050565b5f5f604083850312156129b8576129b761273e565b5b5f6129c58582860161278c565b925050602083013567ffffffffffffffff8111156129e6576129e5612742565b5b6129f285828601612984565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f612a20826129fc565b612a2a8185612a06565b9350612a3a8185602086016126bf565b612a43816126cd565b840191505092915050565b5f6020820190508181035f830152612a668184612a16565b905092915050565b5f60808284031215612a8357612a82612980565b5b81905092915050565b5f60208284031215612aa157612aa061273e565b5b5f82013567ffffffffffffffff811115612abe57612abd612742565b5b612aca84828501612a6e565b91505092915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b0d826126cd565b810181811067ffffffffffffffff82111715612b2c57612b2b612ad7565b5b80604052505050565b5f612b3e612735565b9050612b4a8282612b04565b919050565b5f5ffd5b5f819050919050565b612b6581612b53565b8114612b6f575f5ffd5b50565b5f81359050612b8081612b5c565b92915050565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff821115612ba857612ba7612ad7565b5b612bb1826126cd565b9050602081019050919050565b828183375f83830152505050565b5f612bde612bd984612b8e565b612b35565b905082815260208101848484011115612bfa57612bf9612b8a565b5b612c05848285612bbe565b509392505050565b5f82601f830112612c2157612c20612b86565b5b8135612c31848260208601612bcc565b91505092915050565b5f60408284031215612c4f57612c4e612ad3565b5b612c596040612b35565b90505f612c6884828501612b72565b5f83015250602082013567ffffffffffffffff811115612c8b57612c8a612b4f565b5b612c9784828501612c0d565b60208301525092915050565b5f5f60408385031215612cb957612cb861273e565b5b5f612cc68582860161278c565b925050602083013567ffffffffffffffff811115612ce757612ce6612742565b5b612cf385828601612c3a565b9150509250929050565b5f5f60408385031215612d1357612d1261273e565b5b5f612d208582860161278c565b925050602083013567ffffffffffffffff811115612d4157612d40612742565b5b612d4d85828601612a6e565b9150509250929050565b5f63ffffffff82169050919050565b612d6f81612d57565b8114612d79575f5ffd5b50565b5f81359050612d8a81612d66565b92915050565b5f60208284031215612da557612da461273e565b5b5f612db284828501612d7c565b91505092915050565b5f60208284031215612dd057612dcf61273e565b5b5f612ddd8482850161278c565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b612e1a81612de6565b82525050565b612e2981612765565b82525050565b612e3881612b53565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612e70816127a0565b82525050565b5f612e818383612e67565b60208301905092915050565b5f602082019050919050565b5f612ea382612e3e565b612ead8185612e48565b9350612eb883612e58565b805f5b83811015612ee8578151612ecf8882612e76565b9750612eda83612e8d565b925050600181019050612ebb565b5085935050505092915050565b5f60e082019050612f085f83018a612e11565b8181036020830152612f1a81896126dd565b90508181036040830152612f2e81886126dd565b9050612f3d6060830187612844565b612f4a6080830186612e20565b612f5760a0830185612e2f565b81810360c0830152612f698184612e99565b905098975050505050505050565b5f60208284031215612f8c57612f8b61273e565b5b5f612f99848285016127bf565b91505092915050565b612fab816127a0565b8114612fb5575f5ffd5b50565b5f81359050612fc681612fa2565b92915050565b5f5f5f60608486031215612fe357612fe261273e565b5b5f612ff08682870161278c565b93505060206130018682870161278c565b925050604061301286828701612fb8565b9150509250925092565b5f5f604083850312156130325761303161273e565b5b5f61303f8582860161278c565b925050602061305085828601612fb8565b9150509250929050565b5f5f5f606084860312156130715761307061273e565b5b5f61307e8682870161278c565b935050602061308f8682870161278c565b925050604084013567ffffffffffffffff8111156130b0576130af612742565b5b6130bc86828701612a6e565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061310a57607f821691505b60208210810361311d5761311c6130c6565b5b50919050565b5f61312e3683612c3a565b9050919050565b5f6040820190506131485f830185612e2f565b6131556020830184612e2f565b9392505050565b6131658161294c565b811461316f575f5ffd5b50565b5f813590506131808161315c565b92915050565b5f6080828403121561319b5761319a612ad3565b5b6131a56080612b35565b90505f6131b4848285016127bf565b5f8301525060206131c784828501613172565b60208301525060406131db84828501613172565b604083015250606082013567ffffffffffffffff8111156131ff576131fe612b4f565b5b61320b84828501612c0d565b60608301525092915050565b5f6132223683613186565b9050919050565b5f60608201905061323c5f830186612e20565b6132496020830185612844565b6132566040830184612844565b949350505050565b5f6020820190506132715f830184612e20565b92915050565b5f60408201905061328a5f830185612844565b6132976020830184612e2f565b9392505050565b5f6040820190506132b15f830185612958565b6132be6020830184612958565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6132fc826127a0565b9150613307836127a0565b925082820190508082111561331f5761331e6132c5565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020820190506133655f830184612e2f565b92915050565b6133748161294c565b82525050565b5f82825260208201905092915050565b5f613394826129fc565b61339e818561337a565b93506133ae8185602086016126bf565b6133b7816126cd565b840191505092915050565b5f608083015f8301516133d75f860182612e67565b5060208301516133ea602086018261336b565b5060408301516133fd604086018261336b565b5060608301518482036060860152613415828261338a565b9150508091505092915050565b5f6040820190508181035f83015261343a81856133c2565b90506134496020830184612e20565b9392505050565b5f8151905061345e816127a9565b92915050565b5f602082840312156134795761347861273e565b5b5f61348684828501613450565b91505092915050565b602081106134a05761349f613325565b5b50565b5f8190506134b08261348f565b919050565b5f6134bf826134a3565b9050919050565b6134cf816134b5565b82525050565b5f6080820190506134e85f830187612958565b6134f560208301866134c6565b81810360408301526135078185612e99565b9050818103606083015261351b8184612e99565b905095945050505050565b5f60a0820190506135395f830188612e2f565b6135466020830187612e2f565b6135536040830186612e2f565b6135606060830185612844565b61356d6080830184612e20565b9695505050505050565b5f60808201905061358a5f830187612e2f565b6135976020830186612958565b6135a46040830185612e2f565b6135b16060830184612e2f565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160030b9050919050565b6135fc816135e7565b82525050565b5f6020820190506136155f8301846135f3565b9291505056fea264697066735822122063635d3620b6c934a29e8d063287ce7c6016de940d6ab89e687da95e0b5e9f7064736f6c634300081b0033","sourceMap":"440:5556:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89:17;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3902:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2803:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4680:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;939:147:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2688:82:17;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1091:267:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3996:124;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5362:235;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1364:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3405:500;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2933:116:17;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5228:557:26;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;1962:93:17;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2793:379:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3911:79;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3244:178:17;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2223:267:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4666:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3455:140:17;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2496:291:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4405:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1760:89:17;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3902:186::-;3975:4;3991:13;4007:12;:10;:12::i;:::-;3991:28;;4029:31;4038:5;4045:7;4054:5;4029:8;:31::i;:::-;4077:4;4070:11;;;3902:186;;;;:::o;2803:97::-;2855:7;2881:12;;2874:19;;2803:97;:::o;4680:244::-;4767:4;4783:15;4801:12;:10;:12::i;:::-;4783:30;;4823:37;4839:4;4845:7;4854:5;4823:15;:37::i;:::-;4870:26;4880:4;4886:2;4890:5;4870:9;:26::i;:::-;4913:4;4906:11;;;4680:244;;;;;:::o;939:147:4:-;1029:7;1055:8;:15;1064:5;1055:15;;;;;;;;;;;;;;;:24;1071:7;1055:24;;;;;;;;;;;;;;;;1048:31;;939:147;;;;:::o;2688:82:17:-;2737:5;2761:2;2754:9;;2688:82;:::o;1091:267:4:-;1242:12;1221:10;1147:385:12;;;:::i;:::-;1207:14;1224:141;1275:44;1333:10;:20;;;1251:112;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1241:123;;;;;;1224:16;:141::i;:::-;1207:158;;1375:14;1392:43;1406:6;1414:10;:20;;;1392:13;:43::i;:::-;1375:60;;1459:10;1449:20;;:6;:20;;;1445:69;;1490:24;;;;;;;;;;;;;;1445:69;1273:78:4::1;1288:40;1308:10;1320:7;1288:19;:40::i;:::-;1330:10;:20;;;1273:14;:78::i;:::-;1266:85;;1197:335:12::0;;1091:267:4;;;;;:::o;3996:124::-;4070:43;4085:10;4097:15;4070:43;;;:::i;:::-;:14;:43::i;:::-;3996:124;:::o;5362:235::-;5503:12;5479:4;5485:7;1915:14:12;1932:141;1983:44;2041:10;:20;;;1959:112;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1949:123;;;;;;1932:16;:141::i;:::-;1915:158;;2083:14;2100:43;2114:6;2122:10;:20;;;2100:13;:43::i;:::-;2083:60;;2167:5;2157:15;;:6;:15;;;2153:56;;2193:16;;;;;;;;;;;;;;2153:56;5534::4::1;5549:12;:24;5562:10;5549:24;;;;;;;;;;;;;;;;5575:4;:14;;;5534;:56::i;:::-;5527:63;;1905:322:12::0;;5362:235:4;;;;;;:::o;1364:186::-;1455:4;1471:51;1480:10;1492:7;1501:20;1515:5;1501:20;;;:::i;:::-;:13;:20::i;:::-;1471:8;:51::i;:::-;1539:4;1532:11;;1364:186;;;;:::o;3405:500::-;3453:17;3473:21;3487:6;3473:21;;:13;:21::i;:::-;3453:41;;3505:22;3530:84;3541:43;3548:12;:24;3561:10;3548:24;;;;;;;;;;;;;;;;3574:9;3541:6;:43::i;:::-;3586:16;3600:1;3586:13;:16::i;:::-;3604:9;3530:10;:84::i;:::-;3505:109;;3652:49;3660:12;:24;3673:10;3660:24;;;;;;;;;;;;;;;;3686:14;3652:7;:49::i;:::-;3625:12;:24;3638:10;3625:24;;;;;;;;;;;;;;;:76;;;;3734:45;3742:20;;3764:14;3734:7;:45::i;:::-;3711:20;:68;;;;3873:25;3879:10;3891:6;3873:25;;:5;:25::i;:::-;3443:462;;3405:500;:::o;2933:116:17:-;2998:7;3024:9;:18;3034:7;3024:18;;;;;;;;;;;;;;;;3017:25;;2933:116;;;:::o;5228:557:26:-;5326:13;5353:18;5385:21;5420:15;5449:25;5488:12;5514:27;5617:13;:11;:13::i;:::-;5644:16;:14;:16::i;:::-;5674:13;5709:4;5736:1;5728:10;;5766:1;5752:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5566:212;;;;;;;;;;;;;;;;;;;;;5228:557;;;;;;;:::o;1962:93:17:-;2009:13;2041:7;2034:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:93;:::o;2793:379:4:-;2867:6;2843:30;;:21;2853:10;2843:9;:21::i;:::-;:30;2839:92;;;2896:24;;;;;;;;;;;;;;2839:92;2941:25;2947:10;2959:6;2941:25;;:5;:25::i;:::-;2976:15;2994:21;3008:6;2994:21;;:13;:21::i;:::-;2976:39;;3052:42;3060:12;:24;3073:10;3060:24;;;;;;;;;;;;;;;;3086:7;3052;:42::i;:::-;3025:12;:24;3038:10;3025:24;;;;;;;;;;;;;;;:69;;;;3127:38;3135:20;;3157:7;3127;:38::i;:::-;3104:20;:61;;;;2829:343;2793:379;:::o;3911:79::-;3958:25;3964:10;3976:6;3958:5;:25::i;:::-;3911:79;:::o;3244:178:17:-;3313:4;3329:13;3345:12;:10;:12::i;:::-;3329:28;;3367:27;3377:5;3384:2;3388:5;3367:9;:27::i;:::-;3411:4;3404:11;;;3244:178;;;;:::o;2223:267:4:-;2319:7;2338:11;2352:5;2338:19;;2367:13;2383:38;2399:4;2405:10;2417:3;2383:15;:38::i;:::-;2367:54;;2431:30;2445:4;2451:2;2455:5;2431:13;:30::i;:::-;;2478:5;2471:12;;;;2223:267;;;;;:::o;4666:141::-;4737:7;4763:37;4777:10;4789:2;4793:6;4763:13;:37::i;:::-;4756:44;;4666:141;;;;:::o;3455:140:17:-;3535:7;3561:11;:18;3573:5;3561:18;;;;;;;;;;;;;;;:27;3580:7;3561:27;;;;;;;;;;;;;;;;3554:34;;3455:140;;;;:::o;2496:291:4:-;2601:7;2620:11;2634:20;2648:5;2634:20;;;:::i;:::-;:13;:20::i;:::-;2620:34;;2664:13;2680:38;2696:4;2702:10;2714:3;2680:15;:38::i;:::-;2664:54;;2728:30;2742:4;2748:2;2752:5;2728:13;:30::i;:::-;;2775:5;2768:12;;;;2496:291;;;;;:::o;4405:175::-;4494:7;4520:53;4538:2;4542:30;4556:15;4542:30;;;:::i;:::-;:13;:30::i;:::-;4520:17;:53::i;:::-;4513:60;;4405:175;;;;:::o;656:96:20:-;709:7;735:10;728:17;;656:96;:::o;8630:128:17:-;8714:37;8723:5;8730:7;8739:5;8746:4;8714:8;:37::i;:::-;8630:128;;;:::o;10319:476::-;10418:24;10445:25;10455:5;10462:7;10445:9;:25::i;:::-;10418:52;;10503:17;10484:16;:36;10480:309;;;10559:5;10540:16;:24;10536:130;;;10618:7;10627:16;10645:5;10591:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;10536:130;10707:57;10716:5;10723:7;10751:5;10732:16;:24;10758:5;10707:8;:57::i;:::-;10480:309;10408:387;10319:476;;;:::o;5297:300::-;5396:1;5380:18;;:4;:18;;;5376:86;;5448:1;5421:30;;;;;;;;;;;:::i;:::-;;;;;;;;5376:86;5489:1;5475:16;;:2;:16;;;5471:86;;5543:1;5514:32;;;;;;;;;;;:::i;:::-;;;;;;;;5471:86;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;:::-;5297:300;;;:::o;5017:176:26:-;5094:7;5120:66;5153:20;:18;:20::i;:::-;5175:10;5120:32;:66::i;:::-;5113:73;;5017:176;;;:::o;3714:255:25:-;3792:7;3812:17;3831:18;3851:16;3871:27;3882:4;3888:9;3871:10;:27::i;:::-;3811:87;;;;;;3908:28;3920:5;3927:8;3908:11;:28::i;:::-;3953:9;3946:16;;;;;3714:255;;;;:::o;154592:190:7:-;154670:12;154694;154724:5;154694:36;;154758:4;154764:10;154747:28;;;;;;;;;:::i;:::-;;;;;;;;;;;;;154740:35;;;154592:190;;;;:::o;4126:273:4:-;4213:14;4230:30;4244:15;4230:13;:30::i;:::-;4213:47;;4289:33;4297:12;:16;4310:2;4297:16;;;;;;;;;;;;;;;;4315:6;4289:7;:33::i;:::-;4270:12;:16;4283:2;4270:16;;;;;;;;;;;;;;;:52;;;;4355:37;4363:20;;4385:6;4355:7;:37::i;:::-;4332:20;:60;;;;4203:196;4126:273;;:::o;115527:335:7:-;115586:7;115605:19;7770:1:11;115605:40:7;;115674:13;115659:28;;:5;:11;;;:28;;;115655:115;;115732:5;:11;;;115745:13;115710:49;;;;;;;;;;;;:::i;:::-;;;;;;;;115655:115;115801:53;115824:29;115847:5;115824:22;:29::i;:::-;115801:22;:53::i;:::-;115781:74;;;115527:335;;;:::o;1556:320:4:-;1661:1;1644:19;;:5;:19;;;1640:89;;1715:1;1686:32;;;;;;;;;;;:::i;:::-;;;;;;;;1640:89;1761:1;1742:21;;:7;:21;;;1738:90;;1814:1;1786:31;;;;;;;;;;;:::i;:::-;;;;;;;;1738:90;1864:5;1837:8;:15;1846:5;1837:15;;;;;;;;;;;;;;;:24;1853:7;1837:24;;;;;;;;;;;;;;;:32;;;;1556:320;;;:::o;127894:104:7:-;127946:7;127972:19;127982:5;127989:1;127972:9;:19::i;:::-;127965:26;;127894:104;;;:::o;31097:336::-;31153:5;31175:12;31183:3;31175:7;:12::i;:::-;31170:62;;31209:12;31219:1;31209:9;:12::i;:::-;31203:18;;31170:62;31246:12;31254:3;31246:7;:12::i;:::-;31241:62;;31280:12;31290:1;31280:9;:12::i;:::-;31274:18;;31241:62;31331:94;7770:1:11;31384:3:7;31405;31411:13;31331:17;:94::i;:::-;31313:113;;31097:336;;;;:::o;98634:468::-;98714:7;98738:15;98746:6;98738:7;:15::i;:::-;98733:70;;98778:14;98786:5;98778:7;:14::i;:::-;98769:23;;98733:70;98817:15;98825:6;98817:7;:15::i;:::-;98812:68;;98857:12;98867:1;98857:9;:12::i;:::-;98848:21;;98812:68;98894:15;98902:6;98894:7;:15::i;:::-;98889:68;;98934:12;98944:1;98934:9;:12::i;:::-;98925:21;;98889:68;98987:107;7770:1:11;99038:6:7;99062;99086;98987:17;:107::i;:::-;98967:128;;98634:468;;;;;:::o;12990:342::-;13047:7;13071:12;13079:3;13071:7;:12::i;:::-;13066:62;;13105:12;13115:1;13105:9;:12::i;:::-;13099:18;;13066:62;13142:12;13150:3;13142:7;:12::i;:::-;13137:62;;13176:12;13186:1;13176:9;:12::i;:::-;13170:18;;13137:62;13229:95;7770:1:11;13282:3:7;13303;13309:14;13229:17;:95::i;:::-;13209:116;;12990:342;;;;:::o;7362:208:17:-;7451:1;7432:21;;:7;:21;;;7428:91;;7505:1;7476:32;;;;;;;;;;;:::i;:::-;;;;;;;;7428:91;7528:35;7544:1;7548:7;7557:5;7528:7;:35::i;:::-;7362:208;;:::o;6105:126:26:-;6151:13;6183:41;6210:13;6183:5;:26;;:41;;;;:::i;:::-;6176:48;;6105:126;:::o;6557:135::-;6606:13;6638:47;6668:16;6638:8;:29;;:47;;;;:::i;:::-;6631:54;;6557:135;:::o;7888:206:17:-;7977:1;7958:21;;:7;:21;;;7954:89;;8029:1;8002:30;;;;;;;;;;;:::i;:::-;;;;;;;;7954:89;8052:35;8060:7;8077:1;8081:5;8052:7;:35::i;:::-;7888:206;;:::o;5596:342:7:-;5653:7;5677:12;5685:3;5677:7;:12::i;:::-;5672:62;;5711:12;5721:1;5711:9;:12::i;:::-;5705:18;;5672:62;5748:12;5756:3;5748:7;:12::i;:::-;5743:62;;5782:12;5792:1;5782:9;:12::i;:::-;5776:18;;5743:62;5835:95;7770:1:11;5888:3:7;5909;5915:14;5835:17;:95::i;:::-;5815:116;;5596:342;;;;:::o;1882:335:4:-;1980:7;1999:24;2026:35;2046:5;2053:7;2026:19;:35::i;:::-;1999:62;;2071:13;2087:32;2095:16;2113:5;2087:7;:32::i;:::-;2071:48;;2129:58;2138:5;2145:7;2154:32;2162:16;2180:5;2154:7;:32::i;:::-;2129:8;:58::i;:::-;2205:5;2198:12;;;;1882:335;;;;;:::o;4851:505::-;4934:7;5004:20;5027:72;5038:34;5045:6;5053:12;:18;5066:4;5053:18;;;;;;;;;;;;;;;;5038:6;:34::i;:::-;5074:6;5082:16;5096:1;5082:13;:16::i;:::-;5027:10;:72::i;:::-;5004:95;;5208:39;5216:12;:16;5229:2;5216:16;;;;;;;;;;;;;;;;5234:12;5208:7;:39::i;:::-;5189:12;:16;5202:2;5189:16;;;;;;;;;;;;;;;:58;;;;5278:41;5286:12;:18;5299:4;5286:18;;;;;;;;;;;;;;;;5306:12;5278:7;:41::i;:::-;5257:12;:18;5270:4;5257:18;;;;;;;;;;;;;;;:62;;;;5337:12;5330:19;;;4851:505;;;;;:::o;9605:432:17:-;9734:1;9717:19;;:5;:19;;;9713:89;;9788:1;9759:32;;;;;;;;;;;:::i;:::-;;;;;;;;9713:89;9834:1;9815:21;;:7;:21;;;9811:90;;9887:1;9859:31;;;;;;;;;;;:::i;:::-;;;;;;;;9811:90;9940:5;9910:11;:18;9922:5;9910:18;;;;;;;;;;;;;;;:27;9929:7;9910:27;;;;;;;;;;;;;;;:35;;;;9959:9;9955:76;;;10005:7;9989:31;;9998:5;9989:31;;;10014:5;9989:31;;;;;;:::i;:::-;;;;;;;;9955:76;9605:432;;;;:::o;5912:1107::-;6017:1;6001:18;;:4;:18;;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;;;;;5997:540;;;6189:19;6211:9;:15;6221:4;6211:15;;;;;;;;;;;;;;;;6189:37;;6258:5;6244:11;:19;6240:115;;;6315:4;6321:11;6334:5;6290:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;6240:115;6507:5;6493:11;:19;6475:9;:15;6485:4;6475:15;;;;;;;;;;;;;;;:37;;;;6175:362;5997:540;6565:1;6551:16;;:2;:16;;;6547:425;;6730:5;6714:12;;:21;;;;;;;;;;;6547:425;;;6942:5;6925:9;:13;6935:2;6925:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;6547:425;7002:2;6987:25;;6996:4;6987:25;;;7006:5;6987:25;;;;;;:::i;:::-;;;;;;;;5912:1107;;;:::o;3945:262:26:-;3998:7;4038:11;4021:28;;4029:4;4021:28;;;:63;;;;;4070:14;4053:13;:31;4021:63;4017:184;;;4107:22;4100:29;;;;4017:184;4167:23;:21;:23::i;:::-;4160:30;;3945:262;;:::o;3874:374:27:-;3967:14;4049:4;4043:11;4079:10;4074:3;4067:23;4126:15;4119:4;4114:3;4110:14;4103:39;4178:10;4171:4;4166:3;4162:14;4155:34;4227:4;4222:3;4212:20;4202:30;;4018:224;3874:374;;;;:::o;2129:778:25:-;2232:17;2251:16;2269:14;2319:2;2299:9;:16;:22;2295:606;;2337:9;2360;2383:7;2604:4;2593:9;2589:20;2583:27;2578:32;;2653:4;2642:9;2638:20;2632:27;2627:32;;2710:4;2699:9;2695:20;2689:27;2686:1;2681:36;2676:41;;2751:25;2762:4;2768:1;2771;2774;2751:10;:25::i;:::-;2744:32;;;;;;;;;;;2295:606;2823:1;2827:35;2872:9;:16;2864:25;;2807:83;;;;;;2129:778;;;;;;:::o;7280:532::-;7375:20;7366:29;;;;;;;;:::i;:::-;;:5;:29;;;;;;;;:::i;:::-;;;7362:444;7411:7;7362:444;7471:29;7462:38;;;;;;;;:::i;:::-;;:5;:38;;;;;;;;:::i;:::-;;;7458:348;;7523:23;;;;;;;;;;;;;;7458:348;7576:35;7567:44;;;;;;;;:::i;:::-;;:5;:44;;;;;;;;:::i;:::-;;;7563:243;;7670:8;7662:17;;7634:46;;;;;;;;;;;:::i;:::-;;;;;;;;7563:243;7710:30;7701:39;;;;;;;;:::i;:::-;;:5;:39;;;;;;;;:::i;:::-;;;7697:109;;7786:8;7763:32;;;;;;;;;;;:::i;:::-;;;;;;;;7697:109;7280:532;;;:::o;10682:297:11:-;10753:21;;:::i;:::-;10793:179;;;;;;;;10830:5;:12;;;10793:179;;;;10870:5;:18;;;10793:179;;;;;;7770:1;10793:179;;;;;;10946:5;:15;;;10793:179;;;10786:186;;10682:297;;;:::o;5059:165:9:-;5127:7;745:42:10;5153:45:9;;;5199:5;5206:10;5153:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5146:71;;5059:165;;;:::o;128225:210:7:-;128297:7;128316:10;128329:66;128355:5;7770:1:11;128382:12:7;128329:25;:66::i;:::-;128316:79;;128425:2;128405:23;;;128225:210;;;;:::o;2075:110::-;2125:4;2140:42;2179:1;2140:23;:42::i;:::-;2133:49;;2075:110;;;:::o;2614:319:9:-;2715:7;745:42:10;2741:44:9;;;2799:10;2823;2847:39;2877:3;2882;2847:29;:39::i;:::-;2914:1;2900:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2741:185;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2734:192;;2614:319;;;;;;:::o;1736:106:7:-;1784:4;1799:40;1836:1;1799:23;:40::i;:::-;1792:47;;1736:106;;;:::o;125538:95::-;125585:5;125609:17;125617:5;125624:1;125609:7;:17::i;:::-;125602:24;;125538:95;;;:::o;1956:343:9:-;2058:7;745:42:10;2084:44:9;;;2142:10;2166:17;2197:55;2227:7;2236:6;2244:7;2197:29;:55::i;:::-;2280:1;2266:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:208;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2077:215;;1956:343;;;;;;:::o;3368:267:22:-;3462:13;1390:66;3520:17;;3510:5;3491:46;3487:142;;3560:15;3569:5;3560:8;:15::i;:::-;3553:22;;;;3487:142;3613:5;3606:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3368:267;;;;;:::o;62753:342:7:-;62810:7;62834:12;62842:3;62834:7;:12::i;:::-;62829:62;;62868:12;62878:1;62868:9;:12::i;:::-;62862:18;;62829:62;62905:12;62913:3;62905:7;:12::i;:::-;62900:62;;62939:12;62949:1;62939:9;:12::i;:::-;62933:18;;62900:62;62992:95;7770:1:11;63045:3:7;63066;63072:14;62992:17;:95::i;:::-;62972:116;;62753:342;;;;:::o;19770:336::-;19826:5;19848:12;19856:3;19848:7;:12::i;:::-;19843:62;;19882:12;19892:1;19882:9;:12::i;:::-;19876:18;;19843:62;19919:12;19927:3;19919:7;:12::i;:::-;19914:62;;19953:12;19963:1;19953:9;:12::i;:::-;19947:18;;19914:62;20004:94;7770:1:11;20057:3:7;20078;20084:13;20004:17;:94::i;:::-;19986:113;;19770:336;;;;:::o;4213:179:26:-;4268:7;2079:95;4326:11;4339:14;4355:13;4378:4;4304:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4294:91;;;;;;4287:98;;4213:179;:::o;5203:1551:25:-;5329:17;5348:16;5366:14;6283:66;6278:1;6270:10;;:79;6266:164;;;6381:1;6385:30;6417:1;6365:54;;;;;;;;6266:164;6524:14;6541:24;6551:4;6557:1;6560;6563;6541:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6524:41;;6597:1;6579:20;;:6;:20;;;6575:113;;6631:1;6635:29;6674:1;6666:10;;6615:62;;;;;;;;;6575:113;6706:6;6714:20;6744:1;6736:10;;6698:49;;;;;;;5203:1551;;;;;;;;;:::o;743:372:9:-;834:7;745:42:10;860:44:9;;;918:6;938:25;991:1;977:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1007:91;1037:5;1044:6;1007:91;;1052:45;1084:12;1052:31;:45::i;:::-;1007:29;:91::i;:::-;860:248;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;853:255;;743:372;;;;;:::o;1020:99:8:-;1080:4;1111:1;1103:4;:9;;1096:16;;1020:99;;;:::o;1440:240::-;1524:16;1552:23;1592:1;1578:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1552:42;;1616:6;1604;1611:1;1604:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1644:6;1632;1639:1;1632:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1667:6;1660:13;;;1440:240;;;;:::o;125941:277:7:-;126008:5;126025:12;126040:1;126025:16;;126055:5;126051:44;;;126083:1;126076:8;;126051:44;126104:10;126117:63;126143:4;8001:1:11;126167:12:7;126117:25;:63::i;:::-;126104:76;;126208:2;126190:21;;;;125941:277;;;;:::o;1745:284:8:-;1845:16;1873:23;1913:1;1899:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1873:42;;1937:6;1925;1932:1;1925:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1965:6;1953;1960:1;1953:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1993:6;1981;1988:1;1981:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;2016:6;2009:13;;;1745:284;;;;;:::o;2078:378:22:-;2137:13;2162:11;2176:16;2187:4;2176:10;:16::i;:::-;2162:30;;2280:17;2311:2;2300:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2280:34;;2375:3;2370;2363:16;2415:4;2408;2403:3;2399:14;2392:28;2446:3;2439:10;;;;2078:378;;;:::o;629:208:8:-;696:7;727:1;719:5;:9;;;715:77;;;775:5;751:30;;;;;;;;;;;:::i;:::-;;;;;;;;715:77;823:5;808:22;;801:29;;629:208;;;:::o;2528:245:22:-;2589:7;2608:14;2661:4;2652;2625:33;;:40;2608:57;;2688:2;2679:6;:11;2675:69;;;2713:20;;;;;;;;;;;;;;2675:69;2760:6;2753:13;;;2528:245;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:99:33:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:474::-;4384:6;4392;4441:2;4429:9;4420:7;4416:23;4412:32;4409:119;;;4447:79;;:::i;:::-;4409:119;4567:1;4592:53;4637:7;4628:6;4617:9;4613:22;4592:53;:::i;:::-;4582:63;;4538:117;4694:2;4720:53;4765:7;4756:6;4745:9;4741:22;4720:53;:::i;:::-;4710:63;;4665:118;4316:474;;;;;:::o;4796:60::-;4824:3;4845:5;4838:12;;4796:60;;;:::o;4862:142::-;4912:9;4945:53;4963:34;4972:24;4990:5;4972:24;:::i;:::-;4963:34;:::i;:::-;4945:53;:::i;:::-;4932:66;;4862:142;;;:::o;5010:159::-;5125:37;5156:5;5125:37;:::i;:::-;5120:3;5113:50;5010:159;;:::o;5175:278::-;5296:4;5334:2;5323:9;5319:18;5311:26;;5347:99;5443:1;5432:9;5428:17;5419:6;5347:99;:::i;:::-;5175:278;;;;:::o;5459:86::-;5494:7;5534:4;5527:5;5523:16;5512:27;;5459:86;;;:::o;5551:112::-;5634:22;5650:5;5634:22;:::i;:::-;5629:3;5622:35;5551:112;;:::o;5669:214::-;5758:4;5796:2;5785:9;5781:18;5773:26;;5809:67;5873:1;5862:9;5858:17;5849:6;5809:67;:::i;:::-;5669:214;;;;:::o;5889:117::-;5998:1;5995;5988:12;6037:235;6114:5;6155:2;6146:6;6141:3;6137:16;6133:25;6130:112;;;6161:79;;:::i;:::-;6130:112;6260:6;6251:15;;6037:235;;;;:::o;6278:696::-;6377:6;6385;6434:2;6422:9;6413:7;6409:23;6405:32;6402:119;;;6440:79;;:::i;:::-;6402:119;6560:1;6585:53;6630:7;6621:6;6610:9;6606:22;6585:53;:::i;:::-;6575:63;;6531:117;6715:2;6704:9;6700:18;6687:32;6746:18;6738:6;6735:30;6732:117;;;6768:79;;:::i;:::-;6732:117;6873:84;6949:7;6940:6;6929:9;6925:22;6873:84;:::i;:::-;6863:94;;6658:309;6278:696;;;;;:::o;6980:98::-;7031:6;7065:5;7059:12;7049:22;;6980:98;;;:::o;7084:168::-;7167:11;7201:6;7196:3;7189:19;7241:4;7236:3;7232:14;7217:29;;7084:168;;;;:::o;7258:373::-;7344:3;7372:38;7404:5;7372:38;:::i;:::-;7426:70;7489:6;7484:3;7426:70;:::i;:::-;7419:77;;7505:65;7563:6;7558:3;7551:4;7544:5;7540:16;7505:65;:::i;:::-;7595:29;7617:6;7595:29;:::i;:::-;7590:3;7586:39;7579:46;;7348:283;7258:373;;;;:::o;7637:309::-;7748:4;7786:2;7775:9;7771:18;7763:26;;7835:9;7829:4;7825:20;7821:1;7810:9;7806:17;7799:47;7863:76;7934:4;7925:6;7863:76;:::i;:::-;7855:84;;7637:309;;;;:::o;7974:233::-;8048:5;8089:3;8080:6;8075:3;8071:16;8067:26;8064:113;;;8096:79;;:::i;:::-;8064:113;8195:6;8186:15;;7974:233;;;;:::o;8213:545::-;8300:6;8349:2;8337:9;8328:7;8324:23;8320:32;8317:119;;;8355:79;;:::i;:::-;8317:119;8503:1;8492:9;8488:17;8475:31;8533:18;8525:6;8522:30;8519:117;;;8555:79;;:::i;:::-;8519:117;8660:81;8733:7;8724:6;8713:9;8709:22;8660:81;:::i;:::-;8650:91;;8446:305;8213:545;;;;:::o;8764:117::-;8873:1;8870;8863:12;8887:180;8935:77;8932:1;8925:88;9032:4;9029:1;9022:15;9056:4;9053:1;9046:15;9073:281;9156:27;9178:4;9156:27;:::i;:::-;9148:6;9144:40;9286:6;9274:10;9271:22;9250:18;9238:10;9235:34;9232:62;9229:88;;;9297:18;;:::i;:::-;9229:88;9337:10;9333:2;9326:22;9116:238;9073:281;;:::o;9360:129::-;9394:6;9421:20;;:::i;:::-;9411:30;;9450:33;9478:4;9470:6;9450:33;:::i;:::-;9360:129;;;:::o;9495:117::-;9604:1;9601;9594:12;9618:77;9655:7;9684:5;9673:16;;9618:77;;;:::o;9701:122::-;9774:24;9792:5;9774:24;:::i;:::-;9767:5;9764:35;9754:63;;9813:1;9810;9803:12;9754:63;9701:122;:::o;9829:139::-;9875:5;9913:6;9900:20;9891:29;;9929:33;9956:5;9929:33;:::i;:::-;9829:139;;;;:::o;9974:117::-;10083:1;10080;10073:12;10097:117;10206:1;10203;10196:12;10220:307;10281:4;10371:18;10363:6;10360:30;10357:56;;;10393:18;;:::i;:::-;10357:56;10431:29;10453:6;10431:29;:::i;:::-;10423:37;;10515:4;10509;10505:15;10497:23;;10220:307;;;:::o;10533:148::-;10631:6;10626:3;10621;10608:30;10672:1;10663:6;10658:3;10654:16;10647:27;10533:148;;;:::o;10687:423::-;10764:5;10789:65;10805:48;10846:6;10805:48;:::i;:::-;10789:65;:::i;:::-;10780:74;;10877:6;10870:5;10863:21;10915:4;10908:5;10904:16;10953:3;10944:6;10939:3;10935:16;10932:25;10929:112;;;10960:79;;:::i;:::-;10929:112;11050:54;11097:6;11092:3;11087;11050:54;:::i;:::-;10770:340;10687:423;;;;;:::o;11129:338::-;11184:5;11233:3;11226:4;11218:6;11214:17;11210:27;11200:122;;11241:79;;:::i;:::-;11200:122;11358:6;11345:20;11383:78;11457:3;11449:6;11442:4;11434:6;11430:17;11383:78;:::i;:::-;11374:87;;11190:277;11129:338;;;;:::o;11498:757::-;11576:5;11620:4;11608:9;11603:3;11599:19;11595:30;11592:117;;;11628:79;;:::i;:::-;11592:117;11727:21;11743:4;11727:21;:::i;:::-;11718:30;;11812:1;11852:49;11897:3;11888:6;11877:9;11873:22;11852:49;:::i;:::-;11845:4;11838:5;11834:16;11827:75;11758:155;12005:2;11994:9;11990:18;11977:32;12036:18;12028:6;12025:30;12022:117;;;12058:79;;:::i;:::-;12022:117;12178:58;12232:3;12223:6;12212:9;12208:22;12178:58;:::i;:::-;12171:4;12164:5;12160:16;12153:84;11923:325;11498:757;;;;:::o;12261:692::-;12358:6;12366;12415:2;12403:9;12394:7;12390:23;12386:32;12383:119;;;12421:79;;:::i;:::-;12383:119;12541:1;12566:53;12611:7;12602:6;12591:9;12587:22;12566:53;:::i;:::-;12556:63;;12512:117;12696:2;12685:9;12681:18;12668:32;12727:18;12719:6;12716:30;12713:117;;;12749:79;;:::i;:::-;12713:117;12854:82;12928:7;12919:6;12908:9;12904:22;12854:82;:::i;:::-;12844:92;;12639:307;12261:692;;;;;:::o;12959:690::-;13055:6;13063;13112:2;13100:9;13091:7;13087:23;13083:32;13080:119;;;13118:79;;:::i;:::-;13080:119;13238:1;13263:53;13308:7;13299:6;13288:9;13284:22;13263:53;:::i;:::-;13253:63;;13209:117;13393:2;13382:9;13378:18;13365:32;13424:18;13416:6;13413:30;13410:117;;;13446:79;;:::i;:::-;13410:117;13551:81;13624:7;13615:6;13604:9;13600:22;13551:81;:::i;:::-;13541:91;;13336:306;12959:690;;;;;:::o;13655:93::-;13691:7;13731:10;13724:5;13720:22;13709:33;;13655:93;;;:::o;13754:120::-;13826:23;13843:5;13826:23;:::i;:::-;13819:5;13816:34;13806:62;;13864:1;13861;13854:12;13806:62;13754:120;:::o;13880:137::-;13925:5;13963:6;13950:20;13941:29;;13979:32;14005:5;13979:32;:::i;:::-;13880:137;;;;:::o;14023:327::-;14081:6;14130:2;14118:9;14109:7;14105:23;14101:32;14098:119;;;14136:79;;:::i;:::-;14098:119;14256:1;14281:52;14325:7;14316:6;14305:9;14301:22;14281:52;:::i;:::-;14271:62;;14227:116;14023:327;;;;:::o;14356:329::-;14415:6;14464:2;14452:9;14443:7;14439:23;14435:32;14432:119;;;14470:79;;:::i;:::-;14432:119;14590:1;14615:53;14660:7;14651:6;14640:9;14636:22;14615:53;:::i;:::-;14605:63;;14561:117;14356:329;;;;:::o;14691:149::-;14727:7;14767:66;14760:5;14756:78;14745:89;;14691:149;;;:::o;14846:115::-;14931:23;14948:5;14931:23;:::i;:::-;14926:3;14919:36;14846:115;;:::o;14967:118::-;15054:24;15072:5;15054:24;:::i;:::-;15049:3;15042:37;14967:118;;:::o;15091:::-;15178:24;15196:5;15178:24;:::i;:::-;15173:3;15166:37;15091:118;;:::o;15215:114::-;15282:6;15316:5;15310:12;15300:22;;15215:114;;;:::o;15335:184::-;15434:11;15468:6;15463:3;15456:19;15508:4;15503:3;15499:14;15484:29;;15335:184;;;;:::o;15525:132::-;15592:4;15615:3;15607:11;;15645:4;15640:3;15636:14;15628:22;;15525:132;;;:::o;15663:108::-;15740:24;15758:5;15740:24;:::i;:::-;15735:3;15728:37;15663:108;;:::o;15777:179::-;15846:10;15867:46;15909:3;15901:6;15867:46;:::i;:::-;15945:4;15940:3;15936:14;15922:28;;15777:179;;;;:::o;15962:113::-;16032:4;16064;16059:3;16055:14;16047:22;;15962:113;;;:::o;16111:732::-;16230:3;16259:54;16307:5;16259:54;:::i;:::-;16329:86;16408:6;16403:3;16329:86;:::i;:::-;16322:93;;16439:56;16489:5;16439:56;:::i;:::-;16518:7;16549:1;16534:284;16559:6;16556:1;16553:13;16534:284;;;16635:6;16629:13;16662:63;16721:3;16706:13;16662:63;:::i;:::-;16655:70;;16748:60;16801:6;16748:60;:::i;:::-;16738:70;;16594:224;16581:1;16578;16574:9;16569:14;;16534:284;;;16538:14;16834:3;16827:10;;16235:608;;;16111:732;;;;:::o;16849:1215::-;17198:4;17236:3;17225:9;17221:19;17213:27;;17250:69;17316:1;17305:9;17301:17;17292:6;17250:69;:::i;:::-;17366:9;17360:4;17356:20;17351:2;17340:9;17336:18;17329:48;17394:78;17467:4;17458:6;17394:78;:::i;:::-;17386:86;;17519:9;17513:4;17509:20;17504:2;17493:9;17489:18;17482:48;17547:78;17620:4;17611:6;17547:78;:::i;:::-;17539:86;;17635:72;17703:2;17692:9;17688:18;17679:6;17635:72;:::i;:::-;17717:73;17785:3;17774:9;17770:19;17761:6;17717:73;:::i;:::-;17800;17868:3;17857:9;17853:19;17844:6;17800:73;:::i;:::-;17921:9;17915:4;17911:20;17905:3;17894:9;17890:19;17883:49;17949:108;18052:4;18043:6;17949:108;:::i;:::-;17941:116;;16849:1215;;;;;;;;;;:::o;18070:329::-;18129:6;18178:2;18166:9;18157:7;18153:23;18149:32;18146:119;;;18184:79;;:::i;:::-;18146:119;18304:1;18329:53;18374:7;18365:6;18354:9;18350:22;18329:53;:::i;:::-;18319:63;;18275:117;18070:329;;;;:::o;18405:150::-;18506:24;18524:5;18506:24;:::i;:::-;18499:5;18496:35;18486:63;;18545:1;18542;18535:12;18486:63;18405:150;:::o;18561:195::-;18635:5;18673:6;18660:20;18651:29;;18689:61;18744:5;18689:61;:::i;:::-;18561:195;;;;:::o;18762:675::-;18867:6;18875;18883;18932:2;18920:9;18911:7;18907:23;18903:32;18900:119;;;18938:79;;:::i;:::-;18900:119;19058:1;19083:53;19128:7;19119:6;19108:9;19104:22;19083:53;:::i;:::-;19073:63;;19029:117;19185:2;19211:53;19256:7;19247:6;19236:9;19232:22;19211:53;:::i;:::-;19201:63;;19156:118;19313:2;19339:81;19412:7;19403:6;19392:9;19388:22;19339:81;:::i;:::-;19329:91;;19284:146;18762:675;;;;;:::o;19443:530::-;19539:6;19547;19596:2;19584:9;19575:7;19571:23;19567:32;19564:119;;;19602:79;;:::i;:::-;19564:119;19722:1;19747:53;19792:7;19783:6;19772:9;19768:22;19747:53;:::i;:::-;19737:63;;19693:117;19849:2;19875:81;19948:7;19939:6;19928:9;19924:22;19875:81;:::i;:::-;19865:91;;19820:146;19443:530;;;;;:::o;19979:835::-;20084:6;20092;20100;20149:2;20137:9;20128:7;20124:23;20120:32;20117:119;;;20155:79;;:::i;:::-;20117:119;20275:1;20300:53;20345:7;20336:6;20325:9;20321:22;20300:53;:::i;:::-;20290:63;;20246:117;20402:2;20428:53;20473:7;20464:6;20453:9;20449:22;20428:53;:::i;:::-;20418:63;;20373:118;20558:2;20547:9;20543:18;20530:32;20589:18;20581:6;20578:30;20575:117;;;20611:79;;:::i;:::-;20575:117;20716:81;20789:7;20780:6;20769:9;20765:22;20716:81;:::i;:::-;20706:91;;20501:306;19979:835;;;;;:::o;20820:180::-;20868:77;20865:1;20858:88;20965:4;20962:1;20955:15;20989:4;20986:1;20979:15;21006:320;21050:6;21087:1;21081:4;21077:12;21067:22;;21134:1;21128:4;21124:12;21155:18;21145:81;;21211:4;21203:6;21199:17;21189:27;;21145:81;21273:2;21265:6;21262:14;21242:18;21239:38;21236:84;;21292:18;;:::i;:::-;21236:84;21057:269;21006:320;;;:::o;21332:223::-;21442:9;21476:72;21533:14;21526:5;21476:72;:::i;:::-;21463:85;;21332:223;;;:::o;21561:332::-;21682:4;21720:2;21709:9;21705:18;21697:26;;21733:71;21801:1;21790:9;21786:17;21777:6;21733:71;:::i;:::-;21814:72;21882:2;21871:9;21867:18;21858:6;21814:72;:::i;:::-;21561:332;;;;;:::o;21899:118::-;21970:22;21986:5;21970:22;:::i;:::-;21963:5;21960:33;21950:61;;22007:1;22004;21997:12;21950:61;21899:118;:::o;22023:135::-;22067:5;22105:6;22092:20;22083:29;;22121:31;22146:5;22121:31;:::i;:::-;22023:135;;;;:::o;22186:1078::-;22261:5;22305:4;22293:9;22288:3;22284:19;22280:30;22277:117;;;22313:79;;:::i;:::-;22277:117;22412:21;22428:4;22412:21;:::i;:::-;22403:30;;22494:1;22534:49;22579:3;22570:6;22559:9;22555:22;22534:49;:::i;:::-;22527:4;22520:5;22516:16;22509:75;22443:152;22662:2;22703:47;22746:3;22737:6;22726:9;22722:22;22703:47;:::i;:::-;22696:4;22689:5;22685:16;22678:73;22605:157;22822:2;22863:47;22906:3;22897:6;22886:9;22882:22;22863:47;:::i;:::-;22856:4;22849:5;22845:16;22838:73;22772:150;23014:2;23003:9;22999:18;22986:32;23045:18;23037:6;23034:30;23031:117;;;23067:79;;:::i;:::-;23031:117;23187:58;23241:3;23232:6;23221:9;23217:22;23187:58;:::i;:::-;23180:4;23173:5;23169:16;23162:84;22932:325;22186:1078;;;;:::o;23270:214::-;23374:9;23408:69;23462:14;23455:5;23408:69;:::i;:::-;23395:82;;23270:214;;;:::o;23490:442::-;23639:4;23677:2;23666:9;23662:18;23654:26;;23690:71;23758:1;23747:9;23743:17;23734:6;23690:71;:::i;:::-;23771:72;23839:2;23828:9;23824:18;23815:6;23771:72;:::i;:::-;23853;23921:2;23910:9;23906:18;23897:6;23853:72;:::i;:::-;23490:442;;;;;;:::o;23938:222::-;24031:4;24069:2;24058:9;24054:18;24046:26;;24082:71;24150:1;24139:9;24135:17;24126:6;24082:71;:::i;:::-;23938:222;;;;:::o;24166:332::-;24287:4;24325:2;24314:9;24310:18;24302:26;;24338:71;24406:1;24395:9;24391:17;24382:6;24338:71;:::i;:::-;24419:72;24487:2;24476:9;24472:18;24463:6;24419:72;:::i;:::-;24166:332;;;;;:::o;24504:316::-;24617:4;24655:2;24644:9;24640:18;24632:26;;24668:67;24732:1;24721:9;24717:17;24708:6;24668:67;:::i;:::-;24745:68;24809:2;24798:9;24794:18;24785:6;24745:68;:::i;:::-;24504:316;;;;;:::o;24826:180::-;24874:77;24871:1;24864:88;24971:4;24968:1;24961:15;24995:4;24992:1;24985:15;25012:191;25052:3;25071:20;25089:1;25071:20;:::i;:::-;25066:25;;25105:20;25123:1;25105:20;:::i;:::-;25100:25;;25148:1;25145;25141:9;25134:16;;25169:3;25166:1;25163:10;25160:36;;;25176:18;;:::i;:::-;25160:36;25012:191;;;;:::o;25209:180::-;25257:77;25254:1;25247:88;25354:4;25351:1;25344:15;25378:4;25375:1;25368:15;25395:222;25488:4;25526:2;25515:9;25511:18;25503:26;;25539:71;25607:1;25596:9;25592:17;25583:6;25539:71;:::i;:::-;25395:222;;;;:::o;25623:102::-;25696:22;25712:5;25696:22;:::i;:::-;25691:3;25684:35;25623:102;;:::o;25731:158::-;25804:11;25838:6;25833:3;25826:19;25878:4;25873:3;25869:14;25854:29;;25731:158;;;;:::o;25895:353::-;25971:3;25999:38;26031:5;25999:38;:::i;:::-;26053:60;26106:6;26101:3;26053:60;:::i;:::-;26046:67;;26122:65;26180:6;26175:3;26168:4;26161:5;26157:16;26122:65;:::i;:::-;26212:29;26234:6;26212:29;:::i;:::-;26207:3;26203:39;26196:46;;25975:273;25895:353;;;;:::o;26308:976::-;26443:3;26479:4;26474:3;26470:14;26568:4;26561:5;26557:16;26551:23;26587:63;26644:4;26639:3;26635:14;26621:12;26587:63;:::i;:::-;26494:166;26750:4;26743:5;26739:16;26733:23;26769:59;26822:4;26817:3;26813:14;26799:12;26769:59;:::i;:::-;26670:168;26921:4;26914:5;26910:16;26904:23;26940:59;26993:4;26988:3;26984:14;26970:12;26940:59;:::i;:::-;26848:161;27096:4;27089:5;27085:16;27079:23;27149:3;27143:4;27139:14;27132:4;27127:3;27123:14;27116:38;27175:71;27241:4;27227:12;27175:71;:::i;:::-;27167:79;;27019:238;27274:4;27267:11;;26448:836;26308:976;;;;:::o;27290:515::-;27477:4;27515:2;27504:9;27500:18;27492:26;;27564:9;27558:4;27554:20;27550:1;27539:9;27535:17;27528:47;27592:124;27711:4;27702:6;27592:124;:::i;:::-;27584:132;;27726:72;27794:2;27783:9;27779:18;27770:6;27726:72;:::i;:::-;27290:515;;;;;:::o;27811:143::-;27868:5;27899:6;27893:13;27884:22;;27915:33;27942:5;27915:33;:::i;:::-;27811:143;;;;:::o;27960:351::-;28030:6;28079:2;28067:9;28058:7;28054:23;28050:32;28047:119;;;28085:79;;:::i;:::-;28047:119;28205:1;28230:64;28286:7;28277:6;28266:9;28262:22;28230:64;:::i;:::-;28220:74;;28176:128;27960:351;;;;:::o;28317:122::-;28406:2;28399:5;28396:13;28386:47;;28413:18;;:::i;:::-;28386:47;28317:122;:::o;28445:143::-;28498:7;28527:5;28516:16;;28533:49;28576:5;28533:49;:::i;:::-;28445:143;;;:::o;28594:::-;28658:9;28691:40;28725:5;28691:40;:::i;:::-;28678:53;;28594:143;;;:::o;28743:159::-;28844:51;28889:5;28844:51;:::i;:::-;28839:3;28832:64;28743:159;;:::o;28908:875::-;29195:4;29233:3;29222:9;29218:19;29210:27;;29247:67;29311:1;29300:9;29296:17;29287:6;29247:67;:::i;:::-;29324:86;29406:2;29395:9;29391:18;29382:6;29324:86;:::i;:::-;29457:9;29451:4;29447:20;29442:2;29431:9;29427:18;29420:48;29485:108;29588:4;29579:6;29485:108;:::i;:::-;29477:116;;29640:9;29634:4;29630:20;29625:2;29614:9;29610:18;29603:48;29668:108;29771:4;29762:6;29668:108;:::i;:::-;29660:116;;28908:875;;;;;;;:::o;29789:664::-;29994:4;30032:3;30021:9;30017:19;30009:27;;30046:71;30114:1;30103:9;30099:17;30090:6;30046:71;:::i;:::-;30127:72;30195:2;30184:9;30180:18;30171:6;30127:72;:::i;:::-;30209;30277:2;30266:9;30262:18;30253:6;30209:72;:::i;:::-;30291;30359:2;30348:9;30344:18;30335:6;30291:72;:::i;:::-;30373:73;30441:3;30430:9;30426:19;30417:6;30373:73;:::i;:::-;29789:664;;;;;;;;:::o;30459:545::-;30632:4;30670:3;30659:9;30655:19;30647:27;;30684:71;30752:1;30741:9;30737:17;30728:6;30684:71;:::i;:::-;30765:68;30829:2;30818:9;30814:18;30805:6;30765:68;:::i;:::-;30843:72;30911:2;30900:9;30896:18;30887:6;30843:72;:::i;:::-;30925;30993:2;30982:9;30978:18;30969:6;30925:72;:::i;:::-;30459:545;;;;;;;:::o;31010:180::-;31058:77;31055:1;31048:88;31155:4;31152:1;31145:15;31179:4;31176:1;31169:15;31196:90;31231:7;31274:5;31271:1;31260:20;31249:31;;31196:90;;;:::o;31292:112::-;31375:22;31391:5;31375:22;:::i;:::-;31370:3;31363:35;31292:112;;:::o;31410:214::-;31499:4;31537:2;31526:9;31522:18;31514:26;;31550:67;31614:1;31603:9;31599:17;31590:6;31550:67;:::i;:::-;31410:214;;;;:::o","linkReferences":{},"immutableReferences":{"23012":[{"start":6896,"length":32}],"23014":[{"start":6855,"length":32}],"23016":[{"start":6769,"length":32}],"23018":[{"start":8581,"length":32}],"23020":[{"start":8614,"length":32}],"23023":[{"start":5022,"length":32}],"23026":[{"start":5081,"length":32}]}},"methodIdentifiers":{"_allowanceEncrypted(address,address)":"23db9354","allowance(address,address)":"dd62ed3e","allowanceEncrypted(address,(bytes32,bytes))":"5356c429","approve(address,uint256)":"095ea7b3","approveEncrypted(address,(uint256,uint8,uint8,bytes))":"63c05a33","balanceOf(address)":"70a08231","balanceOfEncrypted(address,(bytes32,bytes))":"60277204","decimals()":"313ce567","eip712Domain()":"84b0196e","mint(uint256)":"a0712d68","mintEncrypted((uint256,uint8,uint8,bytes))":"5fd006b1","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferEncrypted(address,(uint256,uint8,uint8,bytes))":"fe229cbe","transferEncrypted(address,uint256)":"c4224c19","transferFrom(address,address,uint256)":"23b872dd","transferFromEncrypted(address,address,(uint256,uint8,uint8,bytes))":"e1a136d5","transferFromEncrypted(address,address,uint256)":"af575a00","unwrap(uint32)":"6e0505e1","wrap(uint32)":"9f284be7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ErrorInsufficientFunds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"got\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"expected\",\"type\":\"uint8\"}],\"name\":\"InvalidEncryptedInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"value\",\"type\":\"int32\"}],\"name\":\"SecurityZoneOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignerNotMessageSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignerNotOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ApprovalEncrypted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"TransferEncrypted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"_allowanceEncrypted\",\"outputs\":[{\"internalType\":\"euint32\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"publicKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Permission\",\"name\":\"permission\",\"type\":\"tuple\"}],\"name\":\"allowanceEncrypted\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint32\",\"name\":\"value\",\"type\":\"tuple\"}],\"name\":\"approveEncrypted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"publicKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Permission\",\"name\":\"auth\",\"type\":\"tuple\"}],\"name\":\"balanceOfEncrypted\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint32\",\"name\":\"encryptedAmount\",\"type\":\"tuple\"}],\"name\":\"mintEncrypted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"euint32\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferEncrypted\",\"outputs\":[{\"internalType\":\"euint32\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint32\",\"name\":\"encryptedAmount\",\"type\":\"tuple\"}],\"name\":\"transferEncrypted\",\"outputs\":[{\"internalType\":\"euint32\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"euint32\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFromEncrypted\",\"outputs\":[{\"internalType\":\"euint32\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint32\",\"name\":\"value\",\"type\":\"tuple\"}],\"name\":\"transferFromEncrypted\",\"outputs\":[{\"internalType\":\"euint32\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"amount\",\"type\":\"uint32\"}],\"name\":\"unwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"amount\",\"type\":\"uint32\"}],\"name\":\"wrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"ApprovalEncrypted(address,address)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approveEncrypted}. `value` is the new allowance.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"TransferEncrypted(address,address)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"allowanceEncrypted(address,(bytes32,bytes))\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"approveEncrypted(address,(uint256,uint8,uint8,bytes))\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {ApprovalEncrypted} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"balanceOfEncrypted(address,(bytes32,bytes))\":{\"details\":\"Returns the value of tokens owned by `account`, sealed and encrypted for the caller.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferFromEncrypted(address,address,(uint256,uint8,uint8,bytes))\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {TransferEncrypted} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"SignerNotMessageSender()\":[{\"notice\":\"Emitted when the signer is not the message sender\"}],\"SignerNotOwner()\":[{\"notice\":\"Emitted when the signer is not the specified owner\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/FHERC20.sol\":\"FHERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@luxfi/contracts/=node_modules/@luxfi/contracts/\",\":@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/FHERC20.sol\":{\"keccak256\":\"0xbff20d2472dcec67d365f7493bea9ffb826740e553a666e9f27f9b23027664e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://024750634990a0633884b7635d825bff7c6a10b8c14351fe7cc8bc77d1d44511\",\"dweb:/ipfs/QmQPBXkp6ee6pCCVoBKG1FA1e8ag8SZkC1qZByRcMm6jxo\"]},\"contracts/IFHERC20.sol\":{\"keccak256\":\"0xba86640a1ce6a17599d0f65536b5600ed432e6ee755ec504277b032df7631d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1deb54a9a932cce6e42af436d5edfee2f48f0521b16500698dc8ce798f33c8a5\",\"dweb:/ipfs/Qma1PLcxBNv4drQUF5i9JaExoC2S3wZvYrfYop8oT5e9qF\"]},\"node_modules/@luxfi/contracts/fhe/FHE.sol\":{\"keccak256\":\"0xa23998a8d39f62962df308163685e1efd5120e2204b74e20188e6144123d5424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c031db6aa4df5d66a45f07a789eece0675d8c8ecf87f34cdf6f1641cd750a6e9\",\"dweb:/ipfs/QmWJvZjkPAo8VrPpFQGCvvt4yqiX3tRLBFteYHj2qMtTqn\"]},\"node_modules/@luxfi/contracts/fhe/FHECommon.sol\":{\"keccak256\":\"0xb6e8e21a662629948f1b7ed86b847876f2f91059f35747a704a3ef0cd8d29c01\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76a878fa2af0597bdd79c85eb13736c6cc31137cb3da5f70d2512dc29b61d37\",\"dweb:/ipfs/QmXaaPiZkcDbZhqoW87mXuHgsvuXZfwxkrx48WMUBjhVFY\"]},\"node_modules/@luxfi/contracts/fhe/FHENetwork.sol\":{\"keccak256\":\"0x942a1bdad358f6e410e9713069e03876ee17434ae262fc725d6ccc978fdff337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://888d85d302d90b4b0ad8ca529c27b0fec8aabcb46aedc4b314bc506a1b80682f\",\"dweb:/ipfs/QmTMWn1dF96KxZyNrpDUFDjafFqN2x9eDhcSpAWUqJhwbF\"]},\"node_modules/@luxfi/contracts/fhe/FHETypes.sol\":{\"keccak256\":\"0xc011b88033bd7ea040641926afd5a6df60180bb180d5fd46f835f127223cd445\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://838082044b5750417ba392770fd03b22c1709db6da79ce1572fecbab5503e264\",\"dweb:/ipfs/QmZGoP3XFmXxEaB5xh2nbBNst46ZmfuMWfpDVaZTeHZbhn\"]},\"node_modules/@luxfi/contracts/fhe/IFHE.sol\":{\"keccak256\":\"0x399d058a146a945053860ed404ca6b864b97e75ab253e14bd9b43c3a1a73bbb4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a7ae39b1701425c3946d12021818fb6474ad1de01c9af9c36a1b7df021264cc\",\"dweb:/ipfs/Qmc6qnbLTZQuAoxeyy7iWtCGynQVA3bqyEL4qsbtrfqP3y\"]},\"node_modules/@luxfi/contracts/fhe/access/Permissioned.sol\":{\"keccak256\":\"0xd0876cc02c971bcf12808f76e9098f33836f47c83f6ac392caea30db4c7f0128\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9bc8e34428b0c0b4874813dc61c9641b8390d123717f8b00819d27ffc4e52d9\",\"dweb:/ipfs/QmXprnttQ6w7Z5jQfhgPZrHqyK8kEVrdqHMuJp6oZ4rJ3B\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"node_modules/@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x1fcf8cceb1a67e6c8512267e780933c4a3f63ef44756e6c818fda79be51c8402\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617d7d57f6f9cd449068b4d23daf485676d083aae648e038d05eb3a13291de35\",\"dweb:/ipfs/QmPADWPiGaSzZDFNpFEUx4ZPqhzPkYncBpHyTfAGcfsqzy\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x17fc4574e07105b0180ef61f1b3cacd1820a3d37f29a4af1018d0a253c6399b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be46b3e1362dbcadbbb45ec92cdea849dceccea3e2795237f00c123aeae44746\",\"dweb:/ipfs/QmSpyB8mud6xKiZaQnVtEPrxtTHGtyBgjs1PCYk4f2gesd\"]},\"node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[],"type":"error","name":"ErrorInsufficientFunds"},{"inputs":[{"internalType":"uint8","name":"got","type":"uint8"},{"internalType":"uint8","name":"expected","type":"uint8"}],"type":"error","name":"InvalidEncryptedInput"},{"inputs":[],"type":"error","name":"InvalidShortString"},{"inputs":[{"internalType":"int32","name":"value","type":"int32"}],"type":"error","name":"SecurityZoneOutOfBounds"},{"inputs":[],"type":"error","name":"SignerNotMessageSender"},{"inputs":[],"type":"error","name":"SignerNotOwner"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"type":"error","name":"StringTooLong"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true}],"type":"event","name":"ApprovalEncrypted","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"TransferEncrypted","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"_allowanceEncrypted","outputs":[{"internalType":"euint32","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"struct Permission","name":"permission","type":"tuple","components":[{"internalType":"bytes32","name":"publicKey","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"allowanceEncrypted","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"struct Euint32","name":"value","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"approveEncrypted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"struct Permission","name":"auth","type":"tuple","components":[{"internalType":"bytes32","name":"publicKey","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"balanceOfEncrypted","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[{"internalType":"struct Euint32","name":"encryptedAmount","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"mintEncrypted"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"euint32","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferEncrypted","outputs":[{"internalType":"euint32","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint32","name":"encryptedAmount","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"transferEncrypted","outputs":[{"internalType":"euint32","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"euint32","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFromEncrypted","outputs":[{"internalType":"euint32","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint32","name":"value","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"transferFromEncrypted","outputs":[{"internalType":"euint32","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint32","name":"amount","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"unwrap"},{"inputs":[{"internalType":"uint32","name":"amount","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"wrap"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"allowanceEncrypted(address,(bytes32,bytes))":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"approveEncrypted(address,(uint256,uint8,uint8,bytes))":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {ApprovalEncrypted} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"balanceOfEncrypted(address,(bytes32,bytes))":{"details":"Returns the value of tokens owned by `account`, sealed and encrypted for the caller."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"eip712Domain()":{"details":"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferFromEncrypted(address,address,(uint256,uint8,uint8,bytes))":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {TransferEncrypted} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@luxfi/contracts/=node_modules/@luxfi/contracts/","@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/","hardhat-deploy/=node_modules/hardhat-deploy/","hardhat/=node_modules/hardhat/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/FHERC20.sol":"FHERC20"},"evmVersion":"cancun","libraries":{}},"sources":{"contracts/FHERC20.sol":{"keccak256":"0xbff20d2472dcec67d365f7493bea9ffb826740e553a666e9f27f9b23027664e8","urls":["bzz-raw://024750634990a0633884b7635d825bff7c6a10b8c14351fe7cc8bc77d1d44511","dweb:/ipfs/QmQPBXkp6ee6pCCVoBKG1FA1e8ag8SZkC1qZByRcMm6jxo"],"license":"MIT"},"contracts/IFHERC20.sol":{"keccak256":"0xba86640a1ce6a17599d0f65536b5600ed432e6ee755ec504277b032df7631d98","urls":["bzz-raw://1deb54a9a932cce6e42af436d5edfee2f48f0521b16500698dc8ce798f33c8a5","dweb:/ipfs/Qma1PLcxBNv4drQUF5i9JaExoC2S3wZvYrfYop8oT5e9qF"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHE.sol":{"keccak256":"0xa23998a8d39f62962df308163685e1efd5120e2204b74e20188e6144123d5424","urls":["bzz-raw://c031db6aa4df5d66a45f07a789eece0675d8c8ecf87f34cdf6f1641cd750a6e9","dweb:/ipfs/QmWJvZjkPAo8VrPpFQGCvvt4yqiX3tRLBFteYHj2qMtTqn"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHECommon.sol":{"keccak256":"0xb6e8e21a662629948f1b7ed86b847876f2f91059f35747a704a3ef0cd8d29c01","urls":["bzz-raw://d76a878fa2af0597bdd79c85eb13736c6cc31137cb3da5f70d2512dc29b61d37","dweb:/ipfs/QmXaaPiZkcDbZhqoW87mXuHgsvuXZfwxkrx48WMUBjhVFY"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHENetwork.sol":{"keccak256":"0x942a1bdad358f6e410e9713069e03876ee17434ae262fc725d6ccc978fdff337","urls":["bzz-raw://888d85d302d90b4b0ad8ca529c27b0fec8aabcb46aedc4b314bc506a1b80682f","dweb:/ipfs/QmTMWn1dF96KxZyNrpDUFDjafFqN2x9eDhcSpAWUqJhwbF"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHETypes.sol":{"keccak256":"0xc011b88033bd7ea040641926afd5a6df60180bb180d5fd46f835f127223cd445","urls":["bzz-raw://838082044b5750417ba392770fd03b22c1709db6da79ce1572fecbab5503e264","dweb:/ipfs/QmZGoP3XFmXxEaB5xh2nbBNst46ZmfuMWfpDVaZTeHZbhn"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/IFHE.sol":{"keccak256":"0x399d058a146a945053860ed404ca6b864b97e75ab253e14bd9b43c3a1a73bbb4","urls":["bzz-raw://8a7ae39b1701425c3946d12021818fb6474ad1de01c9af9c36a1b7df021264cc","dweb:/ipfs/Qmc6qnbLTZQuAoxeyy7iWtCGynQVA3bqyEL4qsbtrfqP3y"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/access/Permissioned.sol":{"keccak256":"0xd0876cc02c971bcf12808f76e9098f33836f47c83f6ac392caea30db4c7f0128","urls":["bzz-raw://f9bc8e34428b0c0b4874813dc61c9641b8390d123717f8b00819d27ffc4e52d9","dweb:/ipfs/QmXprnttQ6w7Z5jQfhgPZrHqyK8kEVrdqHMuJp6oZ4rJ3B"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol":{"keccak256":"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee","urls":["bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae","dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e","urls":["bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23","dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994","urls":["bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c","dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/ShortStrings.sol":{"keccak256":"0x1fcf8cceb1a67e6c8512267e780933c4a3f63ef44756e6c818fda79be51c8402","urls":["bzz-raw://617d7d57f6f9cd449068b4d23daf485676d083aae648e038d05eb3a13291de35","dweb:/ipfs/QmPADWPiGaSzZDFNpFEUx4ZPqhzPkYncBpHyTfAGcfsqzy"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x17fc4574e07105b0180ef61f1b3cacd1820a3d37f29a4af1018d0a253c6399b5","urls":["bzz-raw://be46b3e1362dbcadbbb45ec92cdea849dceccea3e2795237f00c123aeae44746","dweb:/ipfs/QmSpyB8mud6xKiZaQnVtEPrxtTHGtyBgjs1PCYk4f2gesd"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"}},"version":1},"id":4} |