{
  "_format": "hh-sol-artifact-1",
  "contractName": "PredicatePermitter2Test",
  "sourceName": "contracts/test/permitter/PredicatePermitter2Test.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "AddressEmptyCode",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "ERC1967InvalidImplementation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1967NonPayable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotLiquidity",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "OwnableInvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OwnableUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PolicyIDEmpty",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UUPSUnauthorizedCallContext",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "slot",
          "type": "bytes32"
        }
      ],
      "name": "UUPSUnsupportedProxiableUUID",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "policyID",
          "type": "string"
        }
      ],
      "name": "PolicySet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "predicateManager",
          "type": "address"
        }
      ],
      "name": "PredicateManagerSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "UPGRADE_INTERFACE_VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPolicy",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPredicateManager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getVal",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_admin",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_predicateManager",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "policyID",
          "type": "string"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "liquidity",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "encodedData",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "permission",
          "type": "bytes"
        }
      ],
      "name": "permit",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "policyID",
          "type": "string"
        }
      ],
      "name": "setPolicy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceManager",
          "type": "address"
        }
      ],
      "name": "setPredicateManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516118206100fd600039600081816107710152818161079a01526108e001526118206000f3fe6080604052600436106100dd5760003560e01c8063901afa5f1161007f578063ce1e462611610059578063ce1e462614610244578063e0a7704a14610259578063e1cb0e5214610279578063f2fde38b1461028d57600080fd5b8063901afa5f146101c1578063a4b3bc01146101f1578063ad3cb1cc1461020657600080fd5b806365e8e4f4116100bb57806365e8e4f4146101575780636b4c991b14610177578063715018a6146101975780638da5cb5b146101ac57600080fd5b80631a686502146100e25780634f1ef2861461011f57806352d1902d14610134575b600080fd5b3480156100ee57600080fd5b50600054610102906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61013261012d366004611002565b6102ad565b005b34801561014057600080fd5b506101496102cc565b604051908152602001610116565b34801561016357600080fd5b50610132610172366004611097565b6102e9565b34801561018357600080fd5b5061013261019236600461110c565b610542565b3480156101a357600080fd5b506101326105c6565b3480156101b857600080fd5b506101026105da565b3480156101cd57600080fd5b506101e16101dc36600461114d565b61060f565b6040519015158152602001610116565b3480156101fd57600080fd5b5061010261069b565b34801561021257600080fd5b50610237604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610116919061122a565b34801561025057600080fd5b506102376106aa565b34801561026557600080fd5b5061013261027436600461123d565b6106b4565b34801561028557600080fd5b50604d610149565b34801561029957600080fd5b506101326102a836600461123d565b610723565b6102b5610766565b6102be8261080b565b6102c88282610813565b5050565b60006102d66108d5565b506000805160206117ab83398151915290565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b031660008115801561032e5750825b90506000826001600160401b0316600114801561034a5750303b155b905081158015610358575080155b156103765760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156103a057845460ff60401b1916600160401b1785555b6001600160a01b038a1615806103bd57506001600160a01b038916155b806103cf57506001600160a01b038816155b156103ed57604051639fabe1c160e01b815260040160405180910390fd5b600086900361040f57604051634a40f49b60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b038b161790556104338a61091e565b61043b61092f565b61047b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061093792505050565b7f115a7076b27726a2ae5bd26756c4e4ec6b292eb6151f84772978a722b09271a587876040516104ac929190611258565b60405180910390a16040516001600160a01b03891681527f282797d873547dfc33f40236c7b1e0c8c816e2784b7ede18c24a90179446b0269060200160405180910390a1831561053657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b61054a610990565b61058982828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109c292505050565b7f115a7076b27726a2ae5bd26756c4e4ec6b292eb6151f84772978a722b09271a582826040516105ba929190611258565b60405180910390a15050565b6105ce610990565b6105d860006109fc565b565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b600080546001600160a01b0316331461063b5760405163892ae32f60e01b815260040160405180910390fd5b6000610649838501856113a0565b905061068f8187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92508c9150610a6d9050565b98975050505050505050565b60006106a5610bfa565b905090565b60606106a5610c11565b6106bc610990565b6000805160206117cb83398151915280546001600160a01b0319166001600160a01b0383161790556040516001600160a01b03821681527f282797d873547dfc33f40236c7b1e0c8c816e2784b7ede18c24a90179446b0269060200160405180910390a150565b61072b610990565b6001600160a01b03811661075a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610763816109fc565b50565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ed57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107e16000805160206117ab833981519152546001600160a01b031690565b6001600160a01b031614155b156105d85760405163703e46dd60e11b815260040160405180910390fd5b610763610990565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086d575060408051601f3d908101601f1916820190925261086a91810190611483565b60015b61089557604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610751565b6000805160206117ab83398151915281146108c657604051632a87526960e21b815260048101829052602401610751565b6108d08383610cd4565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105d85760405163703e46dd60e11b815260040160405180910390fd5b610926610d2a565b61076381610d73565b6105d8610d2a565b6000805160206117cb83398151915280546001600160a01b0319166001600160a01b0384161781557f804776a84f3d03ad8442127b1451e2fbbb6a715c681d6a83c9e9fca787b9930161098a8382611524565b50505050565b336109996105da565b6001600160a01b0316146105d85760405163118cdaa760e01b8152336004820152602401610751565b6000805160206117cb8339815191527f804776a84f3d03ad8442127b1451e2fbbb6a715c681d6a83c9e9fca787b993016108d08382611524565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000806000805160206117cb8339815191529050600060405180610100016040528088600001518152602001866001600160a01b03168152602001306001600160a01b03168152602001858152602001878152602001836001018054610ad29061149c565b80601f0160208091040260200160405190810160405280929190818152602001828054610afe9061149c565b8015610b4b5780601f10610b2057610100808354040283529160200191610b4b565b820191906000526020600020905b815481529060010190602001808311610b2e57829003601f168201915b50505091835250506040808a0180515163ffffffff166020808501919091528b0151928201929092528454915160608b015191516318cea58d60e01b81529394506001600160a01b03909216926318cea58d92610bac928692600401611683565b6020604051808303816000875af1158015610bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bef919061176c565b979650505050505050565b6000806000805160206117cb8339815191526105ff565b7f804776a84f3d03ad8442127b1451e2fbbb6a715c681d6a83c9e9fca787b9930180546060916000805160206117cb83398151915291610c509061149c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7c9061149c565b8015610cc95780601f10610c9e57610100808354040283529160200191610cc9565b820191906000526020600020905b815481529060010190602001808311610cac57829003601f168201915b505050505091505090565b610cdd82610d7b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610d22576108d08282610de0565b6102c8610e56565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166105d857604051631afcd79f60e31b815260040160405180910390fd5b61072b610d2a565b806001600160a01b03163b600003610db157604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610751565b6000805160206117ab83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610dfd919061178e565b600060405180830381855af49150503d8060008114610e38576040519150601f19603f3d011682016040523d82523d6000602084013e610e3d565b606091505b5091509150610e4d858383610e75565b95945050505050565b34156105d85760405163b398979f60e01b815260040160405180910390fd5b606082610e8a57610e8582610ed4565b610ecd565b8151158015610ea157506001600160a01b0384163b155b15610eca57604051639996b31560e01b81526001600160a01b0385166004820152602401610751565b50805b9392505050565b805115610ee45780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80356001600160a01b0381168114610f1457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715610f5157610f51610f19565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610f7f57610f7f610f19565b604052919050565b6000806001600160401b03841115610fa157610fa1610f19565b50601f8301601f1916602001610fb681610f57565b915050828152838383011115610fcb57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610ff357600080fd5b610ecd83833560208501610f87565b6000806040838503121561101557600080fd5b61101e83610efd565b915060208301356001600160401b0381111561103957600080fd5b61104585828601610fe2565b9150509250929050565b60008083601f84011261106157600080fd5b5081356001600160401b0381111561107857600080fd5b60208301915083602082850101111561109057600080fd5b9250929050565b6000806000806000608086880312156110af57600080fd5b6110b886610efd565b94506110c660208701610efd565b93506110d460408701610efd565b925060608601356001600160401b038111156110ef57600080fd5b6110fb8882890161104f565b969995985093965092949392505050565b6000806020838503121561111f57600080fd5b82356001600160401b0381111561113557600080fd5b6111418582860161104f565b90969095509350505050565b6000806000806000806080878903121561116657600080fd5b61116f87610efd565b95506020870135945060408701356001600160401b0381111561119157600080fd5b61119d89828a0161104f565b90955093505060608701356001600160401b038111156111bc57600080fd5b6111c889828a0161104f565b979a9699509497509295939492505050565b60005b838110156111f55781810151838201526020016111dd565b50506000910152565b600081518084526112168160208601602086016111da565b601f01601f19169290920160200192915050565b602081526000610ecd60208301846111fe565b60006020828403121561124f57600080fd5b610ecd82610efd565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006001600160401b038211156112a0576112a0610f19565b5060051b60200190565b600082601f8301126112bb57600080fd5b81356112ce6112c982611287565b610f57565b8082825260208201915060208360051b8601019250858311156112f057600080fd5b602085015b838110156113145761130681610efd565b8352602092830192016112f5565b5095945050505050565b600082601f83011261132f57600080fd5b813561133d6112c982611287565b8082825260208201915060208360051b86010192508583111561135f57600080fd5b602085015b838110156113145780356001600160401b0381111561138257600080fd5b611391886020838a0101610fe2565b84525060209283019201611364565b6000602082840312156113b257600080fd5b81356001600160401b038111156113c857600080fd5b8201608081850312156113da57600080fd5b6113e2610f2f565b81356001600160401b038111156113f857600080fd5b8201601f8101861361140957600080fd5b61141886823560208401610f87565b8252506020828101359082015260408201356001600160401b0381111561143e57600080fd5b61144a868285016112aa565b60408301525060608201356001600160401b0381111561146957600080fd5b6114758682850161131e565b606083015250949350505050565b60006020828403121561149557600080fd5b5051919050565b600181811c908216806114b057607f821691505b6020821081036114d057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156108d057806000526020600020601f840160051c810160208510156114fd5750805b601f840160051c820191505b8181101561151d5760008155600101611509565b5050505050565b81516001600160401b0381111561153d5761153d610f19565b6115518161154b845461149c565b846114d6565b6020601f821160018114611585576000831561156d5750848201515b600019600385901b1c1916600184901b17845561151d565b600084815260208120601f198516915b828110156115b55787850151825560209485019460019092019101611595565b50848210156115d35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600081518084526020840193506020830160005b8281101561161d5781516001600160a01b03168652602095860195909101906001016115f6565b5093949350505050565b600082825180855260208501945060208160051b8301016020850160005b8381101561167757601f198584030188526116618383516111fe565b6020988901989093509190910190600101611645565b50909695505050505050565b606081526000845161010060608401526116a16101608401826111fe565b905060208601516116bd60808501826001600160a01b03169052565b5060408601516001600160a01b031660a0840152606086015160c08401526080860151838203605f190160e08501526116f682826111fe565b91505060a0860151605f198483030161010085015261171582826111fe565b91505060c086015161173061012085018263ffffffff169052565b5060e0860151610140840152828103602084015261174e81866115e2565b905082810360408401526117628185611627565b9695505050505050565b60006020828403121561177e57600080fd5b81518015158114610ecd57600080fd5b600082516117a08184602087016111da565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc804776a84f3d03ad8442127b1451e2fbbb6a715c681d6a83c9e9fca787b99300a2646970667358221220e968e410a975edbbb00dd8e2e0947e676b06976f1d3f6d8c4debbad747e2761964736f6c634300081b0033",
  "deployedBytecode": "0x6080604052600436106100dd5760003560e01c8063901afa5f1161007f578063ce1e462611610059578063ce1e462614610244578063e0a7704a14610259578063e1cb0e5214610279578063f2fde38b1461028d57600080fd5b8063901afa5f146101c1578063a4b3bc01146101f1578063ad3cb1cc1461020657600080fd5b806365e8e4f4116100bb57806365e8e4f4146101575780636b4c991b14610177578063715018a6146101975780638da5cb5b146101ac57600080fd5b80631a686502146100e25780634f1ef2861461011f57806352d1902d14610134575b600080fd5b3480156100ee57600080fd5b50600054610102906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61013261012d366004611002565b6102ad565b005b34801561014057600080fd5b506101496102cc565b604051908152602001610116565b34801561016357600080fd5b50610132610172366004611097565b6102e9565b34801561018357600080fd5b5061013261019236600461110c565b610542565b3480156101a357600080fd5b506101326105c6565b3480156101b857600080fd5b506101026105da565b3480156101cd57600080fd5b506101e16101dc36600461114d565b61060f565b6040519015158152602001610116565b3480156101fd57600080fd5b5061010261069b565b34801561021257600080fd5b50610237604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610116919061122a565b34801561025057600080fd5b506102376106aa565b34801561026557600080fd5b5061013261027436600461123d565b6106b4565b34801561028557600080fd5b50604d610149565b34801561029957600080fd5b506101326102a836600461123d565b610723565b6102b5610766565b6102be8261080b565b6102c88282610813565b5050565b60006102d66108d5565b506000805160206117ab83398151915290565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b031660008115801561032e5750825b90506000826001600160401b0316600114801561034a5750303b155b905081158015610358575080155b156103765760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156103a057845460ff60401b1916600160401b1785555b6001600160a01b038a1615806103bd57506001600160a01b038916155b806103cf57506001600160a01b038816155b156103ed57604051639fabe1c160e01b815260040160405180910390fd5b600086900361040f57604051634a40f49b60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b038b161790556104338a61091e565b61043b61092f565b61047b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061093792505050565b7f115a7076b27726a2ae5bd26756c4e4ec6b292eb6151f84772978a722b09271a587876040516104ac929190611258565b60405180910390a16040516001600160a01b03891681527f282797d873547dfc33f40236c7b1e0c8c816e2784b7ede18c24a90179446b0269060200160405180910390a1831561053657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b61054a610990565b61058982828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109c292505050565b7f115a7076b27726a2ae5bd26756c4e4ec6b292eb6151f84772978a722b09271a582826040516105ba929190611258565b60405180910390a15050565b6105ce610990565b6105d860006109fc565b565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b600080546001600160a01b0316331461063b5760405163892ae32f60e01b815260040160405180910390fd5b6000610649838501856113a0565b905061068f8187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92508c9150610a6d9050565b98975050505050505050565b60006106a5610bfa565b905090565b60606106a5610c11565b6106bc610990565b6000805160206117cb83398151915280546001600160a01b0319166001600160a01b0383161790556040516001600160a01b03821681527f282797d873547dfc33f40236c7b1e0c8c816e2784b7ede18c24a90179446b0269060200160405180910390a150565b61072b610990565b6001600160a01b03811661075a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610763816109fc565b50565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107ed57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107e16000805160206117ab833981519152546001600160a01b031690565b6001600160a01b031614155b156105d85760405163703e46dd60e11b815260040160405180910390fd5b610763610990565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561086d575060408051601f3d908101601f1916820190925261086a91810190611483565b60015b61089557604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610751565b6000805160206117ab83398151915281146108c657604051632a87526960e21b815260048101829052602401610751565b6108d08383610cd4565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105d85760405163703e46dd60e11b815260040160405180910390fd5b610926610d2a565b61076381610d73565b6105d8610d2a565b6000805160206117cb83398151915280546001600160a01b0319166001600160a01b0384161781557f804776a84f3d03ad8442127b1451e2fbbb6a715c681d6a83c9e9fca787b9930161098a8382611524565b50505050565b336109996105da565b6001600160a01b0316146105d85760405163118cdaa760e01b8152336004820152602401610751565b6000805160206117cb8339815191527f804776a84f3d03ad8442127b1451e2fbbb6a715c681d6a83c9e9fca787b993016108d08382611524565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000806000805160206117cb8339815191529050600060405180610100016040528088600001518152602001866001600160a01b03168152602001306001600160a01b03168152602001858152602001878152602001836001018054610ad29061149c565b80601f0160208091040260200160405190810160405280929190818152602001828054610afe9061149c565b8015610b4b5780601f10610b2057610100808354040283529160200191610b4b565b820191906000526020600020905b815481529060010190602001808311610b2e57829003601f168201915b50505091835250506040808a0180515163ffffffff166020808501919091528b0151928201929092528454915160608b015191516318cea58d60e01b81529394506001600160a01b03909216926318cea58d92610bac928692600401611683565b6020604051808303816000875af1158015610bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bef919061176c565b979650505050505050565b6000806000805160206117cb8339815191526105ff565b7f804776a84f3d03ad8442127b1451e2fbbb6a715c681d6a83c9e9fca787b9930180546060916000805160206117cb83398151915291610c509061149c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7c9061149c565b8015610cc95780601f10610c9e57610100808354040283529160200191610cc9565b820191906000526020600020905b815481529060010190602001808311610cac57829003601f168201915b505050505091505090565b610cdd82610d7b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610d22576108d08282610de0565b6102c8610e56565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166105d857604051631afcd79f60e31b815260040160405180910390fd5b61072b610d2a565b806001600160a01b03163b600003610db157604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610751565b6000805160206117ab83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610dfd919061178e565b600060405180830381855af49150503d8060008114610e38576040519150601f19603f3d011682016040523d82523d6000602084013e610e3d565b606091505b5091509150610e4d858383610e75565b95945050505050565b34156105d85760405163b398979f60e01b815260040160405180910390fd5b606082610e8a57610e8582610ed4565b610ecd565b8151158015610ea157506001600160a01b0384163b155b15610eca57604051639996b31560e01b81526001600160a01b0385166004820152602401610751565b50805b9392505050565b805115610ee45780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80356001600160a01b0381168114610f1457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715610f5157610f51610f19565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610f7f57610f7f610f19565b604052919050565b6000806001600160401b03841115610fa157610fa1610f19565b50601f8301601f1916602001610fb681610f57565b915050828152838383011115610fcb57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610ff357600080fd5b610ecd83833560208501610f87565b6000806040838503121561101557600080fd5b61101e83610efd565b915060208301356001600160401b0381111561103957600080fd5b61104585828601610fe2565b9150509250929050565b60008083601f84011261106157600080fd5b5081356001600160401b0381111561107857600080fd5b60208301915083602082850101111561109057600080fd5b9250929050565b6000806000806000608086880312156110af57600080fd5b6110b886610efd565b94506110c660208701610efd565b93506110d460408701610efd565b925060608601356001600160401b038111156110ef57600080fd5b6110fb8882890161104f565b969995985093965092949392505050565b6000806020838503121561111f57600080fd5b82356001600160401b0381111561113557600080fd5b6111418582860161104f565b90969095509350505050565b6000806000806000806080878903121561116657600080fd5b61116f87610efd565b95506020870135945060408701356001600160401b0381111561119157600080fd5b61119d89828a0161104f565b90955093505060608701356001600160401b038111156111bc57600080fd5b6111c889828a0161104f565b979a9699509497509295939492505050565b60005b838110156111f55781810151838201526020016111dd565b50506000910152565b600081518084526112168160208601602086016111da565b601f01601f19169290920160200192915050565b602081526000610ecd60208301846111fe565b60006020828403121561124f57600080fd5b610ecd82610efd565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006001600160401b038211156112a0576112a0610f19565b5060051b60200190565b600082601f8301126112bb57600080fd5b81356112ce6112c982611287565b610f57565b8082825260208201915060208360051b8601019250858311156112f057600080fd5b602085015b838110156113145761130681610efd565b8352602092830192016112f5565b5095945050505050565b600082601f83011261132f57600080fd5b813561133d6112c982611287565b8082825260208201915060208360051b86010192508583111561135f57600080fd5b602085015b838110156113145780356001600160401b0381111561138257600080fd5b611391886020838a0101610fe2565b84525060209283019201611364565b6000602082840312156113b257600080fd5b81356001600160401b038111156113c857600080fd5b8201608081850312156113da57600080fd5b6113e2610f2f565b81356001600160401b038111156113f857600080fd5b8201601f8101861361140957600080fd5b61141886823560208401610f87565b8252506020828101359082015260408201356001600160401b0381111561143e57600080fd5b61144a868285016112aa565b60408301525060608201356001600160401b0381111561146957600080fd5b6114758682850161131e565b606083015250949350505050565b60006020828403121561149557600080fd5b5051919050565b600181811c908216806114b057607f821691505b6020821081036114d057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156108d057806000526020600020601f840160051c810160208510156114fd5750805b601f840160051c820191505b8181101561151d5760008155600101611509565b5050505050565b81516001600160401b0381111561153d5761153d610f19565b6115518161154b845461149c565b846114d6565b6020601f821160018114611585576000831561156d5750848201515b600019600385901b1c1916600184901b17845561151d565b600084815260208120601f198516915b828110156115b55787850151825560209485019460019092019101611595565b50848210156115d35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600081518084526020840193506020830160005b8281101561161d5781516001600160a01b03168652602095860195909101906001016115f6565b5093949350505050565b600082825180855260208501945060208160051b8301016020850160005b8381101561167757601f198584030188526116618383516111fe565b6020988901989093509190910190600101611645565b50909695505050505050565b606081526000845161010060608401526116a16101608401826111fe565b905060208601516116bd60808501826001600160a01b03169052565b5060408601516001600160a01b031660a0840152606086015160c08401526080860151838203605f190160e08501526116f682826111fe565b91505060a0860151605f198483030161010085015261171582826111fe565b91505060c086015161173061012085018263ffffffff169052565b5060e0860151610140840152828103602084015261174e81866115e2565b905082810360408401526117628185611627565b9695505050505050565b60006020828403121561177e57600080fd5b81518015158114610ecd57600080fd5b600082516117a08184602087016111da565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc804776a84f3d03ad8442127b1451e2fbbb6a715c681d6a83c9e9fca787b99300a2646970667358221220e968e410a975edbbb00dd8e2e0947e676b06976f1d3f6d8c4debbad747e2761964736f6c634300081b0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
