@vechain/vebetterdao-contracts
Version:
Open-source repository that houses the smart contracts powering the decentralized VeBetterDAO on the VeChain Thor blockchain.
309 lines (308 loc) • 30.7 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "PassportDelegationLogic",
"sourceName": "contracts/ve-better-passport/libraries/PassportDelegationLogic.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "CannotDelegateToSelf",
"type": "error"
},
{
"inputs": [],
"name": "CheckpointUnorderedInsertion",
"type": "error"
},
{
"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": [],
"name": "InvalidSignature",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "NotDelegated",
"type": "error"
},
{
"inputs": [],
"name": "OnlyOneUserAllowed",
"type": "error"
},
{
"inputs": [],
"name": "PassportDelegationFromEntity",
"type": "error"
},
{
"inputs": [],
"name": "PassportDelegationToEntity",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "PassportDelegationUnauthorizedUser",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "bits",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "SafeCastOverflowedUintDowncast",
"type": "error"
},
{
"inputs": [],
"name": "SignatureExpired",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "delegator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "delegatee",
"type": "address"
}
],
"name": "DelegationCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "delegator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "delegatee",
"type": "address"
}
],
"name": "DelegationPending",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "delegator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "delegatee",
"type": "address"
}
],
"name": "DelegationRevoked",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegator",
"type": "address"
}
],
"name": "getDelegatee",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegator",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "getDelegateeInTimepoint",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegatee",
"type": "address"
}
],
"name": "getDelegator",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegatee",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "getDelegatorInTimepoint",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "isDelegateeInTimepoint",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "isDelegatorInTimepoint",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x6117b561003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ae5760003560e01c806308b76b3a146100b35780632be4d14d146100db57806336db28b3146100fd57806349599712146101125780639b4e735f14610132578063a4d3180514610152578063a64ad59514610167578063b48a96341461017a578063b93501a51461019a578063bc6237ff146101ba578063f4079c1f146101cd578063f9561f67146101e0575b600080fd5b6100c66100c1366004611550565b6101f3565b60405190151581526020015b60405180910390f35b8180156100e757600080fd5b506100fb6100f636600461157a565b610208565b005b81801561010957600080fd5b506100fb6102c3565b81801561011e57600080fd5b506100fb61012d36600461157a565b61033d565b61014561014036600461157a565b610409565b6040516100d29190611595565b81801561015e57600080fd5b506100fb610448565b61014561017536600461157a565b6104b7565b81801561018657600080fd5b506100fb61019536600461157a565b6104ec565b8180156101a657600080fd5b506100fb6101b53660046115bf565b610609565b6101456101c8366004611550565b61078f565b6100c66101db366004611550565b6107db565b6101456101ee366004611550565b6107e7565b60006101ff83836107f3565b90505b92915050565b6000610212610847565b6001600160a01b038084166000908152602283016020526040902054919250168061025b5782604051636a45db5b60e11b81526004016102529190611595565b60405180910390fd5b336001600160a01b03821614610286573360405163f6272f8160e01b81526004016102529190611595565b610290838261086b565b806001600160a01b0316836001600160a01b031660008051602061176083398151915260405160405180910390a3505050565b60006102cd610847565b3360009081526022820160205260409020549091506001600160a01b03168061030b5733604051636a45db5b60e11b81526004016102529190611595565b610315338261086b565b6040516001600160a01b03821690339060008051602061176083398151915290600090a35050565b6000610347610847565b90506103533383610a10565b6001600160a01b038216600090815260218201602052604090205461037981600161169f565b336000818152602080860181526040808320949094556001600160a01b03871680835260218701825284832080546001810182559084528284200180546001600160a01b03199081168617909155848452602288019092528483208054909216811790915592517f74e65557682bd085b776a10c4542ef8a7be38069648dce172fe713b91c9700f19190a3505050565b600080610414610847565b6001600160a01b0384166000908152601e8201602052604090209091506104419061043e90610b74565b90565b9392505050565b3360008061045583610bbb565b1561046d5782915061046683610409565b90506104a8565b61047683610bfe565b1561048d575081610486816104b7565b91506104a8565b82604051636a45db5b60e11b81526004016102529190611595565b6104b28282610c2f565b505050565b6000806104c2610847565b6001600160a01b0384166000908152601f8201602052604090209091506104419061043e90610b74565b60006104f6610847565b6001600160a01b03808416600090815260228301602052604090205491925016806105365733604051636a45db5b60e11b81526004016102529190611595565b6001600160a01b0381163314610561573360405163f6272f8160e01b81526004016102529190611595565b61056a33610bfe565b1561059757336000908152601f830160205260409020610597906105919061043e90610b74565b33610c2f565b336000908152601f8301602052604090206105b29084610cb6565b6001600160a01b0383166000908152601e8301602052604090206105d69033610cb6565b6105e0833361086b565b60405133906001600160a01b0385169060008051602061174083398151915290600090a3505050565b6000610613610847565b90508242111561063657604051630819bdcd60e01b815260040160405180910390fd5b604080517ff23d508c74addf6e96f94091e91b60c84529eb2fc2b7922b8f854dd65d060dfb60208201526001600160a01b038616918101919091523360608201526080810184905260009060a00160405160208183030381529060405280519060200120905060006106a782610cd7565b905060006106b58286610d04565b9050866001600160a01b0316816001600160a01b0316146106e957604051638baa579f60e01b815260040160405180910390fd5b6106f38733610a10565b6106fc33610bfe565b1561072357336000908152601f850160205260409020610723906105919061043e90610b74565b6001600160a01b0387166000908152601e8501602052604090206107479033610cb6565b336000908152601f8501602052604090206107629088610cb6565b60405133906001600160a01b0389169060008051602061174083398151915290600090a350505050505050565b60008061079a610847565b90506107d361043e6107ab85610d2e565b6001600160a01b0387166000908152601e8501602052604090209065ffffffffffff16610d65565b949350505050565b60006101ff8383610e0e565b60006101ff8383610e4f565b6000806107fe610847565b905061083461080c84610d2e565b6001600160a01b0386166000908152601f8401602052604090209065ffffffffffff16610d65565b6001600160a01b03161515949350505050565b7f273c9387b78d9b22e6f3371bb3aa3a918f53507e8cacc54e4831933cbb84410090565b6000610875610847565b6001600160a01b03808516600090815260208084018152604080832054938716835260218501909152902054919250906108b06001836116b2565b91506108bd6001826116b2565b821461098b576001600160a01b038416600090815260218401602052604081206108e86001846116b2565b815481106108f8576108f86116c5565b60009182526020808320909101546001600160a01b03888116845260218801909252604090922080549190921692508291908590811061093a5761093a6116c5565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905561096e83600161169f565b6001600160a01b0390911660009081526020808601905260409020555b6001600160a01b038416600090815260218401602052604090208054806109b4576109b46116db565b60008281526020808220830160001990810180546001600160a01b031990811690915593019093556001600160a01b03979097168752848201825260408088208890556022909501909152929094208054909216909155505050565b6000610a1a610847565b9050816001600160a01b0316836001600160a01b031603610a5057826040516307bcecdf60e01b81526004016102529190611595565b610a5983610e93565b80610a7f57506001600160a01b038381166000908152601c830160205260409020541615155b15610a9d576040516379eab24b60e01b815260040160405180910390fd5b610aa682610e93565b80610acc57506001600160a01b038281166000908152601c830160205260409020541615155b15610aea576040516398f6492360e01b815260040160405180910390fd5b610af383610bbb565b15610b2a576001600160a01b0383166000908152601e820160205260409020610b2a908490610b259061043e90610b74565b610c2f565b6001600160a01b03838116600090815260228301602052604090205416156104b2576001600160a01b0380841660009081526022830160205260409020546104b29185911661086b565b80546000908015610bb257610b9c83610b8e6001846116b2565b600091825260209091200190565b54600160601b90046001600160a01b0316610441565b60009392505050565b600080610bc6610847565b6001600160a01b0384166000908152601e820160205260409020909150610bec90610b74565b6001600160a01b031615159392505050565b600080610c09610847565b6001600160a01b0384166000908152601f820160205260409020909150610bec90610b74565b6000610c39610847565b6001600160a01b0384166000908152601e820160205260408120919250610c609190610cb6565b6001600160a01b0382166000908152601f820160205260408120610c8391610cb6565b816001600160a01b0316836001600160a01b031660008051602061176083398151915260405160405180910390a3505050565b610cd1610cc1610ec4565b839065ffffffffffff1683610ed3565b50505050565b6000610202610ce4610eee565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610d148686610fca565b925092509250610d248282611017565b5090949350505050565b600065ffffffffffff821115610d61576040516306dfcc6560e41b81526030600482015260248101839052604401610252565b5090565b815460009081816005811115610dc5576000610d80846110d4565b610d8a90856116b2565b6000888152602090209091508101546001600160601b039081169087161015610db557809150610dc3565b610dc081600161169f565b92505b505b6000610dd3878785856111bc565b90508015610e0057610dea87610b8e6001846116b2565b54600160601b90046001600160a01b0316610e03565b60005b979650505050505050565b600080610e19610847565b9050610834610e2784610d2e565b6001600160a01b0386166000908152601e8401602052604090209065ffffffffffff16610d65565b600080610e5a610847565b90506107d361043e610e6b85610d2e565b6001600160a01b0387166000908152601f8501602052604090209065ffffffffffff16610d65565b600080610e9e610847565b6001600160a01b03841660009081526017820160205260409020909150610bec90610b74565b6000610ece611220565b905090565b600080610ee185858561122b565b915091505b935093915050565b6000610ece604080518082018252601081526f159950995d1d195c94185cdcdc1bdc9d60821b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f2e1167722ba4707bd833f839bfc8410f076c665fd30232a942ca2721eca03b84818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b600080600083516041036110045760208401516040850151606086015160001a610ff6888285856113aa565b955095509550505050611010565b50508151600091506002905b9250925092565b600082600381111561102b5761102b6116f1565b03611034575050565b6001826003811115611048576110486116f1565b036110665760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561107a5761107a6116f1565b0361109b5760405163fce698f760e01b815260048101829052602401610252565b60038260038111156110af576110af6116f1565b036110d0576040516335e2f38360e21b815260048101829052602401610252565b5050565b6000816000036110e657506000919050565b600060016110f38461146f565b901c6001901b9050600181848161110c5761110c611707565b048201901c9050600181848161112457611124611707565b048201901c9050600181848161113c5761113c611707565b048201901c9050600181848161115457611154611707565b048201901c9050600181848161116c5761116c611707565b048201901c9050600181848161118457611184611707565b048201901c9050600181848161119c5761119c611707565b048201901c9050610441818285816111b6576111b6611707565b04611503565b60005b818310156112185760006111d38484611519565b6000878152602090209091506001600160601b038616908201546001600160601b0316111561120457809250611212565b61120f81600161169f565b93505b506111bf565b509392505050565b6000610ece43610d2e565b82546000908190801561134e57600061124987610b8e6001856116b2565b6040805180820190915290546001600160601b03808216808452600160601b9092046001600160a01b03166020840152919250908716101561129e57604051632520601d60e01b815260040160405180910390fd5b80516001600160601b038088169116036112ec57846112c288610b8e6001866116b2565b80546001600160a01b0392909216600160601b026001600160601b0390921691909117905561133e565b604080518082019091526001600160601b0380881682526001600160a01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160601b029216919091179101555b602001519250839150610ee69050565b5050604080518082019091526001600160601b0380851682526001600160a01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160601b029190931617920191909155905081610ee6565b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b038411156113db5750600091506003905082611465565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561142f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661145b57506000925060019150829050611465565b9250600091508190505b9450945094915050565b600080608083901c1561148457608092831c92015b604083901c1561149657604092831c92015b602083901c156114a857602092831c92015b601083901c156114ba57601092831c92015b600883901c156114cc57600892831c92015b600483901c156114de57600492831c92015b600283901c156114f057600292831c92015b600183901c156102025760010192915050565b600081831061151257816101ff565b5090919050565b6000611528600284841861171d565b6101ff9084841661169f565b80356001600160a01b038116811461154b57600080fd5b919050565b6000806040838503121561156357600080fd5b61156c83611534565b946020939093013593505050565b60006020828403121561158c57600080fd5b6101ff82611534565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156115d457600080fd5b6115dd84611534565b92506020840135915060408401356001600160401b038082111561160057600080fd5b818601915086601f83011261161457600080fd5b813581811115611626576116266115a9565b604051601f8201601f19908116603f0116810190838211818310171561164e5761164e6115a9565b8160405282815289602084870101111561166757600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b634e487b7160e01b600052601160045260246000fd5b8082018082111561020257610202611689565b8181038181111561020257610202611689565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60008261173a57634e487b7160e01b600052601260045260246000fd5b50049056fefaf6077d874fc7f1716637c6f4ac4914ce0cfbf27767bb442ed23dd08dad40446f0412fa95f7f48ec7dc7631b382833d8eae9cf4082e5e859b94d091a4a846d4a264697066735822122028f6fcfa7d55161c0a06ed12f47a57b10e58cce60cf73d6a24109136aeb9e09064736f6c63430008140033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100ae5760003560e01c806308b76b3a146100b35780632be4d14d146100db57806336db28b3146100fd57806349599712146101125780639b4e735f14610132578063a4d3180514610152578063a64ad59514610167578063b48a96341461017a578063b93501a51461019a578063bc6237ff146101ba578063f4079c1f146101cd578063f9561f67146101e0575b600080fd5b6100c66100c1366004611550565b6101f3565b60405190151581526020015b60405180910390f35b8180156100e757600080fd5b506100fb6100f636600461157a565b610208565b005b81801561010957600080fd5b506100fb6102c3565b81801561011e57600080fd5b506100fb61012d36600461157a565b61033d565b61014561014036600461157a565b610409565b6040516100d29190611595565b81801561015e57600080fd5b506100fb610448565b61014561017536600461157a565b6104b7565b81801561018657600080fd5b506100fb61019536600461157a565b6104ec565b8180156101a657600080fd5b506100fb6101b53660046115bf565b610609565b6101456101c8366004611550565b61078f565b6100c66101db366004611550565b6107db565b6101456101ee366004611550565b6107e7565b60006101ff83836107f3565b90505b92915050565b6000610212610847565b6001600160a01b038084166000908152602283016020526040902054919250168061025b5782604051636a45db5b60e11b81526004016102529190611595565b60405180910390fd5b336001600160a01b03821614610286573360405163f6272f8160e01b81526004016102529190611595565b610290838261086b565b806001600160a01b0316836001600160a01b031660008051602061176083398151915260405160405180910390a3505050565b60006102cd610847565b3360009081526022820160205260409020549091506001600160a01b03168061030b5733604051636a45db5b60e11b81526004016102529190611595565b610315338261086b565b6040516001600160a01b03821690339060008051602061176083398151915290600090a35050565b6000610347610847565b90506103533383610a10565b6001600160a01b038216600090815260218201602052604090205461037981600161169f565b336000818152602080860181526040808320949094556001600160a01b03871680835260218701825284832080546001810182559084528284200180546001600160a01b03199081168617909155848452602288019092528483208054909216811790915592517f74e65557682bd085b776a10c4542ef8a7be38069648dce172fe713b91c9700f19190a3505050565b600080610414610847565b6001600160a01b0384166000908152601e8201602052604090209091506104419061043e90610b74565b90565b9392505050565b3360008061045583610bbb565b1561046d5782915061046683610409565b90506104a8565b61047683610bfe565b1561048d575081610486816104b7565b91506104a8565b82604051636a45db5b60e11b81526004016102529190611595565b6104b28282610c2f565b505050565b6000806104c2610847565b6001600160a01b0384166000908152601f8201602052604090209091506104419061043e90610b74565b60006104f6610847565b6001600160a01b03808416600090815260228301602052604090205491925016806105365733604051636a45db5b60e11b81526004016102529190611595565b6001600160a01b0381163314610561573360405163f6272f8160e01b81526004016102529190611595565b61056a33610bfe565b1561059757336000908152601f830160205260409020610597906105919061043e90610b74565b33610c2f565b336000908152601f8301602052604090206105b29084610cb6565b6001600160a01b0383166000908152601e8301602052604090206105d69033610cb6565b6105e0833361086b565b60405133906001600160a01b0385169060008051602061174083398151915290600090a3505050565b6000610613610847565b90508242111561063657604051630819bdcd60e01b815260040160405180910390fd5b604080517ff23d508c74addf6e96f94091e91b60c84529eb2fc2b7922b8f854dd65d060dfb60208201526001600160a01b038616918101919091523360608201526080810184905260009060a00160405160208183030381529060405280519060200120905060006106a782610cd7565b905060006106b58286610d04565b9050866001600160a01b0316816001600160a01b0316146106e957604051638baa579f60e01b815260040160405180910390fd5b6106f38733610a10565b6106fc33610bfe565b1561072357336000908152601f850160205260409020610723906105919061043e90610b74565b6001600160a01b0387166000908152601e8501602052604090206107479033610cb6565b336000908152601f8501602052604090206107629088610cb6565b60405133906001600160a01b0389169060008051602061174083398151915290600090a350505050505050565b60008061079a610847565b90506107d361043e6107ab85610d2e565b6001600160a01b0387166000908152601e8501602052604090209065ffffffffffff16610d65565b949350505050565b60006101ff8383610e0e565b60006101ff8383610e4f565b6000806107fe610847565b905061083461080c84610d2e565b6001600160a01b0386166000908152601f8401602052604090209065ffffffffffff16610d65565b6001600160a01b03161515949350505050565b7f273c9387b78d9b22e6f3371bb3aa3a918f53507e8cacc54e4831933cbb84410090565b6000610875610847565b6001600160a01b03808516600090815260208084018152604080832054938716835260218501909152902054919250906108b06001836116b2565b91506108bd6001826116b2565b821461098b576001600160a01b038416600090815260218401602052604081206108e86001846116b2565b815481106108f8576108f86116c5565b60009182526020808320909101546001600160a01b03888116845260218801909252604090922080549190921692508291908590811061093a5761093a6116c5565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905561096e83600161169f565b6001600160a01b0390911660009081526020808601905260409020555b6001600160a01b038416600090815260218401602052604090208054806109b4576109b46116db565b60008281526020808220830160001990810180546001600160a01b031990811690915593019093556001600160a01b03979097168752848201825260408088208890556022909501909152929094208054909216909155505050565b6000610a1a610847565b9050816001600160a01b0316836001600160a01b031603610a5057826040516307bcecdf60e01b81526004016102529190611595565b610a5983610e93565b80610a7f57506001600160a01b038381166000908152601c830160205260409020541615155b15610a9d576040516379eab24b60e01b815260040160405180910390fd5b610aa682610e93565b80610acc57506001600160a01b038281166000908152601c830160205260409020541615155b15610aea576040516398f6492360e01b815260040160405180910390fd5b610af383610bbb565b15610b2a576001600160a01b0383166000908152601e820160205260409020610b2a908490610b259061043e90610b74565b610c2f565b6001600160a01b03838116600090815260228301602052604090205416156104b2576001600160a01b0380841660009081526022830160205260409020546104b29185911661086b565b80546000908015610bb257610b9c83610b8e6001846116b2565b600091825260209091200190565b54600160601b90046001600160a01b0316610441565b60009392505050565b600080610bc6610847565b6001600160a01b0384166000908152601e820160205260409020909150610bec90610b74565b6001600160a01b031615159392505050565b600080610c09610847565b6001600160a01b0384166000908152601f820160205260409020909150610bec90610b74565b6000610c39610847565b6001600160a01b0384166000908152601e820160205260408120919250610c609190610cb6565b6001600160a01b0382166000908152601f820160205260408120610c8391610cb6565b816001600160a01b0316836001600160a01b031660008051602061176083398151915260405160405180910390a3505050565b610cd1610cc1610ec4565b839065ffffffffffff1683610ed3565b50505050565b6000610202610ce4610eee565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610d148686610fca565b925092509250610d248282611017565b5090949350505050565b600065ffffffffffff821115610d61576040516306dfcc6560e41b81526030600482015260248101839052604401610252565b5090565b815460009081816005811115610dc5576000610d80846110d4565b610d8a90856116b2565b6000888152602090209091508101546001600160601b039081169087161015610db557809150610dc3565b610dc081600161169f565b92505b505b6000610dd3878785856111bc565b90508015610e0057610dea87610b8e6001846116b2565b54600160601b90046001600160a01b0316610e03565b60005b979650505050505050565b600080610e19610847565b9050610834610e2784610d2e565b6001600160a01b0386166000908152601e8401602052604090209065ffffffffffff16610d65565b600080610e5a610847565b90506107d361043e610e6b85610d2e565b6001600160a01b0387166000908152601f8501602052604090209065ffffffffffff16610d65565b600080610e9e610847565b6001600160a01b03841660009081526017820160205260409020909150610bec90610b74565b6000610ece611220565b905090565b600080610ee185858561122b565b915091505b935093915050565b6000610ece604080518082018252601081526f159950995d1d195c94185cdcdc1bdc9d60821b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f2e1167722ba4707bd833f839bfc8410f076c665fd30232a942ca2721eca03b84818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b600080600083516041036110045760208401516040850151606086015160001a610ff6888285856113aa565b955095509550505050611010565b50508151600091506002905b9250925092565b600082600381111561102b5761102b6116f1565b03611034575050565b6001826003811115611048576110486116f1565b036110665760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561107a5761107a6116f1565b0361109b5760405163fce698f760e01b815260048101829052602401610252565b60038260038111156110af576110af6116f1565b036110d0576040516335e2f38360e21b815260048101829052602401610252565b5050565b6000816000036110e657506000919050565b600060016110f38461146f565b901c6001901b9050600181848161110c5761110c611707565b048201901c9050600181848161112457611124611707565b048201901c9050600181848161113c5761113c611707565b048201901c9050600181848161115457611154611707565b048201901c9050600181848161116c5761116c611707565b048201901c9050600181848161118457611184611707565b048201901c9050600181848161119c5761119c611707565b048201901c9050610441818285816111b6576111b6611707565b04611503565b60005b818310156112185760006111d38484611519565b6000878152602090209091506001600160601b038616908201546001600160601b0316111561120457809250611212565b61120f81600161169f565b93505b506111bf565b509392505050565b6000610ece43610d2e565b82546000908190801561134e57600061124987610b8e6001856116b2565b6040805180820190915290546001600160601b03808216808452600160601b9092046001600160a01b03166020840152919250908716101561129e57604051632520601d60e01b815260040160405180910390fd5b80516001600160601b038088169116036112ec57846112c288610b8e6001866116b2565b80546001600160a01b0392909216600160601b026001600160601b0390921691909117905561133e565b604080518082019091526001600160601b0380881682526001600160a01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160601b029216919091179101555b602001519250839150610ee69050565b5050604080518082019091526001600160601b0380851682526001600160a01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160601b029190931617920191909155905081610ee6565b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b038411156113db5750600091506003905082611465565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561142f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661145b57506000925060019150829050611465565b9250600091508190505b9450945094915050565b600080608083901c1561148457608092831c92015b604083901c1561149657604092831c92015b602083901c156114a857602092831c92015b601083901c156114ba57601092831c92015b600883901c156114cc57600892831c92015b600483901c156114de57600492831c92015b600283901c156114f057600292831c92015b600183901c156102025760010192915050565b600081831061151257816101ff565b5090919050565b6000611528600284841861171d565b6101ff9084841661169f565b80356001600160a01b038116811461154b57600080fd5b919050565b6000806040838503121561156357600080fd5b61156c83611534565b946020939093013593505050565b60006020828403121561158c57600080fd5b6101ff82611534565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156115d457600080fd5b6115dd84611534565b92506020840135915060408401356001600160401b038082111561160057600080fd5b818601915086601f83011261161457600080fd5b813581811115611626576116266115a9565b604051601f8201601f19908116603f0116810190838211818310171561164e5761164e6115a9565b8160405282815289602084870101111561166757600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b634e487b7160e01b600052601160045260246000fd5b8082018082111561020257610202611689565b8181038181111561020257610202611689565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60008261173a57634e487b7160e01b600052601260045260246000fd5b50049056fefaf6077d874fc7f1716637c6f4ac4914ce0cfbf27767bb442ed23dd08dad40446f0412fa95f7f48ec7dc7631b382833d8eae9cf4082e5e859b94d091a4a846d4a264697066735822122028f6fcfa7d55161c0a06ed12f47a57b10e58cce60cf73d6a24109136aeb9e09064736f6c63430008140033",
"linkReferences": {},
"deployedLinkReferences": {}
}