{
  "_format": "hh-sol-artifact-1",
  "contractName": "BridgeTester",
  "sourceName": "src/test-helpers/BridgeTester.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "NotContract",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "NotDelayedInbox",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "NotOutbox",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "rollup",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "NotRollupOrOwner",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "outbox",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "BridgeCallTriggered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "inbox",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "enabled",
          "type": "bool"
        }
      ],
      "name": "InboxToggle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "messageIndex",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "beforeInboxAcc",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "inbox",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "kind",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "messageDataHash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "baseFeeL1",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "timestamp",
          "type": "uint64"
        }
      ],
      "name": "MessageDelivered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "outbox",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "enabled",
          "type": "bool"
        }
      ],
      "name": "OutboxToggle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "rollup",
          "type": "address"
        }
      ],
      "name": "RollupUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "newSequencerInbox",
          "type": "address"
        }
      ],
      "name": "SequencerInboxUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "acceptFundsFromOldBridge",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "activeOutbox",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "allowedDelayedInboxList",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "inbox",
          "type": "address"
        }
      ],
      "name": "allowedDelayedInboxes",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "allowedOutboxList",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "outbox",
          "type": "address"
        }
      ],
      "name": "allowedOutboxes",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "delayedInboxAccs",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "delayedMessageCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "kind",
          "type": "uint8"
        },
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "messageDataHash",
          "type": "bytes32"
        }
      ],
      "name": "enqueueDelayedMessage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "dataHash",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "afterDelayedMessagesRead",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "prevMessageCount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newMessageCount",
          "type": "uint256"
        }
      ],
      "name": "enqueueSequencerMessage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "seqMessageIndex",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "beforeAcc",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "delayedAcc",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "acc",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "executeCall",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IOwnable",
          "name": "rollup_",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nativeToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nativeTokenDecimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rollup",
      "outputs": [
        {
          "internalType": "contract IOwnable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "sequencerInbox",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "sequencerInboxAccs",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "sequencerMessageCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "sequencerReportedSubMessageCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "inbox",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "enabled",
          "type": "bool"
        }
      ],
      "name": "setDelayedInbox",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "outbox",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "enabled",
          "type": "bool"
        }
      ],
      "name": "setOutbox",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sequencerInbox",
          "type": "address"
        }
      ],
      "name": "setSequencerInbox",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "batchPoster",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "dataHash",
          "type": "bytes32"
        }
      ],
      "name": "submitBatchSpendingReport",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IOwnable",
          "name": "_rollup",
          "type": "address"
        }
      ],
      "name": "updateRollupAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b506080516113f761002d600039600050506113f76000f3fe60806040526004361061014e5760003560e01c8063ab5d8943116100b6578063d5719dc21161006f578063d5719dc21461043f578063e1758bd81461045f578063e76f5c8d1461047f578063e77145f41461020a578063eca067ad1461049f578063ee35f327146104b457600080fd5b8063ab5d89431461035a578063ad48cb5e1461036f578063ae60bd13146103a2578063c4d66de8146103df578063cb23bcb5146103ff578063cee3d7281461041f57600080fd5b80637a88b107116101085780637a88b1071461024257806386598a56146102655780638db5993b146102af578063919cc706146102c2578063945e1147146102ff5780639e5d4c491461032c57600080fd5b806284120c1461015a57806316bf55791461017e578063413b35bd1461019e57806347fb24c5146101ea5780634f61f8501461020c5780635fca4a161461022c57600080fd5b3661015557005b600080fd5b34801561016657600080fd5b50600a545b6040519081526020015b60405180910390f35b34801561018a57600080fd5b5061016b6101993660046110b6565b6104d4565b3480156101aa57600080fd5b506101da6101b93660046110e7565b6001600160a01b031660009081526002602052604090206001015460ff1690565b6040519015158152602001610175565b3480156101f657600080fd5b5061020a61020536600461110b565b6104f5565b005b34801561021857600080fd5b5061020a6102273660046110e7565b610800565b34801561023857600080fd5b5061016b600b5481565b34801561024e57600080fd5b5061016b61025d366004611149565b600092915050565b34801561027157600080fd5b5061028f610280366004611175565b50600093849350839250829150565b604080519485526020850193909352918301526060820152608001610175565b61016b6102bd3660046111a7565b610925565b3480156102ce57600080fd5b5061020a6102dd3660046110e7565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b34801561030b57600080fd5b5061031f61031a3660046110b6565b610970565b60405161017591906111ee565b34801561033857600080fd5b5061034c610347366004611202565b61099a565b60405161017592919061128b565b34801561036657600080fd5b5061031f610af2565b34801561037b57600080fd5b5060085461039090600160a01b900460ff1681565b60405160ff9091168152602001610175565b3480156103ae57600080fd5b506101da6103bd3660046110e7565b6001600160a01b03166000908152600160208190526040909120015460ff1690565b3480156103eb57600080fd5b5061020a6103fa3660046110e7565b610b1f565b34801561040b57600080fd5b5060065461031f906001600160a01b031681565b34801561042b57600080fd5b5061020a61043a36600461110b565b610c05565b34801561044b57600080fd5b5061016b61045a3660046110b6565b610f07565b34801561046b57600080fd5b5060085461031f906001600160a01b031681565b34801561048b57600080fd5b5061031f61049a3660046110b6565b610f17565b3480156104ab57600080fd5b5060095461016b565b3480156104c057600080fd5b5060075461031f906001600160a01b031681565b600a81815481106104e457600080fd5b600091825260209091200154905081565b6006546001600160a01b031633146105cd5760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b15801561054c57600080fd5b505afa158015610560573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058491906112ea565b9050336001600160a01b038216146105cb57600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b60405180910390fd5b505b6001600160a01b0382166000818152600160208181526040928390209182015492518515158152919360ff90931692917f6675ce8882cb71637de5903a193d218cc0544be9c0650cb83e0955f6aa2bf521910160405180910390a28080156106325750825b80610644575080158015610644575082155b1561064f5750505050565b82156106dd57604080518082018252600380548252600160208084018281526001600160a01b038a166000818152928490529582209451855551938201805460ff1916941515949094179093558154908101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556107f9565b600380546106ed9060019061132a565b815481106106fd576106fd61134f565b6000918252602090912001548254600380546001600160a01b0390931692909190811061072c5761072c61134f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816000015460016000600385600001548154811061077a5761077a61134f565b60009182526020808320909101546001600160a01b0316835282019290925260400190205560038054806107b0576107b0611365565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03861682526001908190526040822091825501805460ff191690555b50505b5050565b6006546001600160a01b031633146108cf5760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b15801561085757600080fd5b505afa15801561086b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088f91906112ea565b9050336001600160a01b038216146108cd57600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b505b600780546001600160a01b0319166001600160a01b0383161790556040517f8c1e6003ed33ca6748d4ad3dd4ecc949065c89dceb31fdf546a5289202763c6a9061091a9083906111ee565b60405180910390a150565b3360009081526001602081905260408220015460ff1661095a573360405163b6c60ea360e01b81526004016105c291906111ee565b610968848443424887610f27565b949350505050565b6004818154811061098057600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526002602052604081206001015460609060ff166109d257336040516332ea82ab60e01b81526004016105c291906111ee565b82158015906109e957506001600160a01b0386163b155b15610a09578560405163b5cf5b8f60e01b81526004016105c291906111ee565b600580546001600160a01b0319811633179091556040516001600160a01b03918216918816908790610a3e908890889061137b565b60006040518083038185875af1925050503d8060008114610a7b576040519150601f19603f3d011682016040523d82523d6000602084013e610a80565b606091505b50600580546001600160a01b0319166001600160a01b038581169190911790915560405192955090935088169033907f2d9d115ef3e4a606d698913b1eae831a3cdfe20d9a83d48007b0526749c3d46690610ae0908a908a908a9061138b565b60405180910390a35094509492505050565b6005546000906001600160a01b039081161415610b0f5750600090565b506005546001600160a01b031690565b600054610100900460ff16610b3a5760005460ff1615610b3e565b303b155b610ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105c2565b600054610100900460ff16158015610bc3576000805461ffff19166101011790555b600580546001600160a01b036001600160a01b031991821681179092556006805490911691841691909117905580156107fc576000805461ff00191690555050565b6006546001600160a01b03163314610cd45760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610c5c57600080fd5b505afa158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9491906112ea565b9050336001600160a01b03821614610cd257600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b505b6001600160a01b038216600081815260026020908152604091829020600181015492518515158152909360ff90931692917f49477e7356dbcb654ab85d7534b50126772d938130d1350e23e2540370c8dffa910160405180910390a2808015610d3a5750825b80610d4c575080158015610d4c575082155b15610d575750505050565b8215610de657604080518082018252600480548252600160208084018281526001600160a01b038a16600081815260029093529582209451855551938201805460ff1916941515949094179093558154908101825591527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790556107f9565b60048054610df69060019061132a565b81548110610e0657610e0661134f565b6000918252602090912001548254600480546001600160a01b03909316929091908110610e3557610e3561134f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508160000154600260006004856000015481548110610e8357610e8361134f565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610eb957610eb9611365565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03861682526002905260408120908155600101805460ff1916905550505050565b600981815481106104e457600080fd5b6003818154811061098057600080fd5b600954604080516001600160f81b031960f88a901b166020808301919091526bffffffffffffffffffffffff1960608a901b1660218301526001600160c01b031960c089811b8216603585015288901b16603d830152604582018490526065820186905260858083018690528351808403909101815260a590920190925280519101206000919060008215610fe1576009610fc360018561132a565b81548110610fd357610fd361134f565b906000526020600020015490505b6040805160208082018490528183018590528251808303840181526060830180855281519190920120600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af015533905260ff8c1660808201526001600160a01b038b1660a082015260c0810187905260e0810188905267ffffffffffffffff89166101008201529051829185917f5e3c1311ea442664e8b1611bfabef659120ea7a0a2cfc0667700bebc69cbffe1918190036101200190a3509098975050505050505050565b6000602082840312156110c857600080fd5b5035919050565b6001600160a01b03811681146110e457600080fd5b50565b6000602082840312156110f957600080fd5b8135611104816110cf565b9392505050565b6000806040838503121561111e57600080fd5b8235611129816110cf565b91506020830135801515811461113e57600080fd5b809150509250929050565b6000806040838503121561115c57600080fd5b8235611167816110cf565b946020939093013593505050565b6000806000806080858703121561118b57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156111bc57600080fd5b833560ff811681146111cd57600080fd5b925060208401356111dd816110cf565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b6000806000806060858703121561121857600080fd5b8435611223816110cf565b935060208501359250604085013567ffffffffffffffff8082111561124757600080fd5b818701915087601f83011261125b57600080fd5b81358181111561126a57600080fd5b88602082850101111561127c57600080fd5b95989497505060200194505050565b821515815260006020604081840152835180604085015260005b818110156112c1578581018301518582016060015282016112a5565b818111156112d3576000606083870101525b50601f01601f191692909201606001949350505050565b6000602082840312156112fc57600080fd5b8151611104816110cf565b6001600160a01b0393841681529183166020830152909116604082015260600190565b60008282101561134a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b8183823760009101908152919050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f191601019291505056fea2646970667358221220638283ba957e1d6ab58666ec03347d67b996d007e9507a938ee85850521439d564736f6c63430008090033",
  "deployedBytecode": "0x60806040526004361061014e5760003560e01c8063ab5d8943116100b6578063d5719dc21161006f578063d5719dc21461043f578063e1758bd81461045f578063e76f5c8d1461047f578063e77145f41461020a578063eca067ad1461049f578063ee35f327146104b457600080fd5b8063ab5d89431461035a578063ad48cb5e1461036f578063ae60bd13146103a2578063c4d66de8146103df578063cb23bcb5146103ff578063cee3d7281461041f57600080fd5b80637a88b107116101085780637a88b1071461024257806386598a56146102655780638db5993b146102af578063919cc706146102c2578063945e1147146102ff5780639e5d4c491461032c57600080fd5b806284120c1461015a57806316bf55791461017e578063413b35bd1461019e57806347fb24c5146101ea5780634f61f8501461020c5780635fca4a161461022c57600080fd5b3661015557005b600080fd5b34801561016657600080fd5b50600a545b6040519081526020015b60405180910390f35b34801561018a57600080fd5b5061016b6101993660046110b6565b6104d4565b3480156101aa57600080fd5b506101da6101b93660046110e7565b6001600160a01b031660009081526002602052604090206001015460ff1690565b6040519015158152602001610175565b3480156101f657600080fd5b5061020a61020536600461110b565b6104f5565b005b34801561021857600080fd5b5061020a6102273660046110e7565b610800565b34801561023857600080fd5b5061016b600b5481565b34801561024e57600080fd5b5061016b61025d366004611149565b600092915050565b34801561027157600080fd5b5061028f610280366004611175565b50600093849350839250829150565b604080519485526020850193909352918301526060820152608001610175565b61016b6102bd3660046111a7565b610925565b3480156102ce57600080fd5b5061020a6102dd3660046110e7565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b34801561030b57600080fd5b5061031f61031a3660046110b6565b610970565b60405161017591906111ee565b34801561033857600080fd5b5061034c610347366004611202565b61099a565b60405161017592919061128b565b34801561036657600080fd5b5061031f610af2565b34801561037b57600080fd5b5060085461039090600160a01b900460ff1681565b60405160ff9091168152602001610175565b3480156103ae57600080fd5b506101da6103bd3660046110e7565b6001600160a01b03166000908152600160208190526040909120015460ff1690565b3480156103eb57600080fd5b5061020a6103fa3660046110e7565b610b1f565b34801561040b57600080fd5b5060065461031f906001600160a01b031681565b34801561042b57600080fd5b5061020a61043a36600461110b565b610c05565b34801561044b57600080fd5b5061016b61045a3660046110b6565b610f07565b34801561046b57600080fd5b5060085461031f906001600160a01b031681565b34801561048b57600080fd5b5061031f61049a3660046110b6565b610f17565b3480156104ab57600080fd5b5060095461016b565b3480156104c057600080fd5b5060075461031f906001600160a01b031681565b600a81815481106104e457600080fd5b600091825260209091200154905081565b6006546001600160a01b031633146105cd5760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b15801561054c57600080fd5b505afa158015610560573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058491906112ea565b9050336001600160a01b038216146105cb57600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b60405180910390fd5b505b6001600160a01b0382166000818152600160208181526040928390209182015492518515158152919360ff90931692917f6675ce8882cb71637de5903a193d218cc0544be9c0650cb83e0955f6aa2bf521910160405180910390a28080156106325750825b80610644575080158015610644575082155b1561064f5750505050565b82156106dd57604080518082018252600380548252600160208084018281526001600160a01b038a166000818152928490529582209451855551938201805460ff1916941515949094179093558154908101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556107f9565b600380546106ed9060019061132a565b815481106106fd576106fd61134f565b6000918252602090912001548254600380546001600160a01b0390931692909190811061072c5761072c61134f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816000015460016000600385600001548154811061077a5761077a61134f565b60009182526020808320909101546001600160a01b0316835282019290925260400190205560038054806107b0576107b0611365565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03861682526001908190526040822091825501805460ff191690555b50505b5050565b6006546001600160a01b031633146108cf5760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b15801561085757600080fd5b505afa15801561086b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088f91906112ea565b9050336001600160a01b038216146108cd57600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b505b600780546001600160a01b0319166001600160a01b0383161790556040517f8c1e6003ed33ca6748d4ad3dd4ecc949065c89dceb31fdf546a5289202763c6a9061091a9083906111ee565b60405180910390a150565b3360009081526001602081905260408220015460ff1661095a573360405163b6c60ea360e01b81526004016105c291906111ee565b610968848443424887610f27565b949350505050565b6004818154811061098057600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526002602052604081206001015460609060ff166109d257336040516332ea82ab60e01b81526004016105c291906111ee565b82158015906109e957506001600160a01b0386163b155b15610a09578560405163b5cf5b8f60e01b81526004016105c291906111ee565b600580546001600160a01b0319811633179091556040516001600160a01b03918216918816908790610a3e908890889061137b565b60006040518083038185875af1925050503d8060008114610a7b576040519150601f19603f3d011682016040523d82523d6000602084013e610a80565b606091505b50600580546001600160a01b0319166001600160a01b038581169190911790915560405192955090935088169033907f2d9d115ef3e4a606d698913b1eae831a3cdfe20d9a83d48007b0526749c3d46690610ae0908a908a908a9061138b565b60405180910390a35094509492505050565b6005546000906001600160a01b039081161415610b0f5750600090565b506005546001600160a01b031690565b600054610100900460ff16610b3a5760005460ff1615610b3e565b303b155b610ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105c2565b600054610100900460ff16158015610bc3576000805461ffff19166101011790555b600580546001600160a01b036001600160a01b031991821681179092556006805490911691841691909117905580156107fc576000805461ff00191690555050565b6006546001600160a01b03163314610cd45760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610c5c57600080fd5b505afa158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9491906112ea565b9050336001600160a01b03821614610cd257600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b505b6001600160a01b038216600081815260026020908152604091829020600181015492518515158152909360ff90931692917f49477e7356dbcb654ab85d7534b50126772d938130d1350e23e2540370c8dffa910160405180910390a2808015610d3a5750825b80610d4c575080158015610d4c575082155b15610d575750505050565b8215610de657604080518082018252600480548252600160208084018281526001600160a01b038a16600081815260029093529582209451855551938201805460ff1916941515949094179093558154908101825591527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790556107f9565b60048054610df69060019061132a565b81548110610e0657610e0661134f565b6000918252602090912001548254600480546001600160a01b03909316929091908110610e3557610e3561134f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508160000154600260006004856000015481548110610e8357610e8361134f565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610eb957610eb9611365565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03861682526002905260408120908155600101805460ff1916905550505050565b600981815481106104e457600080fd5b6003818154811061098057600080fd5b600954604080516001600160f81b031960f88a901b166020808301919091526bffffffffffffffffffffffff1960608a901b1660218301526001600160c01b031960c089811b8216603585015288901b16603d830152604582018490526065820186905260858083018690528351808403909101815260a590920190925280519101206000919060008215610fe1576009610fc360018561132a565b81548110610fd357610fd361134f565b906000526020600020015490505b6040805160208082018490528183018590528251808303840181526060830180855281519190920120600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af015533905260ff8c1660808201526001600160a01b038b1660a082015260c0810187905260e0810188905267ffffffffffffffff89166101008201529051829185917f5e3c1311ea442664e8b1611bfabef659120ea7a0a2cfc0667700bebc69cbffe1918190036101200190a3509098975050505050505050565b6000602082840312156110c857600080fd5b5035919050565b6001600160a01b03811681146110e457600080fd5b50565b6000602082840312156110f957600080fd5b8135611104816110cf565b9392505050565b6000806040838503121561111e57600080fd5b8235611129816110cf565b91506020830135801515811461113e57600080fd5b809150509250929050565b6000806040838503121561115c57600080fd5b8235611167816110cf565b946020939093013593505050565b6000806000806080858703121561118b57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156111bc57600080fd5b833560ff811681146111cd57600080fd5b925060208401356111dd816110cf565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b6000806000806060858703121561121857600080fd5b8435611223816110cf565b935060208501359250604085013567ffffffffffffffff8082111561124757600080fd5b818701915087601f83011261125b57600080fd5b81358181111561126a57600080fd5b88602082850101111561127c57600080fd5b95989497505060200194505050565b821515815260006020604081840152835180604085015260005b818110156112c1578581018301518582016060015282016112a5565b818111156112d3576000606083870101525b50601f01601f191692909201606001949350505050565b6000602082840312156112fc57600080fd5b8151611104816110cf565b6001600160a01b0393841681529183166020830152909116604082015260600190565b60008282101561134a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b8183823760009101908152919050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f191601019291505056fea2646970667358221220638283ba957e1d6ab58666ec03347d67b996d007e9507a938ee85850521439d564736f6c63430008090033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
