{
  "name": "LongerFeeVault",
  "compiler": "0.8.28+commit.7893614a",
  "settings": {
    "compilationTarget": {
      "src/LongerFeeVault.sol": "LongerFeeVault"
    },
    "evmVersion": "cancun",
    "libraries": {},
    "metadata": {
      "bytecodeHash": "ipfs"
    },
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "remappings": []
  },
  "abi": [
    {
      "type": "constructor",
      "inputs": [
        {
          "name": "source",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "pool",
          "type": "bytes32",
          "internalType": "bytes32"
        },
        {
          "name": "token0",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "token1",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "destinations",
          "type": "address[]",
          "internalType": "address[]"
        },
        {
          "name": "phase0",
          "type": "uint16[]",
          "internalType": "uint16[]"
        },
        {
          "name": "phase1",
          "type": "uint16[]",
          "internalType": "uint16[]"
        },
        {
          "name": "transition",
          "type": "uint64",
          "internalType": "uint64"
        }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "receive",
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "BPS",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "accountedBalance",
      "inputs": [
        {
          "name": "currency",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "balance",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "activePhase",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint8",
          "internalType": "uint8"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "claimable",
      "inputs": [
        {
          "name": "currency",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "recipient",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "balance",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "configHash",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "currency0",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "currency1",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "harvest",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "initializer",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "initializerCodeHash",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "payout",
      "inputs": [
        {
          "name": "currency",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "recipientIndex",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "outputs": [
        {
          "name": "amount",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "phaseReceipts",
      "inputs": [
        {
          "name": "currency",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "phase",
          "type": "uint8",
          "internalType": "uint8"
        }
      ],
      "outputs": [
        {
          "name": "received",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "poolId",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "recipientCount",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "recipients",
      "inputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "shares",
      "inputs": [
        {
          "name": "phase",
          "type": "uint8",
          "internalType": "uint8"
        },
        {
          "name": "index",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "uint16",
          "internalType": "uint16"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "sync",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "transitionAt",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint64",
          "internalType": "uint64"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "event",
      "name": "Allocated",
      "inputs": [
        {
          "name": "currency",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "phase",
          "type": "uint8",
          "indexed": true,
          "internalType": "uint8"
        },
        {
          "name": "received",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Harvested",
      "inputs": [
        {
          "name": "received0",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        },
        {
          "name": "received1",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        },
        {
          "name": "phase",
          "type": "uint8",
          "indexed": false,
          "internalType": "uint8"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Paid",
      "inputs": [
        {
          "name": "currency",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "recipient",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "amount",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "error",
      "name": "BalanceDecreased",
      "inputs": []
    },
    {
      "type": "error",
      "name": "InvalidConfiguration",
      "inputs": []
    },
    {
      "type": "error",
      "name": "NotBeneficiary",
      "inputs": []
    },
    {
      "type": "error",
      "name": "ReentrantCall",
      "inputs": []
    },
    {
      "type": "error",
      "name": "SourceMismatch",
      "inputs": []
    },
    {
      "type": "error",
      "name": "TransferFailed",
      "inputs": []
    },
    {
      "type": "error",
      "name": "UnsupportedCurrency",
      "inputs": []
    }
  ],
  "bytecode": "0x610160604052348015610010575f5ffd5b50604051611c9a380380611c9a83398101604081905261002f916105fe565b83516001600160a01b0389163b1580610046575087155b806100635750856001600160a01b0316876001600160a01b031610155b8061006c575080155b806100775750600881115b80610083575080845114155b8061008f575080835114155b156100ad5760405163c52a9bd360e01b815260040160405180910390fd5b5f5f5f5b8381101561027e575f6001600160a01b03168882815181106100d5576100d56106da565b60200260200101516001600160a01b0316148061011c5750306001600160a01b0316888281518110610109576101096106da565b60200260200101516001600160a01b0316145b1561013a5760405163c52a9bd360e01b815260040160405180910390fd5b5f5b818110156101b057888281518110610156576101566106da565b60200260200101516001600160a01b0316898281518110610179576101796106da565b60200260200101516001600160a01b0316036101a85760405163c52a9bd360e01b815260040160405180910390fd5b60010161013c565b506001600160401b03851615801561020257508581815181106101d5576101d56106da565b602002602001015161ffff168782815181106101f3576101f36106da565b602002602001015161ffff1614155b156102205760405163c52a9bd360e01b815260040160405180910390fd5b868181518110610232576102326106da565b602002602001015161ffff168361024991906106ee565b925085818151811061025d5761025d6106da565b602002602001015161ffff168261027491906106ee565b91506001016100b1565b506127108214158061029257506127108114155b156102b05760405163c52a9bd360e01b815260040160405180910390fd5b6001600160a01b03808c1660808190523f60a05260c08b905289811660e0528816610100526001600160401b0384166101205286516102f5905f9060208a0190610378565b5085516103099060019060208901906103db565b50845161031d9060029060208801906103db565b50468b8c6001600160a01b03163f8c8c8c8c8c8c8c60405160200161034b9a99989796959493929190610751565b60408051601f19818403018152919052805160209091012061014052506108209950505050505050505050565b828054828255905f5260205f209081019282156103cb579160200282015b828111156103cb57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610396565b506103d7929150610478565b5090565b828054828255905f5260205f2090600f016010900481019282156103cb579160200282015f5b8382111561044157835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610401565b801561046f5782816101000a81549061ffff0219169055600201602081600101049283019260010302610441565b50506103d79291505b5b808211156103d7575f8155600101610479565b80516001600160a01b03811681146104a2575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156104e3576104e36104a7565b604052919050565b5f6001600160401b03821115610503576105036104a7565b5060051b60200190565b5f82601f83011261051c575f5ffd5b815161052f61052a826104eb565b6104bb565b8082825260208201915060208360051b860101925085831115610550575f5ffd5b602085015b83811015610574576105668161048c565b835260209283019201610555565b5095945050505050565b5f82601f83011261058d575f5ffd5b815161059b61052a826104eb565b8082825260208201915060208360051b8601019250858311156105bc575f5ffd5b602085015b8381101561057457805161ffff811681146105da575f5ffd5b8352602092830192016105c1565b80516001600160401b03811681146104a2575f5ffd5b5f5f5f5f5f5f5f5f610100898b031215610616575f5ffd5b61061f8961048c565b60208a0151909850965061063560408a0161048c565b955061064360608a0161048c565b60808a01519095506001600160401b0381111561065e575f5ffd5b61066a8b828c0161050d565b60a08b015190955090506001600160401b03811115610687575f5ffd5b6106938b828c0161057e565b60c08b015190945090506001600160401b038111156106b0575f5ffd5b6106bc8b828c0161057e565b9250506106cb60e08a016105e8565b90509295985092959890939650565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561070d57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f8151808452602084019350602083015f5b8281101561074757815161ffff16865260209586019590910190600101610725565b5093949350505050565b8a81526001600160a01b038a8116602080840191909152604083018b9052606083018a9052888216608084015290871660a083015261014060c0830181905286519083018190525f9161016084019183918901825b828110156107cd5781516001600160a01b03168552602094850194909101906001016107a6565b5050505082810360e08401526107e38187610713565b90508281036101008401526107f88186610713565b9150506108116101208301846001600160401b03169052565b9b9a5050505050505050505050565b60805160a05160c05160e0516101005161012051610140516113b26108e85f395f61040501525f818161026a01528181610447015261047201525f818161014f0152818161051801528181610a0b01528181610c420152610d3e01525f81816102b6015281816104db015281816109cf01528181610c160152610d1401525f81816102210152818161092001528181610a8301528181610aec0152610b9701525f818161034701526108d401525f81816102e9015281816108b1015261094601526113b25ff3fe608060405260043610610108575f3560e01c806379f1232b11610092578063d1bc76a111610062578063d1bc76a114610369578063d4570c1c14610388578063dff1b87c146103be578063e1f1176d146103f4578063fff6cae914610427575f5ffd5b806379f1232b146102a55780639ce110d7146102d8578063a7838c8a1461030b578063c9862b1a14610336575f5ffd5b8063249d39e9116100d8578063249d39e9146101c957806326143609146101de5780633e0dc34e146102105780634641257d14610243578063649a42aa14610259575f5ffd5b80630e1b26c61461011357806310d737b81461013e578063117de2fd1461018957806322eabb8e146101b6575f5ffd5b3661010f57005b5f5ffd5b34801561011e575f5ffd5b5061012761043b565b60405160ff90911681526020015b60405180910390f35b348015610149575f5ffd5b506101717f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610135565b348015610194575f5ffd5b506101a86101a33660046110d0565b6104ae565b604051908152602001610135565b3480156101c1575f5ffd5b505f546101a8565b3480156101d4575f5ffd5b506101a861271081565b3480156101e9575f5ffd5b506101fd6101f836600461110f565b6107d9565b60405161ffff9091168152602001610135565b34801561021b575f5ffd5b506101a87f000000000000000000000000000000000000000000000000000000000000000081565b34801561024e575f5ffd5b50610257610881565b005b348015610264575f5ffd5b5061028c7f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610135565b3480156102b0575f5ffd5b506101717f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e3575f5ffd5b506101717f000000000000000000000000000000000000000000000000000000000000000081565b348015610316575f5ffd5b506101a8610325366004611129565b60036020525f908152604090205481565b348015610341575f5ffd5b506101a87f000000000000000000000000000000000000000000000000000000000000000081565b348015610374575f5ffd5b5061017161038336600461114b565b610cc2565b348015610393575f5ffd5b506101a86103a2366004611162565b600560209081525f928352604080842090915290825290205481565b3480156103c9575f5ffd5b506101a86103d8366004611199565b600460209081525f928352604080842090915290825290205481565b3480156103ff575f5ffd5b506101a87f000000000000000000000000000000000000000000000000000000000000000081565b348015610432575f5ffd5b50610257610ce9565b5f67ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161580159061049f57507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff164210155b6104a857505f90565b50600190565b5f6007545f146104d1576040516306fda65d60e31b815260040160405180910390fd5b60016007819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415801561054d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b1561056b57604051631131fa7160e11b815260040160405180910390fd5b5f5f838154811061057e5761057e6111cc565b5f9182526020808320909101546001600160a01b038781168452600583526040808520919092168085529252822054935091508290036105c1575f9150506107cf565b6001600160a01b038085165f8181526005602090815260408083209486168352938152838220829055918152600390915290812080548492906106059084906111f4565b90915550506001600160a01b03841661068e575f816001600160a01b0316836040515f6040518083038185875af1925050503d805f8114610661576040519150601f19603f3d011682016040523d82523d5f602084013e610666565b606091505b5050905080610688576040516312171d8360e31b815260040160405180910390fd5b50610780565b6040516001600160a01b038281166024830152604482018490525f91829187169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516106e79190611207565b5f604051808303815f865af19150503d805f8114610720576040519150601f19603f3d011682016040523d82523d5f602084013e610725565b606091505b509150915081158061075f575080511580159061075f57508051602014158061075f57508080602001905181019061075d919061121d565b155b1561077d576040516312171d8360e31b815260040160405180910390fd5b50505b806001600160a01b0316846001600160a01b03167f9def4e2802183d68ce90a6a226a2962b59298616c27165f12c4fbc5c84cdd778846040516107c591815260200190565b60405180910390a3505b5f60075592915050565b5f60018360ff1611156107ff5760405163c52a9bd360e01b815260040160405180910390fd5b60ff831615610842576002828154811061081b5761081b6111cc565b905f5260205f2090601091828204019190066002029054906101000a900461ffff16610878565b60018281548110610855576108556111cc565b905f5260205f2090601091828204019190066002029054906101000a900461ffff165b90505b92915050565b600754156108a2576040516306fda65d60e31b815260040160405180910390fd5b60016007556001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163f7f0000000000000000000000000000000000000000000000000000000000000000146109115760405163c4d1e76d60e01b815260040160405180910390fd5b60405163e559829360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201527f0000000000000000000000000000000000000000000000000000000000000000905f9081908190819081906001600160a01b0387169063e55982939060240160a060405180830381865afa15801561099f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c3919061123c565b945094509450945094507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316141580610a4057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b80610abf5750604080516001600160a01b0380881660208301528087169282019290925262ffffff85166060820152600284900b608082015290821660a08201527f00000000000000000000000000000000000000000000000000000000000000009060c0016040516020818303038152906040528051906020012014155b15610add5760405163c4d1e76d60e01b815260040160405180910390fd5b604051635ebb58fb60e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201523060248201526001600160a01b03871690635ebb58fb90604401602060405180830381865afa158015610b45573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6991906112ba565b5f03610b885760405163644d871f60e01b815260040160405180910390fd5b60405163817db73b60e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b0387169063817db73b9060240160408051808303815f875af1158015610bea573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0e91906112f0565b50505f610c3a7f0000000000000000000000000000000000000000000000000000000000000000610d69565b90505f610c667f0000000000000000000000000000000000000000000000000000000000000000610d69565b90507f50d477f3c6717d1dc81a9386e53f3b91ac3fb0f27da621cec06f053bb50358288282610c9361043b565b60408051938452602084019290925260ff169082015260600160405180910390a150505f600755505050505050565b5f8181548110610cd0575f80fd5b5f918252602090912001546001600160a01b0316905081565b60075415610d0a576040516306fda65d60e31b815260040160405180910390fd5b6001600755610d387f0000000000000000000000000000000000000000000000000000000000000000610d69565b50610d627f0000000000000000000000000000000000000000000000000000000000000000610d69565b505f600755565b5f5f610d7483611037565b6001600160a01b0384165f90815260036020526040902054909150811015610daf5760405163a54d597f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260036020526040902054610dd190826111f4565b9150815f03610de257505f92915050565b6001600160a01b0383165f908152600360205260408120829055610e0461043b565b6001600160a01b0385165f90815260046020908152604080832060ff8516845290915281205491925090610e39908590611318565b6001600160a01b0386165f90815260046020908152604080832060ff8716845290915281208290559091505b5f54811015610fe7575f60ff841615610eb25760028281548110610e8b57610e8b6111cc565b905f5260205f2090601091828204019190066002029054906101000a900461ffff16610ee8565b60018281548110610ec557610ec56111cc565b905f5260205f2090601091828204019190066002029054906101000a900461ffff165b61ffff1690505f61271082610efd828761133f565b610f079190611352565b610f119190611369565b82610f1e61271087611369565b610f289190611352565b610f329190611318565b6001600160a01b0389165f90815260066020908152604080832060ff8a16845282528083208784529091529020805490829055909150610f7281836111f4565b6001600160a01b038a165f9081526005602052604081208154909190819088908110610fa057610fa06111cc565b5f9182526020808320909101546001600160a01b0316835282019290925260400181208054909190610fd3908490611318565b909155505060019093019250610e65915050565b508160ff16856001600160a01b03167fd230713fbfe689d3213ae006d5ef0c7d344f2c538713b4d2ac9dfeb8aa6e3bd48660405161102791815260200190565b60405180910390a3505050919050565b5f6001600160a01b038216156110b2576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015611089573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ad91906112ba565b61087b565b4792915050565b6001600160a01b03811681146110cd575f5ffd5b50565b5f5f604083850312156110e1575f5ffd5b82356110ec816110b9565b946020939093013593505050565b803560ff8116811461110a575f5ffd5b919050565b5f5f60408385031215611120575f5ffd5b6110ec836110fa565b5f60208284031215611139575f5ffd5b8135611144816110b9565b9392505050565b5f6020828403121561115b575f5ffd5b5035919050565b5f5f60408385031215611173575f5ffd5b823561117e816110b9565b9150602083013561118e816110b9565b809150509250929050565b5f5f604083850312156111aa575f5ffd5b82356111b5816110b9565b91506111c3602084016110fa565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561087b5761087b6111e0565b5f82518060208501845e5f920191825250919050565b5f6020828403121561122d575f5ffd5b81518015158114611144575f5ffd5b5f5f5f5f5f60a08688031215611250575f5ffd5b855161125b816110b9565b602087015190955061126c816110b9565b604087015190945062ffffff81168114611284575f5ffd5b8093505060608601518060020b811461129b575f5ffd5b60808701519092506112ac816110b9565b809150509295509295909350565b5f602082840312156112ca575f5ffd5b5051919050565b80516fffffffffffffffffffffffffffffffff8116811461110a575f5ffd5b5f5f60408385031215611301575f5ffd5b61130a836112d1565b91506111c3602084016112d1565b8082018082111561087b5761087b6111e0565b634e487b7160e01b5f52601260045260245ffd5b5f8261134d5761134d61132b565b500690565b808202811582820484141761087b5761087b6111e0565b5f826113775761137761132b565b50049056fea264697066735822122027e7898f05c64591ed349a2e43c15b4419de4668e536be6911bc9d7cc025c45c64736f6c634300081c0033",
  "deployedBytecode": "0x608060405260043610610108575f3560e01c806379f1232b11610092578063d1bc76a111610062578063d1bc76a114610369578063d4570c1c14610388578063dff1b87c146103be578063e1f1176d146103f4578063fff6cae914610427575f5ffd5b806379f1232b146102a55780639ce110d7146102d8578063a7838c8a1461030b578063c9862b1a14610336575f5ffd5b8063249d39e9116100d8578063249d39e9146101c957806326143609146101de5780633e0dc34e146102105780634641257d14610243578063649a42aa14610259575f5ffd5b80630e1b26c61461011357806310d737b81461013e578063117de2fd1461018957806322eabb8e146101b6575f5ffd5b3661010f57005b5f5ffd5b34801561011e575f5ffd5b5061012761043b565b60405160ff90911681526020015b60405180910390f35b348015610149575f5ffd5b506101717f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610135565b348015610194575f5ffd5b506101a86101a33660046110d0565b6104ae565b604051908152602001610135565b3480156101c1575f5ffd5b505f546101a8565b3480156101d4575f5ffd5b506101a861271081565b3480156101e9575f5ffd5b506101fd6101f836600461110f565b6107d9565b60405161ffff9091168152602001610135565b34801561021b575f5ffd5b506101a87f000000000000000000000000000000000000000000000000000000000000000081565b34801561024e575f5ffd5b50610257610881565b005b348015610264575f5ffd5b5061028c7f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610135565b3480156102b0575f5ffd5b506101717f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e3575f5ffd5b506101717f000000000000000000000000000000000000000000000000000000000000000081565b348015610316575f5ffd5b506101a8610325366004611129565b60036020525f908152604090205481565b348015610341575f5ffd5b506101a87f000000000000000000000000000000000000000000000000000000000000000081565b348015610374575f5ffd5b5061017161038336600461114b565b610cc2565b348015610393575f5ffd5b506101a86103a2366004611162565b600560209081525f928352604080842090915290825290205481565b3480156103c9575f5ffd5b506101a86103d8366004611199565b600460209081525f928352604080842090915290825290205481565b3480156103ff575f5ffd5b506101a87f000000000000000000000000000000000000000000000000000000000000000081565b348015610432575f5ffd5b50610257610ce9565b5f67ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161580159061049f57507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff164210155b6104a857505f90565b50600190565b5f6007545f146104d1576040516306fda65d60e31b815260040160405180910390fd5b60016007819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415801561054d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b1561056b57604051631131fa7160e11b815260040160405180910390fd5b5f5f838154811061057e5761057e6111cc565b5f9182526020808320909101546001600160a01b038781168452600583526040808520919092168085529252822054935091508290036105c1575f9150506107cf565b6001600160a01b038085165f8181526005602090815260408083209486168352938152838220829055918152600390915290812080548492906106059084906111f4565b90915550506001600160a01b03841661068e575f816001600160a01b0316836040515f6040518083038185875af1925050503d805f8114610661576040519150601f19603f3d011682016040523d82523d5f602084013e610666565b606091505b5050905080610688576040516312171d8360e31b815260040160405180910390fd5b50610780565b6040516001600160a01b038281166024830152604482018490525f91829187169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516106e79190611207565b5f604051808303815f865af19150503d805f8114610720576040519150601f19603f3d011682016040523d82523d5f602084013e610725565b606091505b509150915081158061075f575080511580159061075f57508051602014158061075f57508080602001905181019061075d919061121d565b155b1561077d576040516312171d8360e31b815260040160405180910390fd5b50505b806001600160a01b0316846001600160a01b03167f9def4e2802183d68ce90a6a226a2962b59298616c27165f12c4fbc5c84cdd778846040516107c591815260200190565b60405180910390a3505b5f60075592915050565b5f60018360ff1611156107ff5760405163c52a9bd360e01b815260040160405180910390fd5b60ff831615610842576002828154811061081b5761081b6111cc565b905f5260205f2090601091828204019190066002029054906101000a900461ffff16610878565b60018281548110610855576108556111cc565b905f5260205f2090601091828204019190066002029054906101000a900461ffff165b90505b92915050565b600754156108a2576040516306fda65d60e31b815260040160405180910390fd5b60016007556001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163f7f0000000000000000000000000000000000000000000000000000000000000000146109115760405163c4d1e76d60e01b815260040160405180910390fd5b60405163e559829360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201527f0000000000000000000000000000000000000000000000000000000000000000905f9081908190819081906001600160a01b0387169063e55982939060240160a060405180830381865afa15801561099f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c3919061123c565b945094509450945094507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316141580610a4057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b80610abf5750604080516001600160a01b0380881660208301528087169282019290925262ffffff85166060820152600284900b608082015290821660a08201527f00000000000000000000000000000000000000000000000000000000000000009060c0016040516020818303038152906040528051906020012014155b15610add5760405163c4d1e76d60e01b815260040160405180910390fd5b604051635ebb58fb60e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201523060248201526001600160a01b03871690635ebb58fb90604401602060405180830381865afa158015610b45573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6991906112ba565b5f03610b885760405163644d871f60e01b815260040160405180910390fd5b60405163817db73b60e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b0387169063817db73b9060240160408051808303815f875af1158015610bea573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0e91906112f0565b50505f610c3a7f0000000000000000000000000000000000000000000000000000000000000000610d69565b90505f610c667f0000000000000000000000000000000000000000000000000000000000000000610d69565b90507f50d477f3c6717d1dc81a9386e53f3b91ac3fb0f27da621cec06f053bb50358288282610c9361043b565b60408051938452602084019290925260ff169082015260600160405180910390a150505f600755505050505050565b5f8181548110610cd0575f80fd5b5f918252602090912001546001600160a01b0316905081565b60075415610d0a576040516306fda65d60e31b815260040160405180910390fd5b6001600755610d387f0000000000000000000000000000000000000000000000000000000000000000610d69565b50610d627f0000000000000000000000000000000000000000000000000000000000000000610d69565b505f600755565b5f5f610d7483611037565b6001600160a01b0384165f90815260036020526040902054909150811015610daf5760405163a54d597f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260036020526040902054610dd190826111f4565b9150815f03610de257505f92915050565b6001600160a01b0383165f908152600360205260408120829055610e0461043b565b6001600160a01b0385165f90815260046020908152604080832060ff8516845290915281205491925090610e39908590611318565b6001600160a01b0386165f90815260046020908152604080832060ff8716845290915281208290559091505b5f54811015610fe7575f60ff841615610eb25760028281548110610e8b57610e8b6111cc565b905f5260205f2090601091828204019190066002029054906101000a900461ffff16610ee8565b60018281548110610ec557610ec56111cc565b905f5260205f2090601091828204019190066002029054906101000a900461ffff165b61ffff1690505f61271082610efd828761133f565b610f079190611352565b610f119190611369565b82610f1e61271087611369565b610f289190611352565b610f329190611318565b6001600160a01b0389165f90815260066020908152604080832060ff8a16845282528083208784529091529020805490829055909150610f7281836111f4565b6001600160a01b038a165f9081526005602052604081208154909190819088908110610fa057610fa06111cc565b5f9182526020808320909101546001600160a01b0316835282019290925260400181208054909190610fd3908490611318565b909155505060019093019250610e65915050565b508160ff16856001600160a01b03167fd230713fbfe689d3213ae006d5ef0c7d344f2c538713b4d2ac9dfeb8aa6e3bd48660405161102791815260200190565b60405180910390a3505050919050565b5f6001600160a01b038216156110b2576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015611089573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ad91906112ba565b61087b565b4792915050565b6001600160a01b03811681146110cd575f5ffd5b50565b5f5f604083850312156110e1575f5ffd5b82356110ec816110b9565b946020939093013593505050565b803560ff8116811461110a575f5ffd5b919050565b5f5f60408385031215611120575f5ffd5b6110ec836110fa565b5f60208284031215611139575f5ffd5b8135611144816110b9565b9392505050565b5f6020828403121561115b575f5ffd5b5035919050565b5f5f60408385031215611173575f5ffd5b823561117e816110b9565b9150602083013561118e816110b9565b809150509250929050565b5f5f604083850312156111aa575f5ffd5b82356111b5816110b9565b91506111c3602084016110fa565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561087b5761087b6111e0565b5f82518060208501845e5f920191825250919050565b5f6020828403121561122d575f5ffd5b81518015158114611144575f5ffd5b5f5f5f5f5f60a08688031215611250575f5ffd5b855161125b816110b9565b602087015190955061126c816110b9565b604087015190945062ffffff81168114611284575f5ffd5b8093505060608601518060020b811461129b575f5ffd5b60808701519092506112ac816110b9565b809150509295509295909350565b5f602082840312156112ca575f5ffd5b5051919050565b80516fffffffffffffffffffffffffffffffff8116811461110a575f5ffd5b5f5f60408385031215611301575f5ffd5b61130a836112d1565b91506111c3602084016112d1565b8082018082111561087b5761087b6111e0565b634e487b7160e01b5f52601260045260245ffd5b5f8261134d5761134d61132b565b500690565b808202811582820484141761087b5761087b6111e0565b5f826113775761137761132b565b50049056fea264697066735822122027e7898f05c64591ed349a2e43c15b4419de4668e536be6911bc9d7cc025c45c64736f6c634300081c0033",
  "immutableReferences": {
    "49": [
      {
        "start": 745,
        "length": 32
      },
      {
        "start": 2225,
        "length": 32
      },
      {
        "start": 2374,
        "length": 32
      }
    ],
    "51": [
      {
        "start": 839,
        "length": 32
      },
      {
        "start": 2260,
        "length": 32
      }
    ],
    "53": [
      {
        "start": 545,
        "length": 32
      },
      {
        "start": 2336,
        "length": 32
      },
      {
        "start": 2691,
        "length": 32
      },
      {
        "start": 2796,
        "length": 32
      },
      {
        "start": 2967,
        "length": 32
      }
    ],
    "55": [
      {
        "start": 694,
        "length": 32
      },
      {
        "start": 1243,
        "length": 32
      },
      {
        "start": 2511,
        "length": 32
      },
      {
        "start": 3094,
        "length": 32
      },
      {
        "start": 3348,
        "length": 32
      }
    ],
    "57": [
      {
        "start": 335,
        "length": 32
      },
      {
        "start": 1304,
        "length": 32
      },
      {
        "start": 2571,
        "length": 32
      },
      {
        "start": 3138,
        "length": 32
      },
      {
        "start": 3390,
        "length": 32
      }
    ],
    "59": [
      {
        "start": 618,
        "length": 32
      },
      {
        "start": 1095,
        "length": 32
      },
      {
        "start": 1138,
        "length": 32
      }
    ],
    "61": [
      {
        "start": 1029,
        "length": 32
      }
    ]
  },
  "creationCodeHash": "0x61806aed7134eac5e25eb2ae69d1207e6b9d3a3f451f47b87cf7e75d1bbc7acd"
}
