{
  "_format": "hh-sol-artifact-1",
  "contractName": "FlashModule",
  "sourceName": "contracts/flash.sol",
  "abi": [
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "fee",
      "outputs": [
        {
          "internalType": "uint24",
          "name": "",
          "type": "uint24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "feeChargePercent",
      "outputs": [
        {
          "internalType": "uint24",
          "name": "",
          "type": "uint24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "feeScaleX_128",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "feeScaleY_128",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountX",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountY",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "flash",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "actualAmountX",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "actualAmountY",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "paidX",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "paidY",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "leftMostPt",
      "outputs": [
        {
          "internalType": "int24",
          "name": "",
          "type": "int24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int24",
          "name": "",
          "type": "int24"
        }
      ],
      "name": "limitOrderData",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "sellingX",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "earnY",
          "type": "uint128"
        },
        {
          "internalType": "uint256",
          "name": "accEarnY",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "legacyAccEarnY",
          "type": "uint256"
        },
        {
          "internalType": "uint128",
          "name": "legacyEarnY",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "sellingY",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "earnX",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "legacyEarnX",
          "type": "uint128"
        },
        {
          "internalType": "uint256",
          "name": "accEarnX",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "legacyAccEarnX",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "liquidities",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "internalType": "uint256",
          "name": "lastFeeScaleX_128",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "lastFeeScaleY_128",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokenOwedX",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokenOwedY",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxLiquidPt",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "observations",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "timestamp",
          "type": "uint32"
        },
        {
          "internalType": "int56",
          "name": "accPoint",
          "type": "int56"
        },
        {
          "internalType": "bool",
          "name": "init",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int24",
          "name": "",
          "type": "int24"
        }
      ],
      "name": "orderOrEndpoint",
      "outputs": [
        {
          "internalType": "int24",
          "name": "",
          "type": "int24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int16",
          "name": "",
          "type": "int16"
        }
      ],
      "name": "pointBitmap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pointDelta",
      "outputs": [
        {
          "internalType": "int24",
          "name": "",
          "type": "int24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int24",
          "name": "",
          "type": "int24"
        }
      ],
      "name": "points",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "liquidSum",
          "type": "uint128"
        },
        {
          "internalType": "int128",
          "name": "liquidDelta",
          "type": "int128"
        },
        {
          "internalType": "uint256",
          "name": "accFeeXOut_128",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "accFeeYOut_128",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "isEndpt",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rightMostPt",
      "outputs": [
        {
          "internalType": "int24",
          "name": "",
          "type": "int24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "state",
      "outputs": [
        {
          "internalType": "uint160",
          "name": "sqrtPrice_96",
          "type": "uint160"
        },
        {
          "internalType": "int24",
          "name": "currentPoint",
          "type": "int24"
        },
        {
          "internalType": "uint16",
          "name": "observationCurrentIndex",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "observationQueueLen",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "observationNextQueueLen",
          "type": "uint16"
        },
        {
          "internalType": "bool",
          "name": "locked",
          "type": "bool"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "liquidityX",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenX",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenY",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalFeeXCharged",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalFeeYCharged",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "userEarnX",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "lastAccEarn",
          "type": "uint256"
        },
        {
          "internalType": "uint128",
          "name": "sellingRemain",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "sellingDec",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "earn",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "legacyEarn",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "earnAssign",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "userEarnY",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "lastAccEarn",
          "type": "uint256"
        },
        {
          "internalType": "uint128",
          "name": "sellingRemain",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "sellingDec",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "earn",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "legacyEarn",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "earnAssign",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610f81806100206000396000f3fe608060405234801561001057600080fd5b506004361061011d5760003560e01c80631621835f1461012257806316dc165b146101b95780631aae2e55146101d9578063252c09d7146101f057806333005cd51461022a578063490e6cbc14610235578063537c2d8e14610268578063588e59ae1461028857806358c51ce61461029157806362ccaafd146102a55780636d01843b146102f957806375c0e0d51461032b57806381794fba146103ae5780638790aca3146103da57806387e7d5fe146104a857806398a0f72e14610521578063b7d19fc414610541578063c19d93fb14610554578063c45a015514610618578063d3b168641461062b578063ddca3f431461063f578063e556289f14610655578063edcba3b214610660575b600080fd5b610176610130366004610db0565b600f60205260009081526040902080546001820154600283015460039093015491926001600160801b0380831693600160801b9384900482169383831693048216911686565b604080519687526001600160801b039586166020880152938516938601939093529083166060850152821660808401521660a082015260c0015b60405180910390f35b6002546101cc906001600160a01b031681565b6040516101b09190610e5b565b6101e260045481565b6040519081526020016101b0565b6102036101fe366004610db0565b610683565b6040805163ffffffff909416845260069290920b60208401521515908201526060016101b0565b6101e2620100105481565b610248610243366004610cf5565b6106b7565b6040805194855260208501939093529183015260608201526080016101b0565b6000546102759060020b81565b60405160029190910b81526020016101b0565b6101e260055481565b60035461027590600160b81b900460020b81565b6101766102b3366004610db0565b600e60205260009081526040902080546001820154600283015460039093015491926001600160801b0380831693600160801b9384900482169383831693048216911686565b60005461031390600160301b90046001600160801b031681565b6040516001600160801b0390911681526020016101b0565b610377610339366004610de9565b600b6020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b929060ff1685565b604080516001600160801b039096168652600f9490940b60208601529284019190915260608301521515608082015260a0016101b0565b62010016546103c690600160a01b900462ffffff1681565b60405162ffffff90911681526020016101b0565b6104476103e8366004610de9565b600d6020526000908152604090208054600182015460028301546003840154600485015460058601546006909601546001600160801b0380871697600160801b978890048216978583169581900483169480841694919004909216918a565b604080516001600160801b039b8c168152998b1660208b01528901979097526060880195909552928716608087015290861660a0860152851660c085015290931660e0830152610100820192909252610120810191909152610140016101b0565b6104ef6104b6366004610db0565b600960205260009081526040902080546001820154600283015460038401546004909401546001600160801b0390931693919290919085565b604080516001600160801b0390961686526020860194909452928401919091526060830152608082015260a0016101b0565b6101e261052f366004610dc8565b600a6020526000908152604090205481565b6003546101cc906001600160a01b031681565b6007546008546105b9916001600160a01b03811691600160a01b820460020b9161ffff600160b81b8204811692600160c81b8304821692600160d81b81049092169160ff600160e81b90910416906001600160801b0380821691600160801b90041688565b604080516001600160a01b03909916895260029790970b602089015261ffff9586169688019690965292841660608701529216608085015290151560a08401526001600160801b0390811660c08401521660e0820152610100016101b0565b6001546101cc906001600160a01b031681565b600054610275906301000000900460020b81565b6003546103c690600160a01b900462ffffff1681565b6101e26201000f5481565b61027561066e366004610de9565b600c6020526000908152604090205460020b81565b60108161ffff811061069457600080fd5b015463ffffffff81169150600160201b810460060b90600160581b900460ff1683565b6008546000908190819081906001600160801b0316806107025760405162461bcd60e51b81526020600482015260016024820152601360fa1b60448201526064015b60405180910390fd5b600354600090610723908b90600160a01b900462ffffff16620f42406109c2565b600354909150600090610747908b90600160a01b900462ffffff16620f42406109c2565b90506000610753610a1b565b9050600061075f610aff565b905061076b8d83610b2d565b98506107778c82610b2d565b9750881561079657600254610796906001600160a01b03168f8b610b47565b87156107b3576003546107b3906001600160a01b03168f8a610b47565b336001600160a01b031663c3924ed685858e8e6040518563ffffffff1660e01b81526004016107e59493929190610e6f565b600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b505050506000610821610a1b565b9050600061082d610aff565b90508161083a8786610eac565b111561086d5760405162461bcd60e51b815260206004820152600260248201526108cb60f31b60448201526064016106f9565b806108788685610eac565b11156108ab5760405162461bcd60e51b8152602060048201526002602482015261465960f01b60448201526064016106f9565b6108b58483610f03565b98506108c18382610f03565b975088156109435762010016546000906064906108ea90600160a01b900462ffffff168c610ee4565b6108f49190610ec4565b9050806201000f600082825461090a9190610eac565b90915550610931905061091d828c610f03565b600160801b8a6001600160801b0316610c48565b60045461093e9190610eac565b600455505b87156109af57620100165460009060649061096a90600160a01b900462ffffff168b610ee4565b6109749190610ec4565b90508062010010600082825461098a9190610eac565b9091555061099d905061091d828b610f03565b6005546109aa9190610eac565b600555505b5050505050505095509550955095915050565b60006109cf848484610c48565b9050600082806109ef57634e487b7160e01b600052601260045260246000fd5b8486091115610a14576000198110610a0657600080fd5b80610a1081610f1a565b9150505b9392505050565b600254604051600091829182916001600160a01b0316906370a0823160e01b90610a49903090602401610e5b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610a879190610e22565b600060405180830381855afa9150503d8060008114610ac2576040519150601f19603f3d011682016040523d82523d6000602084013e610ac7565b606091505b5091509150818015610adb57506020815110155b610ae457600080fd5b80806020019051810190610af89190610e0a565b9250505090565b600354604051600091829182916001600160a01b0316906370a0823160e01b90610a49903090602401610e5b565b600081831015610b3e575081610b41565b50805b92915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610ba39190610e22565b6000604051808303816000865af19150503d8060008114610be0576040519150601f19603f3d011682016040523d82523d6000602084013e610be5565b606091505b5091509150818015610c0f575080511580610c0f575080806020019051810190610c0f9190610d90565b610c415760405162461bcd60e51b8152602060048201526003602482015262544e5360e81b60448201526064016106f9565b5050505050565b600080806000198587098587029250828110838203039150508060001415610c825760008411610c7757600080fd5b508290049050610a14565b808411610c8e57600080fd5b6000848688096001861981018716968790046003810260029081188083028203028083028203028083028203028083028203028083028203029182029003026000889003889004909101858311909403939093029303949094049190911702949350505050565b600080600080600060808688031215610d0c578081fd5b85356001600160a01b0381168114610d22578182fd5b9450602086013593506040860135925060608601356001600160401b0380821115610d4b578283fd5b818801915088601f830112610d5e578283fd5b813581811115610d6c578384fd5b896020828501011115610d7d578384fd5b9699959850939650602001949392505050565b600060208284031215610da1578081fd5b81518015158114610a14578182fd5b600060208284031215610dc1578081fd5b5035919050565b600060208284031215610dd9578081fd5b81358060010b8114610a14578182fd5b600060208284031215610dfa578081fd5b81358060020b8114610a14578182fd5b600060208284031215610e1b578081fd5b5051919050565b60008251815b81811015610e425760208186018101518583015201610e28565b81811115610e505782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b84815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f909201601f191601019392505050565b60008219821115610ebf57610ebf610f35565b500190565b600082610edf57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610efe57610efe610f35565b500290565b600082821015610f1557610f15610f35565b500390565b6000600019821415610f2e57610f2e610f35565b5060010190565b634e487b7160e01b600052601160045260246000fdfea26469706673582212206c6831d3c446ec74de7037521fe691411a514f1fc4f384c9361917873a2bef8f64736f6c63430008040033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061011d5760003560e01c80631621835f1461012257806316dc165b146101b95780631aae2e55146101d9578063252c09d7146101f057806333005cd51461022a578063490e6cbc14610235578063537c2d8e14610268578063588e59ae1461028857806358c51ce61461029157806362ccaafd146102a55780636d01843b146102f957806375c0e0d51461032b57806381794fba146103ae5780638790aca3146103da57806387e7d5fe146104a857806398a0f72e14610521578063b7d19fc414610541578063c19d93fb14610554578063c45a015514610618578063d3b168641461062b578063ddca3f431461063f578063e556289f14610655578063edcba3b214610660575b600080fd5b610176610130366004610db0565b600f60205260009081526040902080546001820154600283015460039093015491926001600160801b0380831693600160801b9384900482169383831693048216911686565b604080519687526001600160801b039586166020880152938516938601939093529083166060850152821660808401521660a082015260c0015b60405180910390f35b6002546101cc906001600160a01b031681565b6040516101b09190610e5b565b6101e260045481565b6040519081526020016101b0565b6102036101fe366004610db0565b610683565b6040805163ffffffff909416845260069290920b60208401521515908201526060016101b0565b6101e2620100105481565b610248610243366004610cf5565b6106b7565b6040805194855260208501939093529183015260608201526080016101b0565b6000546102759060020b81565b60405160029190910b81526020016101b0565b6101e260055481565b60035461027590600160b81b900460020b81565b6101766102b3366004610db0565b600e60205260009081526040902080546001820154600283015460039093015491926001600160801b0380831693600160801b9384900482169383831693048216911686565b60005461031390600160301b90046001600160801b031681565b6040516001600160801b0390911681526020016101b0565b610377610339366004610de9565b600b6020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b929060ff1685565b604080516001600160801b039096168652600f9490940b60208601529284019190915260608301521515608082015260a0016101b0565b62010016546103c690600160a01b900462ffffff1681565b60405162ffffff90911681526020016101b0565b6104476103e8366004610de9565b600d6020526000908152604090208054600182015460028301546003840154600485015460058601546006909601546001600160801b0380871697600160801b978890048216978583169581900483169480841694919004909216918a565b604080516001600160801b039b8c168152998b1660208b01528901979097526060880195909552928716608087015290861660a0860152851660c085015290931660e0830152610100820192909252610120810191909152610140016101b0565b6104ef6104b6366004610db0565b600960205260009081526040902080546001820154600283015460038401546004909401546001600160801b0390931693919290919085565b604080516001600160801b0390961686526020860194909452928401919091526060830152608082015260a0016101b0565b6101e261052f366004610dc8565b600a6020526000908152604090205481565b6003546101cc906001600160a01b031681565b6007546008546105b9916001600160a01b03811691600160a01b820460020b9161ffff600160b81b8204811692600160c81b8304821692600160d81b81049092169160ff600160e81b90910416906001600160801b0380821691600160801b90041688565b604080516001600160a01b03909916895260029790970b602089015261ffff9586169688019690965292841660608701529216608085015290151560a08401526001600160801b0390811660c08401521660e0820152610100016101b0565b6001546101cc906001600160a01b031681565b600054610275906301000000900460020b81565b6003546103c690600160a01b900462ffffff1681565b6101e26201000f5481565b61027561066e366004610de9565b600c6020526000908152604090205460020b81565b60108161ffff811061069457600080fd5b015463ffffffff81169150600160201b810460060b90600160581b900460ff1683565b6008546000908190819081906001600160801b0316806107025760405162461bcd60e51b81526020600482015260016024820152601360fa1b60448201526064015b60405180910390fd5b600354600090610723908b90600160a01b900462ffffff16620f42406109c2565b600354909150600090610747908b90600160a01b900462ffffff16620f42406109c2565b90506000610753610a1b565b9050600061075f610aff565b905061076b8d83610b2d565b98506107778c82610b2d565b9750881561079657600254610796906001600160a01b03168f8b610b47565b87156107b3576003546107b3906001600160a01b03168f8a610b47565b336001600160a01b031663c3924ed685858e8e6040518563ffffffff1660e01b81526004016107e59493929190610e6f565b600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b505050506000610821610a1b565b9050600061082d610aff565b90508161083a8786610eac565b111561086d5760405162461bcd60e51b815260206004820152600260248201526108cb60f31b60448201526064016106f9565b806108788685610eac565b11156108ab5760405162461bcd60e51b8152602060048201526002602482015261465960f01b60448201526064016106f9565b6108b58483610f03565b98506108c18382610f03565b975088156109435762010016546000906064906108ea90600160a01b900462ffffff168c610ee4565b6108f49190610ec4565b9050806201000f600082825461090a9190610eac565b90915550610931905061091d828c610f03565b600160801b8a6001600160801b0316610c48565b60045461093e9190610eac565b600455505b87156109af57620100165460009060649061096a90600160a01b900462ffffff168b610ee4565b6109749190610ec4565b90508062010010600082825461098a9190610eac565b9091555061099d905061091d828b610f03565b6005546109aa9190610eac565b600555505b5050505050505095509550955095915050565b60006109cf848484610c48565b9050600082806109ef57634e487b7160e01b600052601260045260246000fd5b8486091115610a14576000198110610a0657600080fd5b80610a1081610f1a565b9150505b9392505050565b600254604051600091829182916001600160a01b0316906370a0823160e01b90610a49903090602401610e5b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610a879190610e22565b600060405180830381855afa9150503d8060008114610ac2576040519150601f19603f3d011682016040523d82523d6000602084013e610ac7565b606091505b5091509150818015610adb57506020815110155b610ae457600080fd5b80806020019051810190610af89190610e0a565b9250505090565b600354604051600091829182916001600160a01b0316906370a0823160e01b90610a49903090602401610e5b565b600081831015610b3e575081610b41565b50805b92915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610ba39190610e22565b6000604051808303816000865af19150503d8060008114610be0576040519150601f19603f3d011682016040523d82523d6000602084013e610be5565b606091505b5091509150818015610c0f575080511580610c0f575080806020019051810190610c0f9190610d90565b610c415760405162461bcd60e51b8152602060048201526003602482015262544e5360e81b60448201526064016106f9565b5050505050565b600080806000198587098587029250828110838203039150508060001415610c825760008411610c7757600080fd5b508290049050610a14565b808411610c8e57600080fd5b6000848688096001861981018716968790046003810260029081188083028203028083028203028083028203028083028203028083028203029182029003026000889003889004909101858311909403939093029303949094049190911702949350505050565b600080600080600060808688031215610d0c578081fd5b85356001600160a01b0381168114610d22578182fd5b9450602086013593506040860135925060608601356001600160401b0380821115610d4b578283fd5b818801915088601f830112610d5e578283fd5b813581811115610d6c578384fd5b896020828501011115610d7d578384fd5b9699959850939650602001949392505050565b600060208284031215610da1578081fd5b81518015158114610a14578182fd5b600060208284031215610dc1578081fd5b5035919050565b600060208284031215610dd9578081fd5b81358060010b8114610a14578182fd5b600060208284031215610dfa578081fd5b81358060020b8114610a14578182fd5b600060208284031215610e1b578081fd5b5051919050565b60008251815b81811015610e425760208186018101518583015201610e28565b81811115610e505782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b84815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f909201601f191601019392505050565b60008219821115610ebf57610ebf610f35565b500190565b600082610edf57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610efe57610efe610f35565b500290565b600082821015610f1557610f15610f35565b500390565b6000600019821415610f2e57610f2e610f35565b5060010190565b634e487b7160e01b600052601160045260246000fdfea26469706673582212206c6831d3c446ec74de7037521fe691411a514f1fc4f384c9361917873a2bef8f64736f6c63430008040033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
