{
  "_format": "hh-sol-artifact-1",
  "contractName": "AmmModule",
  "sourceName": "contracts/protocol/modules/v1/AmmModule.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IController",
          "name": "_controller",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_ammPool",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "_ammPoolBalancesDelta",
          "type": "int256"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "_components",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "_componentBalancesDelta",
          "type": "int256[]"
        }
      ],
      "name": "LiquidityAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_ammPool",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "_ammPoolBalancesDelta",
          "type": "int256"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "_components",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "_componentBalancesDelta",
          "type": "int256[]"
        }
      ],
      "name": "LiquidityRemoved",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_ammName",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "_ammPool",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_minPoolTokenPositionUnit",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "_components",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_maxComponentUnits",
          "type": "uint256[]"
        }
      ],
      "name": "addLiquidity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_ammName",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "_ammPool",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_minPoolTokenPositionUnit",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_maxComponentUnit",
          "type": "uint256"
        }
      ],
      "name": "addLiquiditySingleAsset",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "controller",
      "outputs": [
        {
          "internalType": "contract IController",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_ammName",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "_ammPool",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_poolTokenPositionUnits",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "_components",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_minComponentUnitsReceived",
          "type": "uint256[]"
        }
      ],
      "name": "removeLiquidity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_ammName",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "_ammPool",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_poolTokenPositionUnits",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_minComponentUnitsReceived",
          "type": "uint256"
        }
      ],
      "name": "removeLiquiditySingleAsset",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "removeModule",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162002cf338038062002cf383398101604081905262000034916200005e565b600080546001600160a01b0319166001600160a01b0392909216919091179055600180556200008e565b60006020828403121562000070578081fd5b81516001600160a01b038116811462000087578182fd5b9392505050565b612c55806200009e6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637f22d5a91161005b5780637f22d5a9146100bd578063847ef08d146100d0578063c4d66de8146100d8578063f77c4791146100eb5761007d565b806323d22fcc1461008257806325da5bce146100975780634301f50b146100aa575b600080fd5b6100956100903660046122c6565b610109565b005b6100956100a53660046122c6565b6101f5565b6100956100b836600461234d565b6102c0565b6100956100cb36600461234d565b610406565b610095610532565b6100956100e63660046122aa565b610534565b6100f36105a3565b60405161010091906124c4565b60405180910390f35b600260015414156101355760405162461bcd60e51b815260040161012c90612b06565b60405180910390fd5b600260015585610144816105b2565b61014c611fd5565b61015a88888887878a610600565b9050610165816106aa565b61016e81610744565b610177816108b1565b606061018282610971565b9050600061018f83610a8b565b9050876001600160a01b03168a6001600160a01b03167ffb25cb38aa450eb8599fc4cfc9ff93dcfe388e7edcc269f19b7b87c03db4320583866101200151866040516101dd9392919061264f565b60405180910390a35050600180555050505050505050565b600260015414156102185760405162461bcd60e51b815260040161012c90612b06565b600260015585610227816105b2565b61022f611fd5565b61023d88888887878a610600565b905061024881610ad7565b61025181610b75565b61025a81610cf3565b600061026582610a8b565b9050606061027283610971565b9050876001600160a01b03168a6001600160a01b03167f0688ed60083117bc181b80cb6e15c45b1b41221b6982336e8610c9fc48eec17d84866101200151856040516101dd9392919061264f565b600260015414156102e35760405162461bcd60e51b815260040161012c90612b06565b6002600155876102f2816105b2565b6102fa611fd5565b61036c8a8a8a89898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152508f9250610e09915050565b9050610377816106aa565b61038081610f88565b610389816108b1565b606061039482610971565b905060006103a183610a8b565b9050896001600160a01b03168c6001600160a01b03167ffb25cb38aa450eb8599fc4cfc9ff93dcfe388e7edcc269f19b7b87c03db43205838b8b876040516103ec94939291906125f0565b60405180910390a350506001805550505050505050505050565b600260015414156104295760405162461bcd60e51b815260040161012c90612b06565b600260015587610438816105b2565b610440611fd5565b6104b28a8a8a89898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152508f9250610e09915050565b90506104bd81610ad7565b6104c681610fda565b6104cf81610cf3565b60006104da82610a8b565b905060606104e783610971565b9050896001600160a01b03168c6001600160a01b03167f0688ed60083117bc181b80cb6e15c45b1b41221b6982336e8610c9fc48eec17d848b8b866040516103ec94939291906125f0565b565b8033610540828261102c565b8261054a81611052565b836001600160a01b0316630ffe0f1e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561058557600080fd5b505af1158015610599573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031681565b6105bc8133611113565b6105d85760405162461bcd60e51b815260040161012c90612a54565b6105e1816111a3565b6105fd5760405162461bcd60e51b815260040161012c906126cf565b50565b610608611fd5565b60408051600180825281830190925260609160208083019080368337019050509050848160008151811061063857fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050848160008151811061068357fe5b60200260200101818152505061069d898989858589610e09565b9998505050505050505050565b6106b3816112a7565b60005b8161012001515181101561074057600082610120015182815181106106d757fe5b6020026020010151905061071b8184610100015184815181106106f657fe5b602002602001015185600001516001600160a01b031661139d9092919063ffffffff16565b6107375760405162461bcd60e51b815260040161012c9061277e565b506001016106b6565b5050565b600080606083604001516001600160a01b0316636d3188f88560000151866060015187610120015160008151811061077857fe5b60200260200101518860e0015160008151811061079157fe5b60200260200101518960c001516040518663ffffffff1660e01b81526004016107be9594939291906124d8565b60006040518083038186803b1580156107d657600080fd5b505afa1580156107ea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610812919081019061214c565b9250925092506108218461142e565b83516040516347b7819960e11b81526001600160a01b0390911690638f6f033290610854908690869086906004016125c0565b600060405180830381600087803b15801561086e57600080fd5b505af1158015610882573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108aa919081019061226f565b5050505050565b606081015181516040516370a0823160e01b81526000926001600160a01b0316916370a08231916108e591906004016124c4565b60206040518083038186803b1580156108fd57600080fd5b505afa158015610911573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610935919061240e565b905061095282608001518360c0015161152790919063ffffffff16565b8110156107405760405162461bcd60e51b815260040161012c9061296b565b6060808261012001515167ffffffffffffffff8111801561099157600080fd5b506040519080825280602002602001820160405280156109bb578160200160208202803683370190505b50905060005b83610120015151811015610a84576000610a2885610120015183815181106109e557fe5b602002602001015186602001518760a001518581518110610a0257fe5b602002602001015188600001516001600160a01b031661154c909392919063ffffffff16565b50509050610a64610a4f8660a001518481518110610a4257fe5b6020026020010151611692565b610a5883611692565b9063ffffffff6116bb16565b838381518110610a7057fe5b6020908102919091010152506001016109c1565b5092915050565b60608101516020820151608083015183516000938493610abc936001600160a01b039093169263ffffffff61154c16565b50509050610ad0610a4f8460800151611692565b9392505050565b610ae0816112a7565b60005b81610120015151811015610b315760008261010001518281518110610b0457fe5b602002602001015111610b295760405162461bcd60e51b815260040161012c9061268d565b600101610ae3565b50606081015160c08201518251610b59926001600160a01b039091169163ffffffff61139d16565b6105fd5760405162461bcd60e51b815260040161012c90612835565b600080606083604001516001600160a01b0316637fdefdad85600001518660600151876101200151600081518110610ba957fe5b60200260200101518860e00151600081518110610bc257fe5b60200260200101518960c001516040518663ffffffff1660e01b8152600401610bef9594939291906124d8565b60006040518083038186803b158015610c0757600080fd5b505afa158015610c1b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c43919081019061214c565b925092509250610821846060015185604001516001600160a01b0316630e8edd8687606001516040518263ffffffff1660e01b8152600401610c8591906124c4565b60206040518083038186803b158015610c9d57600080fd5b505afa158015610cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd59190612130565b60c087015187516001600160a01b031692919063ffffffff61170116565b60005b816101200151518110156107405760008261012001518281518110610d1757fe5b60200260200101516001600160a01b03166370a0823184600001516040518263ffffffff1660e01b8152600401610d4e91906124c4565b60206040518083038186803b158015610d6657600080fd5b505afa158015610d7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9e919061240e565b9050610de18360a001518381518110610db357fe5b60200260200101518460e001518481518110610dcb57fe5b602002602001015161152790919063ffffffff16565b811015610e005760405162461bcd60e51b815260040161012c90612717565b50600101610cf6565b610e11611fd5565b610e19611fd5565b6001600160a01b038816808252604080516318160ddd60e01b815290516318160ddd91600480820192602092909190829003018186803b158015610e5c57600080fd5b505afa158015610e70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e94919061240e565b6020820152610ea2876117d0565b6001600160a01b039081166040808401919091529087166060830181905290516370a0823160e01b81526370a0823190610ee0908b906004016124c4565b60206040518083038186803b158015610ef857600080fd5b505afa158015610f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f30919061240e565b6080820152610f3f88866117e7565b60a08201526020810151610f59908463ffffffff6118f116565b60c0820152610f688885611903565b60e082015261010081019390935250506101208101919091529392505050565b600080606083604001516001600160a01b03166346313c9c856000015186606001518761012001518860e001518960c001516040518663ffffffff1660e01b81526004016107be95949392919061250c565b600080606083604001516001600160a01b0316634827e1e7856000015186606001518761012001518860e001518960c001516040518663ffffffff1660e01b8152600401610bef95949392919061250c565b6110368282611113565b6107405760405162461bcd60e51b815260040161012c90612a54565b600054604051631d3af8fb60e21b81526001600160a01b03909116906374ebe3ec906110829084906004016124c4565b60206040518083038186803b15801561109a57600080fd5b505afa1580156110ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d2919061224f565b6110ee5760405162461bcd60e51b815260040161012c90612a11565b6110f781611a12565b6105fd5760405162461bcd60e51b815260040161012c906127fe565b6000816001600160a01b0316836001600160a01b031663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b15801561115857600080fd5b505afa15801561116c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111909190612130565b6001600160a01b03161490505b92915050565b60008054604051631d3af8fb60e21b81526001600160a01b03909116906374ebe3ec906111d49085906004016124c4565b60206040518083038186803b1580156111ec57600080fd5b505afa158015611200573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611224919061224f565b801561119d57506040516335fc6c9f60e21b81526001600160a01b0383169063d7f1b27c906112579030906004016124c4565b60206040518083038186803b15801561126f57600080fd5b505afa158015611283573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119d919061224f565b8061012001515181610100015151146112d25760405162461bcd60e51b815260040161012c9061287d565b60008160c00151116112f65760405162461bcd60e51b815260040161012c90612acf565b80604001516001600160a01b0316635f5d556b82606001518361012001516040518363ffffffff1660e01b8152600401611331929190612583565b60206040518083038186803b15801561134957600080fd5b505afa15801561135d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611381919061224f565b6105fd5760405162461bcd60e51b815260040161012c90612b3d565b60006113a882611692565b6040516366cb8d2f60e01b81526001600160a01b038616906366cb8d2f906113d49087906004016124c4565b60206040518083038186803b1580156113ec57600080fd5b505afa158015611400573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611424919061240e565b1215949350505050565b600081604001516001600160a01b0316630e8edd8683606001516040518263ffffffff1660e01b815260040161146491906124c4565b60206040518083038186803b15801561147c57600080fd5b505afa158015611490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b49190612130565b905060005b826101200151518110156115225761151a83610120015182815181106114db57fe5b6020026020010151838560e0015184815181106114f457fe5b602002602001015186600001516001600160a01b0316611701909392919063ffffffff16565b6001016114b9565b505050565b600082820183811015610ad05760405162461bcd60e51b815260040161012c906127c7565b600080600080866001600160a01b03166370a08231896040518263ffffffff1660e01b815260040161157e91906124c4565b60206040518083038186803b15801561159657600080fd5b505afa1580156115aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ce919061240e565b90506000611656896001600160a01b03166366cb8d2f8a6040518263ffffffff1660e01b815260040161160191906124c4565b60206040518083038186803b15801561161957600080fd5b505afa15801561162d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611651919061240e565b611a41565b9050600082156116735761166c88888585611a63565b9050611677565b5060005b6116828a8a83611ab2565b9199909850909650945050505050565b6000600160ff1b82106116b75760405162461bcd60e51b815260040161012c906129c9565b5090565b60008183038183128015906116d05750838113155b806116e557506000831280156116e557508381135b610ad05760405162461bcd60e51b815260040161012c90612a8b565b606082826040516024016117169291906125a7565b60408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516347b7819960e11b81529091506001600160a01b03861690638f6f03329061177290879060009086906004016125c0565b600060405180830381600087803b15801561178c57600080fd5b505af11580156117a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117c8919081019061226f565b505050505050565b6000806117dc83611c12565b9050610ad081611c1d565b606080825167ffffffffffffffff8111801561180257600080fd5b5060405190808252806020026020018201604052801561182c578160200160208202803683370190505b50905060005b83518110156118e95783818151811061184757fe5b60200260200101516001600160a01b03166370a08231866040518263ffffffff1660e01b815260040161187a91906124c4565b60206040518083038186803b15801561189257600080fd5b505afa1580156118a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ca919061240e565b8282815181106118d657fe5b6020908102919091010152600101611832565b509392505050565b6000610ad0838363ffffffff611cda16565b60606000836001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561194057600080fd5b505afa158015611954573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611978919061240e565b90506060835167ffffffffffffffff8111801561199457600080fd5b506040519080825280602002602001820160405280156119be578160200160208202803683370190505b50905060005b8451811015611a09576119ea838683815181106119dd57fe5b60200260200101516118f1565b8282815181106119f657fe5b60209081029190910101526001016119c4565b50949350505050565b6040516353bae5f760e01b81526000906001600160a01b038316906353bae5f7906112579030906004016124c4565b6000808212156116b75760405162461bcd60e51b815260040161012c906128f5565b600080611a86611a79848863ffffffff611cda16565b869063ffffffff611d0416565b9050611aa886611a9c868463ffffffff611d0416565b9063ffffffff611d4616565b9695505050505050565b6000611abe8484611d64565b905080158015611ace5750600082115b15611b4557611add8484611deb565b611b40576040516304e3532760e41b81526001600160a01b03851690634e35327090611b0d9086906004016124c4565b600060405180830381600087803b158015611b2757600080fd5b505af1158015611b3b573d6000803e3d6000fd5b505050505b611bc2565b808015611b50575081155b15611bc257611b5f8484611deb565b611bc257604051636f86c89760e01b81526001600160a01b03851690636f86c89790611b8f9086906004016124c4565b600060405180830381600087803b158015611ba957600080fd5b505af1158015611bbd573d6000803e3d6000fd5b505050505b836001600160a01b0316632ba57d1784611bdb85611692565b6040518363ffffffff1660e01b8152600401611bf89291906125a7565b600060405180830381600087803b15801561058557600080fd5b805160209091012090565b600080548190611c35906001600160a01b0316611e77565b6001600160a01b031663e6d642c530856040518363ffffffff1660e01b8152600401611c629291906125a7565b60206040518083038186803b158015611c7a57600080fd5b505afa158015611c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb29190612130565b90506001600160a01b03811661119d5760405162461bcd60e51b815260040161012c906128c6565b6000610ad0670de0b6b3a7640000611cf8858563ffffffff611ef616565b9063ffffffff611f3016565b6000610ad083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f72565b6000610ad082611cf885670de0b6b3a764000063ffffffff611ef616565b600080836001600160a01b03166366cb8d2f846040518263ffffffff1660e01b8152600401611d9391906124c4565b60206040518083038186803b158015611dab57600080fd5b505afa158015611dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de3919061240e565b139392505050565b600080836001600160a01b031663a7bdad03846040518263ffffffff1660e01b8152600401611e1a91906124c4565b60006040518083038186803b158015611e3257600080fd5b505afa158015611e46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e6e91908101906121a4565b51119392505050565b6040516373b2e76b60e11b81526000906001600160a01b0383169063e765ced690611ea6908490600401612b86565b60206040518083038186803b158015611ebe57600080fd5b505afa158015611ed2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119d9190612130565b600082611f055750600061119d565b82820282848281611f1257fe5b0414610ad05760405162461bcd60e51b815260040161012c9061292a565b6000610ad083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f9e565b60008184841115611f965760405162461bcd60e51b815260040161012c919061267a565b505050900390565b60008183611fbf5760405162461bcd60e51b815260040161012c919061267a565b506000838581611fcb57fe5b0495945050505050565b60405180610140016040528060006001600160a01b031681526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160608152602001600081526020016060815260200160608152602001606081525090565b805161119d81612c0a565b60008083601f84011261205f578182fd5b50813567ffffffffffffffff811115612076578182fd5b602083019150836020808302850101111561209057600080fd5b9250929050565b600082601f8301126120a7578081fd5b81516120ba6120b582612bb6565b612b8f565b91508082528360208285010111156120d157600080fd5b610a84816020840160208601612bda565b600082601f8301126120f2578081fd5b81356121006120b582612bb6565b915080825283602082850101111561211757600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215612141578081fd5b8151610ad081612c0a565b600080600060608486031215612160578182fd5b835161216b81612c0a565b60208501516040860151919450925067ffffffffffffffff81111561218e578182fd5b61219a86828701612097565b9150509250925092565b600060208083850312156121b6578182fd5b825167ffffffffffffffff808211156121cd578384fd5b81850186601f8201126121de578485fd5b80519250818311156121ee578485fd5b83830291506121fe848301612b8f565b8381528481019082860184840187018a1015612218578788fd5b8794505b858510156122425761222e8a82612043565b83526001949094019391860191860161221c565b5098975050505050505050565b600060208284031215612260578081fd5b81518015158114610ad0578182fd5b600060208284031215612280578081fd5b815167ffffffffffffffff811115612296578182fd5b6122a284828501612097565b949350505050565b6000602082840312156122bb578081fd5b8135610ad081612c0a565b60008060008060008060c087890312156122de578182fd5b86356122e981612c0a565b9550602087013567ffffffffffffffff811115612304578283fd5b61231089828a016120e2565b955050604087013561232181612c0a565b935060608701359250608087013561233881612c0a565b8092505060a087013590509295509295509295565b60008060008060008060008060c0898b031215612368578182fd5b883561237381612c0a565b9750602089013567ffffffffffffffff8082111561238f578384fd5b61239b8c838d016120e2565b985060408b013591506123ad82612c0a565b90965060608a0135955060808a013590808211156123c9578384fd5b6123d58c838d0161204e565b909650945060a08b01359150808211156123ed578384fd5b506123fa8b828c0161204e565b999c989b5096995094979396929594505050565b60006020828403121561241f578081fd5b5051919050565b6000815180845260208085019450808401835b8381101561245e5781516001600160a01b031687529582019590820190600101612439565b509495945050505050565b6000815180845260208085019450808401835b8381101561245e5781518752958201959082019060010161247c565b600081518084526124b0816020860160208601612bda565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b600060018060a01b03808816835260208188168185015260a0604085015261253760a0850188612426565b84810360608601528651808252828801935090820190845b8181101561256b5784518352938301939183019160010161254f565b50508093505050508260808301529695505050505050565b6001600160a01b03831681526040602082018190526000906122a290830184612426565b6001600160a01b03929092168252602082015260400190565b600060018060a01b0385168252836020830152606060408301526125e76060830184612498565b95945050505050565b84815260606020808301829052908201849052600090859060808401835b8781101561263c57833561262181612c0a565b6001600160a01b03168252928201929082019060010161260e565b50848103604086015261069d8187612469565b6000848252606060208301526126686060830185612426565b8281036040840152611aa88185612469565b600060208252610ad06020830184612498565b60208082526022908201527f436f6d706f6e656e74207175616e74697479206d757374206265206e6f6e7a65604082015261726f60f01b606082015260800190565b60208082526028908201527f4d75737420626520612076616c696420616e6420696e697469616c697a65642060408201526729b2ba2a37b5b2b760c11b606082015260800190565b60208082526041908201527f556e6465726c79696e6720746f6b656e73207265636569766564206d7573742060408201527f62652067726561746572207468616e206d696e696d756d2073706563696669656060820152601960fa1b608082015260a00190565b60208082526029908201527f556e69742063616e742062652067726561746572207468616e20706f736974696040820152681bdb9cc81bdddb995960ba1b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601e908201527f4d7573742062652070656e64696e6720696e697469616c697a6174696f6e0000604082015260600190565b60208082526028908201527f536574546f6b656e206d757374206f776e20656e6f756768206c6971756964696040820152673a3c903a37b5b2b760c11b606082015260800190565b60208082526029908201527f436f6d706f6e656e747320616e6420756e697473206d757374206265206571756040820152680c2d840d8cadccee8d60bb1b606082015260800190565b60208082526015908201527426bab9ba103132903b30b634b21030b230b83a32b960591b604082015260600190565b6020808252818101527f53616665436173743a2076616c7565206d75737420626520706f736974697665604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b602080825260409082018190527f4c697175696469747920746f6b656e73207265636569766564206d7573742062908201527f652067726561746572207468616e206d696e696d756d20737065636966696564606082015260800190565b60208082526028908201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604082015267371034b73a191a9b60c11b606082015260800190565b60208082526023908201527f4d75737420626520636f6e74726f6c6c65722d656e61626c656420536574546f60408201526235b2b760e91b606082015260800190565b6020808252601c908201527f4d7573742062652074686520536574546f6b656e206d616e6167657200000000604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b6020808252601e908201527f546f6b656e207175616e74697479206d757374206265206e6f6e7a65726f0000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526029908201527f506f6f6c20746f6b656e206d75737420626520656e61626c6564206f6e207468604082015268329020b230b83a32b960b91b606082015260800190565b90815260200190565b60405181810167ffffffffffffffff81118282101715612bae57600080fd5b604052919050565b600067ffffffffffffffff821115612bcc578081fd5b50601f01601f191660200190565b60005b83811015612bf5578181015183820152602001612bdd565b83811115612c04576000848401525b50505050565b6001600160a01b03811681146105fd57600080fdfea26469706673582212200be19526aa32d60778e8590e2ced3729bd007eee08c05fa093d5d8641a4a075a64736f6c634300060a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80637f22d5a91161005b5780637f22d5a9146100bd578063847ef08d146100d0578063c4d66de8146100d8578063f77c4791146100eb5761007d565b806323d22fcc1461008257806325da5bce146100975780634301f50b146100aa575b600080fd5b6100956100903660046122c6565b610109565b005b6100956100a53660046122c6565b6101f5565b6100956100b836600461234d565b6102c0565b6100956100cb36600461234d565b610406565b610095610532565b6100956100e63660046122aa565b610534565b6100f36105a3565b60405161010091906124c4565b60405180910390f35b600260015414156101355760405162461bcd60e51b815260040161012c90612b06565b60405180910390fd5b600260015585610144816105b2565b61014c611fd5565b61015a88888887878a610600565b9050610165816106aa565b61016e81610744565b610177816108b1565b606061018282610971565b9050600061018f83610a8b565b9050876001600160a01b03168a6001600160a01b03167ffb25cb38aa450eb8599fc4cfc9ff93dcfe388e7edcc269f19b7b87c03db4320583866101200151866040516101dd9392919061264f565b60405180910390a35050600180555050505050505050565b600260015414156102185760405162461bcd60e51b815260040161012c90612b06565b600260015585610227816105b2565b61022f611fd5565b61023d88888887878a610600565b905061024881610ad7565b61025181610b75565b61025a81610cf3565b600061026582610a8b565b9050606061027283610971565b9050876001600160a01b03168a6001600160a01b03167f0688ed60083117bc181b80cb6e15c45b1b41221b6982336e8610c9fc48eec17d84866101200151856040516101dd9392919061264f565b600260015414156102e35760405162461bcd60e51b815260040161012c90612b06565b6002600155876102f2816105b2565b6102fa611fd5565b61036c8a8a8a89898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152508f9250610e09915050565b9050610377816106aa565b61038081610f88565b610389816108b1565b606061039482610971565b905060006103a183610a8b565b9050896001600160a01b03168c6001600160a01b03167ffb25cb38aa450eb8599fc4cfc9ff93dcfe388e7edcc269f19b7b87c03db43205838b8b876040516103ec94939291906125f0565b60405180910390a350506001805550505050505050505050565b600260015414156104295760405162461bcd60e51b815260040161012c90612b06565b600260015587610438816105b2565b610440611fd5565b6104b28a8a8a89898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152508f9250610e09915050565b90506104bd81610ad7565b6104c681610fda565b6104cf81610cf3565b60006104da82610a8b565b905060606104e783610971565b9050896001600160a01b03168c6001600160a01b03167f0688ed60083117bc181b80cb6e15c45b1b41221b6982336e8610c9fc48eec17d848b8b866040516103ec94939291906125f0565b565b8033610540828261102c565b8261054a81611052565b836001600160a01b0316630ffe0f1e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561058557600080fd5b505af1158015610599573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031681565b6105bc8133611113565b6105d85760405162461bcd60e51b815260040161012c90612a54565b6105e1816111a3565b6105fd5760405162461bcd60e51b815260040161012c906126cf565b50565b610608611fd5565b60408051600180825281830190925260609160208083019080368337019050509050848160008151811061063857fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050848160008151811061068357fe5b60200260200101818152505061069d898989858589610e09565b9998505050505050505050565b6106b3816112a7565b60005b8161012001515181101561074057600082610120015182815181106106d757fe5b6020026020010151905061071b8184610100015184815181106106f657fe5b602002602001015185600001516001600160a01b031661139d9092919063ffffffff16565b6107375760405162461bcd60e51b815260040161012c9061277e565b506001016106b6565b5050565b600080606083604001516001600160a01b0316636d3188f88560000151866060015187610120015160008151811061077857fe5b60200260200101518860e0015160008151811061079157fe5b60200260200101518960c001516040518663ffffffff1660e01b81526004016107be9594939291906124d8565b60006040518083038186803b1580156107d657600080fd5b505afa1580156107ea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610812919081019061214c565b9250925092506108218461142e565b83516040516347b7819960e11b81526001600160a01b0390911690638f6f033290610854908690869086906004016125c0565b600060405180830381600087803b15801561086e57600080fd5b505af1158015610882573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108aa919081019061226f565b5050505050565b606081015181516040516370a0823160e01b81526000926001600160a01b0316916370a08231916108e591906004016124c4565b60206040518083038186803b1580156108fd57600080fd5b505afa158015610911573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610935919061240e565b905061095282608001518360c0015161152790919063ffffffff16565b8110156107405760405162461bcd60e51b815260040161012c9061296b565b6060808261012001515167ffffffffffffffff8111801561099157600080fd5b506040519080825280602002602001820160405280156109bb578160200160208202803683370190505b50905060005b83610120015151811015610a84576000610a2885610120015183815181106109e557fe5b602002602001015186602001518760a001518581518110610a0257fe5b602002602001015188600001516001600160a01b031661154c909392919063ffffffff16565b50509050610a64610a4f8660a001518481518110610a4257fe5b6020026020010151611692565b610a5883611692565b9063ffffffff6116bb16565b838381518110610a7057fe5b6020908102919091010152506001016109c1565b5092915050565b60608101516020820151608083015183516000938493610abc936001600160a01b039093169263ffffffff61154c16565b50509050610ad0610a4f8460800151611692565b9392505050565b610ae0816112a7565b60005b81610120015151811015610b315760008261010001518281518110610b0457fe5b602002602001015111610b295760405162461bcd60e51b815260040161012c9061268d565b600101610ae3565b50606081015160c08201518251610b59926001600160a01b039091169163ffffffff61139d16565b6105fd5760405162461bcd60e51b815260040161012c90612835565b600080606083604001516001600160a01b0316637fdefdad85600001518660600151876101200151600081518110610ba957fe5b60200260200101518860e00151600081518110610bc257fe5b60200260200101518960c001516040518663ffffffff1660e01b8152600401610bef9594939291906124d8565b60006040518083038186803b158015610c0757600080fd5b505afa158015610c1b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c43919081019061214c565b925092509250610821846060015185604001516001600160a01b0316630e8edd8687606001516040518263ffffffff1660e01b8152600401610c8591906124c4565b60206040518083038186803b158015610c9d57600080fd5b505afa158015610cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd59190612130565b60c087015187516001600160a01b031692919063ffffffff61170116565b60005b816101200151518110156107405760008261012001518281518110610d1757fe5b60200260200101516001600160a01b03166370a0823184600001516040518263ffffffff1660e01b8152600401610d4e91906124c4565b60206040518083038186803b158015610d6657600080fd5b505afa158015610d7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9e919061240e565b9050610de18360a001518381518110610db357fe5b60200260200101518460e001518481518110610dcb57fe5b602002602001015161152790919063ffffffff16565b811015610e005760405162461bcd60e51b815260040161012c90612717565b50600101610cf6565b610e11611fd5565b610e19611fd5565b6001600160a01b038816808252604080516318160ddd60e01b815290516318160ddd91600480820192602092909190829003018186803b158015610e5c57600080fd5b505afa158015610e70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e94919061240e565b6020820152610ea2876117d0565b6001600160a01b039081166040808401919091529087166060830181905290516370a0823160e01b81526370a0823190610ee0908b906004016124c4565b60206040518083038186803b158015610ef857600080fd5b505afa158015610f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f30919061240e565b6080820152610f3f88866117e7565b60a08201526020810151610f59908463ffffffff6118f116565b60c0820152610f688885611903565b60e082015261010081019390935250506101208101919091529392505050565b600080606083604001516001600160a01b03166346313c9c856000015186606001518761012001518860e001518960c001516040518663ffffffff1660e01b81526004016107be95949392919061250c565b600080606083604001516001600160a01b0316634827e1e7856000015186606001518761012001518860e001518960c001516040518663ffffffff1660e01b8152600401610bef95949392919061250c565b6110368282611113565b6107405760405162461bcd60e51b815260040161012c90612a54565b600054604051631d3af8fb60e21b81526001600160a01b03909116906374ebe3ec906110829084906004016124c4565b60206040518083038186803b15801561109a57600080fd5b505afa1580156110ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d2919061224f565b6110ee5760405162461bcd60e51b815260040161012c90612a11565b6110f781611a12565b6105fd5760405162461bcd60e51b815260040161012c906127fe565b6000816001600160a01b0316836001600160a01b031663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b15801561115857600080fd5b505afa15801561116c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111909190612130565b6001600160a01b03161490505b92915050565b60008054604051631d3af8fb60e21b81526001600160a01b03909116906374ebe3ec906111d49085906004016124c4565b60206040518083038186803b1580156111ec57600080fd5b505afa158015611200573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611224919061224f565b801561119d57506040516335fc6c9f60e21b81526001600160a01b0383169063d7f1b27c906112579030906004016124c4565b60206040518083038186803b15801561126f57600080fd5b505afa158015611283573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119d919061224f565b8061012001515181610100015151146112d25760405162461bcd60e51b815260040161012c9061287d565b60008160c00151116112f65760405162461bcd60e51b815260040161012c90612acf565b80604001516001600160a01b0316635f5d556b82606001518361012001516040518363ffffffff1660e01b8152600401611331929190612583565b60206040518083038186803b15801561134957600080fd5b505afa15801561135d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611381919061224f565b6105fd5760405162461bcd60e51b815260040161012c90612b3d565b60006113a882611692565b6040516366cb8d2f60e01b81526001600160a01b038616906366cb8d2f906113d49087906004016124c4565b60206040518083038186803b1580156113ec57600080fd5b505afa158015611400573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611424919061240e565b1215949350505050565b600081604001516001600160a01b0316630e8edd8683606001516040518263ffffffff1660e01b815260040161146491906124c4565b60206040518083038186803b15801561147c57600080fd5b505afa158015611490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b49190612130565b905060005b826101200151518110156115225761151a83610120015182815181106114db57fe5b6020026020010151838560e0015184815181106114f457fe5b602002602001015186600001516001600160a01b0316611701909392919063ffffffff16565b6001016114b9565b505050565b600082820183811015610ad05760405162461bcd60e51b815260040161012c906127c7565b600080600080866001600160a01b03166370a08231896040518263ffffffff1660e01b815260040161157e91906124c4565b60206040518083038186803b15801561159657600080fd5b505afa1580156115aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ce919061240e565b90506000611656896001600160a01b03166366cb8d2f8a6040518263ffffffff1660e01b815260040161160191906124c4565b60206040518083038186803b15801561161957600080fd5b505afa15801561162d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611651919061240e565b611a41565b9050600082156116735761166c88888585611a63565b9050611677565b5060005b6116828a8a83611ab2565b9199909850909650945050505050565b6000600160ff1b82106116b75760405162461bcd60e51b815260040161012c906129c9565b5090565b60008183038183128015906116d05750838113155b806116e557506000831280156116e557508381135b610ad05760405162461bcd60e51b815260040161012c90612a8b565b606082826040516024016117169291906125a7565b60408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516347b7819960e11b81529091506001600160a01b03861690638f6f03329061177290879060009086906004016125c0565b600060405180830381600087803b15801561178c57600080fd5b505af11580156117a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117c8919081019061226f565b505050505050565b6000806117dc83611c12565b9050610ad081611c1d565b606080825167ffffffffffffffff8111801561180257600080fd5b5060405190808252806020026020018201604052801561182c578160200160208202803683370190505b50905060005b83518110156118e95783818151811061184757fe5b60200260200101516001600160a01b03166370a08231866040518263ffffffff1660e01b815260040161187a91906124c4565b60206040518083038186803b15801561189257600080fd5b505afa1580156118a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ca919061240e565b8282815181106118d657fe5b6020908102919091010152600101611832565b509392505050565b6000610ad0838363ffffffff611cda16565b60606000836001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561194057600080fd5b505afa158015611954573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611978919061240e565b90506060835167ffffffffffffffff8111801561199457600080fd5b506040519080825280602002602001820160405280156119be578160200160208202803683370190505b50905060005b8451811015611a09576119ea838683815181106119dd57fe5b60200260200101516118f1565b8282815181106119f657fe5b60209081029190910101526001016119c4565b50949350505050565b6040516353bae5f760e01b81526000906001600160a01b038316906353bae5f7906112579030906004016124c4565b6000808212156116b75760405162461bcd60e51b815260040161012c906128f5565b600080611a86611a79848863ffffffff611cda16565b869063ffffffff611d0416565b9050611aa886611a9c868463ffffffff611d0416565b9063ffffffff611d4616565b9695505050505050565b6000611abe8484611d64565b905080158015611ace5750600082115b15611b4557611add8484611deb565b611b40576040516304e3532760e41b81526001600160a01b03851690634e35327090611b0d9086906004016124c4565b600060405180830381600087803b158015611b2757600080fd5b505af1158015611b3b573d6000803e3d6000fd5b505050505b611bc2565b808015611b50575081155b15611bc257611b5f8484611deb565b611bc257604051636f86c89760e01b81526001600160a01b03851690636f86c89790611b8f9086906004016124c4565b600060405180830381600087803b158015611ba957600080fd5b505af1158015611bbd573d6000803e3d6000fd5b505050505b836001600160a01b0316632ba57d1784611bdb85611692565b6040518363ffffffff1660e01b8152600401611bf89291906125a7565b600060405180830381600087803b15801561058557600080fd5b805160209091012090565b600080548190611c35906001600160a01b0316611e77565b6001600160a01b031663e6d642c530856040518363ffffffff1660e01b8152600401611c629291906125a7565b60206040518083038186803b158015611c7a57600080fd5b505afa158015611c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb29190612130565b90506001600160a01b03811661119d5760405162461bcd60e51b815260040161012c906128c6565b6000610ad0670de0b6b3a7640000611cf8858563ffffffff611ef616565b9063ffffffff611f3016565b6000610ad083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f72565b6000610ad082611cf885670de0b6b3a764000063ffffffff611ef616565b600080836001600160a01b03166366cb8d2f846040518263ffffffff1660e01b8152600401611d9391906124c4565b60206040518083038186803b158015611dab57600080fd5b505afa158015611dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de3919061240e565b139392505050565b600080836001600160a01b031663a7bdad03846040518263ffffffff1660e01b8152600401611e1a91906124c4565b60006040518083038186803b158015611e3257600080fd5b505afa158015611e46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e6e91908101906121a4565b51119392505050565b6040516373b2e76b60e11b81526000906001600160a01b0383169063e765ced690611ea6908490600401612b86565b60206040518083038186803b158015611ebe57600080fd5b505afa158015611ed2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119d9190612130565b600082611f055750600061119d565b82820282848281611f1257fe5b0414610ad05760405162461bcd60e51b815260040161012c9061292a565b6000610ad083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f9e565b60008184841115611f965760405162461bcd60e51b815260040161012c919061267a565b505050900390565b60008183611fbf5760405162461bcd60e51b815260040161012c919061267a565b506000838581611fcb57fe5b0495945050505050565b60405180610140016040528060006001600160a01b031681526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160608152602001600081526020016060815260200160608152602001606081525090565b805161119d81612c0a565b60008083601f84011261205f578182fd5b50813567ffffffffffffffff811115612076578182fd5b602083019150836020808302850101111561209057600080fd5b9250929050565b600082601f8301126120a7578081fd5b81516120ba6120b582612bb6565b612b8f565b91508082528360208285010111156120d157600080fd5b610a84816020840160208601612bda565b600082601f8301126120f2578081fd5b81356121006120b582612bb6565b915080825283602082850101111561211757600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215612141578081fd5b8151610ad081612c0a565b600080600060608486031215612160578182fd5b835161216b81612c0a565b60208501516040860151919450925067ffffffffffffffff81111561218e578182fd5b61219a86828701612097565b9150509250925092565b600060208083850312156121b6578182fd5b825167ffffffffffffffff808211156121cd578384fd5b81850186601f8201126121de578485fd5b80519250818311156121ee578485fd5b83830291506121fe848301612b8f565b8381528481019082860184840187018a1015612218578788fd5b8794505b858510156122425761222e8a82612043565b83526001949094019391860191860161221c565b5098975050505050505050565b600060208284031215612260578081fd5b81518015158114610ad0578182fd5b600060208284031215612280578081fd5b815167ffffffffffffffff811115612296578182fd5b6122a284828501612097565b949350505050565b6000602082840312156122bb578081fd5b8135610ad081612c0a565b60008060008060008060c087890312156122de578182fd5b86356122e981612c0a565b9550602087013567ffffffffffffffff811115612304578283fd5b61231089828a016120e2565b955050604087013561232181612c0a565b935060608701359250608087013561233881612c0a565b8092505060a087013590509295509295509295565b60008060008060008060008060c0898b031215612368578182fd5b883561237381612c0a565b9750602089013567ffffffffffffffff8082111561238f578384fd5b61239b8c838d016120e2565b985060408b013591506123ad82612c0a565b90965060608a0135955060808a013590808211156123c9578384fd5b6123d58c838d0161204e565b909650945060a08b01359150808211156123ed578384fd5b506123fa8b828c0161204e565b999c989b5096995094979396929594505050565b60006020828403121561241f578081fd5b5051919050565b6000815180845260208085019450808401835b8381101561245e5781516001600160a01b031687529582019590820190600101612439565b509495945050505050565b6000815180845260208085019450808401835b8381101561245e5781518752958201959082019060010161247c565b600081518084526124b0816020860160208601612bda565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b600060018060a01b03808816835260208188168185015260a0604085015261253760a0850188612426565b84810360608601528651808252828801935090820190845b8181101561256b5784518352938301939183019160010161254f565b50508093505050508260808301529695505050505050565b6001600160a01b03831681526040602082018190526000906122a290830184612426565b6001600160a01b03929092168252602082015260400190565b600060018060a01b0385168252836020830152606060408301526125e76060830184612498565b95945050505050565b84815260606020808301829052908201849052600090859060808401835b8781101561263c57833561262181612c0a565b6001600160a01b03168252928201929082019060010161260e565b50848103604086015261069d8187612469565b6000848252606060208301526126686060830185612426565b8281036040840152611aa88185612469565b600060208252610ad06020830184612498565b60208082526022908201527f436f6d706f6e656e74207175616e74697479206d757374206265206e6f6e7a65604082015261726f60f01b606082015260800190565b60208082526028908201527f4d75737420626520612076616c696420616e6420696e697469616c697a65642060408201526729b2ba2a37b5b2b760c11b606082015260800190565b60208082526041908201527f556e6465726c79696e6720746f6b656e73207265636569766564206d7573742060408201527f62652067726561746572207468616e206d696e696d756d2073706563696669656060820152601960fa1b608082015260a00190565b60208082526029908201527f556e69742063616e742062652067726561746572207468616e20706f736974696040820152681bdb9cc81bdddb995960ba1b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601e908201527f4d7573742062652070656e64696e6720696e697469616c697a6174696f6e0000604082015260600190565b60208082526028908201527f536574546f6b656e206d757374206f776e20656e6f756768206c6971756964696040820152673a3c903a37b5b2b760c11b606082015260800190565b60208082526029908201527f436f6d706f6e656e747320616e6420756e697473206d757374206265206571756040820152680c2d840d8cadccee8d60bb1b606082015260800190565b60208082526015908201527426bab9ba103132903b30b634b21030b230b83a32b960591b604082015260600190565b6020808252818101527f53616665436173743a2076616c7565206d75737420626520706f736974697665604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b602080825260409082018190527f4c697175696469747920746f6b656e73207265636569766564206d7573742062908201527f652067726561746572207468616e206d696e696d756d20737065636966696564606082015260800190565b60208082526028908201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604082015267371034b73a191a9b60c11b606082015260800190565b60208082526023908201527f4d75737420626520636f6e74726f6c6c65722d656e61626c656420536574546f60408201526235b2b760e91b606082015260800190565b6020808252601c908201527f4d7573742062652074686520536574546f6b656e206d616e6167657200000000604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b6020808252601e908201527f546f6b656e207175616e74697479206d757374206265206e6f6e7a65726f0000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526029908201527f506f6f6c20746f6b656e206d75737420626520656e61626c6564206f6e207468604082015268329020b230b83a32b960b91b606082015260800190565b90815260200190565b60405181810167ffffffffffffffff81118282101715612bae57600080fd5b604052919050565b600067ffffffffffffffff821115612bcc578081fd5b50601f01601f191660200190565b60005b83811015612bf5578181015183820152602001612bdd565b83811115612c04576000848401525b50505050565b6001600160a01b03811681146105fd57600080fdfea26469706673582212200be19526aa32d60778e8590e2ced3729bd007eee08c05fa093d5d8641a4a075a64736f6c634300060a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
