{
  "_format": "hh-sol-artifact-1",
  "contractName": "MockTimeSwapRouter",
  "sourceName": "contracts/elixir-periphery/test/MockTimeSwapRouter.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_factory",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_WETH9",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "WETH9",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int256",
          "name": "amount0Delta",
          "type": "int256"
        },
        {
          "internalType": "int256",
          "name": "amount1Delta",
          "type": "int256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "elixirSwapCallback",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes",
              "name": "path",
              "type": "bytes"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMinimum",
              "type": "uint256"
            }
          ],
          "internalType": "struct ISwapRouter.ExactInputParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "exactInput",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMinimum",
              "type": "uint256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            }
          ],
          "internalType": "struct ISwapRouter.ExactInputSingleParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "exactInputSingle",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes",
              "name": "path",
              "type": "bytes"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMaximum",
              "type": "uint256"
            }
          ],
          "internalType": "struct ISwapRouter.ExactOutputParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "exactOutput",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMaximum",
              "type": "uint256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            }
          ],
          "internalType": "struct ISwapRouter.ExactOutputSingleParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "exactOutputSingle",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "refundETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "selfPermit",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiry",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "selfPermitAllowed",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiry",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "selfPermitAllowedIfNecessary",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "selfPermitIfNecessary",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_time",
          "type": "uint256"
        }
      ],
      "name": "setTime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountMinimum",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "sweepToken",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountMinimum",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "feeBips",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "feeRecipient",
          "type": "address"
        }
      ],
      "name": "sweepTokenWithFee",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountMinimum",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "unwrapWETH9",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountMinimum",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "feeBips",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "feeRecipient",
          "type": "address"
        }
      ],
      "name": "unwrapWETH9WithFee",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60c06040526000196000553480156200001757600080fd5b5060405162002837380380620028378339810160408190526200003a9162000076565b6001600160601b0319606092831b8116608052911b1660a052620000ad565b80516001600160a01b03811681146200007157600080fd5b919050565b6000806040838503121562000089578182fd5b620000948362000059565b9150620000a46020840162000059565b90509250929050565b60805160601c60a05160601c61272e620001096000398061013d52806104e252806105d8528061066552806106a5528061079b5280611437528061147d52806114f1525080610b935280610bfa52806118a3525061272e6000f3fe60806040526004361061012d5760003560e01c8063c04b8d59116100a5578063db3e219811610074578063e0e189a011610059578063e0e189a014610316578063f28c049814610329578063f3995c671461033c576101b1565b8063db3e2198146102f0578063df2ab5bb14610303576101b1565b8063c04b8d5914610295578063c2e3140a146102a8578063c45a0155146102bb578063d804d7a7146102d0576101b1565b806349404b7c116100fc5780639b2c0a37116100e15780639b2c0a371461024f578063a4a78f0c14610262578063ac9650d814610275576101b1565b806349404b7c1461021a5780634aa4a4fc1461022d576101b1565b806312210e8a146101b65780633beb26c4146101be578063414bf389146101de5780634659a49414610207576101b1565b366101b157336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101af576040805162461bcd60e51b815260206004820152600960248201527f4e6f742057455448390000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b6101af61034f565b3480156101ca57600080fd5b506101af6101d9366004612388565b610359565b6101f16101ec366004612281565b61035e565b6040516101fe919061261c565b60405180910390f35b6101af610215366004611fff565b610444565b6101af6102283660046123a0565b6104de565b34801561023957600080fd5b50610242610663565b6040516101fe91906124a7565b6101af61025d3660046123cf565b610687565b6101af610270366004611fff565b61085e565b61028861028336600461205f565b6108ef565b6040516101fe9190612500565b6101f16102a33660046121d6565b610a2f565b6101af6102b6366004611fff565b610b02565b3480156102c757600080fd5b50610242610b91565b3480156102dc57600080fd5b506101af6102eb3660046120f1565b610bb5565b6101f16102fe366004612281565b610cc8565b6101af610311366004611f60565b610da6565b6101af610324366004611fa1565b610e8f565b6101f161033736600461229d565b610fc1565b6101af61034a366004611fff565b61106e565b6103576110e0565b565b600155565b6000816080013561036e816110f0565b61040760a08401356103866080860160608701611f3d565b610397610100870160e08801611f3d565b60408051808201909152806103af60208a018a611f3d565b6103bf60608b0160408c01612365565b6103cf60408c0160208d01611f3d565b6040516020016103e193929190612444565b6040516020818303038152906040528152602001336001600160a01b0316815250611148565b91508260c001358210156104365760405162461bcd60e51b815260040161042d906125aa565b60405180910390fd5b61043e6110e0565b50919050565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b1580156104be57600080fd5b505af11580156104d2573d6000803e3d6000fd5b50505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561054d57600080fd5b505afa158015610561573d6000803e3d6000fd5b505050506040513d602081101561057757600080fd5b50519050828110156105d0576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b801561065e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561063c57600080fd5b505af1158015610650573d6000803e3d6000fd5b5050505061065e828261129a565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082118015610698575060648211155b6106a157600080fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561071057600080fd5b505afa158015610724573d6000803e3d6000fd5b505050506040513d602081101561073a57600080fd5b5051905084811015610793576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b8015610857577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b50505050600061271061082f858461138990919063ffffffff16565b8161083657fe5b049050801561084957610849838261129a565b6108558582840361129a565b505b5050505050565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156108af57600080fd5b505afa1580156108c3573d6000803e3d6000fd5b505050506040513d60208110156108d957600080fd5b5051101561085557610855868686868686610444565b60608167ffffffffffffffff8111801561090857600080fd5b5060405190808252806020026020018201604052801561093c57816020015b60608152602001906001900390816109275790505b50905060005b82811015610a28576000803086868581811061095a57fe5b905060200281019061096c9190612625565b60405161097a929190612497565b600060405180830381855af49150503d80600081146109b5576040519150601f19603f3d011682016040523d82523d6000602084013e6109ba565b606091505b509150915081610a06576044815110156109d357600080fd5b600481019050808060200190518101906109ed919061216c565b60405162461bcd60e51b815260040161042d9190612560565b80848481518110610a1357fe5b60209081029190910101525050600101610942565b5092915050565b60008160400151610a3f816110f0565b335b6000610a5085600001516113b3565b9050610a9c856060015182610a69578660200151610a6b565b305b60006040518060400160405280610a858b600001516113bf565b8152602001876001600160a01b0316815250611148565b60608601528015610abc578451309250610ab5906113ce565b8552610ac9565b8460600151935050610acf565b50610a41565b8360800151831015610af35760405162461bcd60e51b815260040161042d906125aa565b610afb6110e0565b5050919050565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b158015610b5157600080fd5b505afa158015610b65573d6000803e3d6000fd5b505050506040513d6020811015610b7b57600080fd5b505110156108555761085586868686868661106e565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000841380610bc45750600083135b610bcd57600080fd5b6000610bdb828401846122d5565b90506000806000610bef84600001516113e5565b925092509250610c217f0000000000000000000000000000000000000000000000000000000000000000848484611416565b5060008060008a13610c4857846001600160a01b0316846001600160a01b03161089610c5f565b836001600160a01b0316856001600160a01b0316108a5b915091508115610c7e57610c798587602001513384611435565b6104d2565b8551610c89906113b3565b15610cae578551610c99906113ce565b8652610ca881336000896115c5565b506104d2565b806000819055508394506104d28587602001513384611435565b60008160800135610cd8816110f0565b610d7460a0840135610cf06080860160608701611f3d565b610d01610100870160e08801611f3d565b6040518060400160405280886020016020810190610d1f9190611f3d565b610d2f60608b0160408c01612365565b610d3c60208c018c611f3d565b604051602001610d4e93929190612444565b6040516020818303038152906040528152602001336001600160a01b03168152506115c5565b91508260c00135821115610d9a5760405162461bcd60e51b815260040161042d90612573565b50600019600055919050565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610df557600080fd5b505afa158015610e09573d6000803e3d6000fd5b505050506040513d6020811015610e1f57600080fd5b5051905082811015610e78576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610e8957610e89848383611740565b50505050565b600082118015610ea0575060648211155b610ea957600080fd5b6000856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610ef857600080fd5b505afa158015610f0c573d6000803e3d6000fd5b505050506040513d6020811015610f2257600080fd5b5051905084811015610f7b576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610855576000612710610f908386611389565b81610f9757fe5b0490508015610fab57610fab878483611740565b610fb88786838503611740565b50505050505050565b60008160400135610fd1816110f0565b6110446060840135610fe96040860160208701611f3d565b60408051808201909152600090806110018980612625565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250336020909101526115c5565b5060005491508260800135821115610d9a5760405162461bcd60e51b815260040161042d90612573565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b1580156104be57600080fd5b471561035757610357334761129a565b80421115611145576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b50565b60006001600160a01b03841661115c573093505b600080600061116e85600001516113e5565b919450925090506001600160a01b038083169084161060008061119286868661189c565b6001600160a01b031663128acb088b856111ab8f6118da565b6001600160a01b038e16156111c0578d6111e6565b876111df5773fffd8963efd1fc6a506488495d951d5263988d256111e6565b6401000276a45b8d6040516020016111f791906125e1565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016112269594939291906124bb565b6040805180830381600087803b15801561123f57600080fd5b505af1158015611253573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127791906120ce565b91509150826112865781611288565b805b6000039b9a5050505050505050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106112e65780518252601f1990920191602091820191016112c7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611348576040519150601f19603f3d011682016040523d82523d6000602084013e61134d565b606091505b505090508061065e576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b60008215806113a4575050818102818382816113a157fe5b04145b6113ad57600080fd5b92915050565b8051604211155b919050565b60606113ad826000602b6118f0565b80516060906113ad908390601790601619016118f0565b600080806113f38482611a4d565b9250611400846014611b19565b905061140d846017611a4d565b91509193909250565b600061142c85611427868686611bd5565b611c2b565b95945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156114765750804710155b15611598577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156114d657600080fd5b505af11580156114ea573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561156657600080fd5b505af115801561157a573d6000803e3d6000fd5b505050506040513d602081101561159057600080fd5b50610e899050565b6001600160a01b0383163014156115b9576115b4848383611740565b610e89565b610e8984848484611c4e565b60006001600160a01b0384166115d9573093505b60008060006115eb85600001516113e5565b919450925090506001600160a01b038084169083161060008061160f85878661189c565b6001600160a01b031663128acb088b856116288f6118da565b6000036001600160a01b038e1615611640578d611666565b8761165f5773fffd8963efd1fc6a506488495d951d5263988d25611666565b6401000276a45b8d60405160200161167791906125e1565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016116a69594939291906124bb565b6040805180830381600087803b1580156116bf57600080fd5b505af11580156116d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f791906120ce565b9150915060008361170c578183600003611712565b82826000035b90985090506001600160a01b038a16611731578b811461173157600080fd5b50505050505050949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106117d15780518252601f1990920191602091820191016117b2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611833576040519150601f19603f3d011682016040523d82523d6000602084013e611838565b606091505b5091509150818015611866575080511580611866575080806020019051602081101561186357600080fd5b50515b610857576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b60006118d27f00000000000000000000000000000000000000000000000000000000000000006118cd868686611bd5565b611db3565b949350505050565b6000600160ff1b82106118ec57600080fd5b5090565b60608182601f01101561193b576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015611983576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b818301845110156119db576040805162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b6060821580156119fa5760405191506000825260208201604052611a44565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611a33578051835260209283019201611a1b565b5050858452601f01601f1916604052505b50949350505050565b600081826014011015611aa7576040805162461bcd60e51b815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015611b00576040805162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015611b73576040805162461bcd60e51b815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015611bcc576040805162461bcd60e51b815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b611bdd611eaf565b826001600160a01b0316846001600160a01b03161115611bfb579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b6000611c378383611db3565b9050336001600160a01b038216146113ad57600080fd5b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b178152925182516000948594938a169392918291908083835b60208310611ce75780518252601f199092019160209182019101611cc8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611d49576040519150601f19603f3d011682016040523d82523d6000602084013e611d4e565b606091505b5091509150818015611d7c575080511580611d7c5750808060200190516020811015611d7957600080fd5b50515b610855576040805162461bcd60e51b815260206004820152600360248201526229aa2360e91b604482015290519081900360640190fd5b600081602001516001600160a01b031682600001516001600160a01b031610611ddb57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b80356113ba816126e3565b600082601f830112611eea578081fd5b8135611efd611ef882612695565b612671565b818152846020838601011115611f11578283fd5b816020850160208301379081016020019190915292915050565b6000610100828403121561043e578081fd5b600060208284031215611f4e578081fd5b8135611f59816126e3565b9392505050565b600080600060608486031215611f74578182fd5b8335611f7f816126e3565b9250602084013591506040840135611f96816126e3565b809150509250925092565b600080600080600060a08688031215611fb8578081fd5b8535611fc3816126e3565b9450602086013593506040860135611fda816126e3565b9250606086013591506080860135611ff1816126e3565b809150509295509295909350565b60008060008060008060c08789031215612017578081fd5b8635612022816126e3565b95506020870135945060408701359350606087013560ff81168114612045578182fd5b9598949750929560808101359460a0909101359350915050565b60008060208385031215612071578182fd5b823567ffffffffffffffff80821115612088578384fd5b818501915085601f83011261209b578384fd5b8135818111156120a9578485fd5b86602080830285010111156120bc578485fd5b60209290920196919550909350505050565b600080604083850312156120e0578182fd5b505080516020909101519092909150565b60008060008060608587031215612106578182fd5b8435935060208501359250604085013567ffffffffffffffff8082111561212b578384fd5b818701915087601f83011261213e578384fd5b81358181111561214c578485fd5b88602082850101111561215d578485fd5b95989497505060200194505050565b60006020828403121561217d578081fd5b815167ffffffffffffffff811115612193578182fd5b8201601f810184136121a3578182fd5b80516121b1611ef882612695565b8181528560208385010111156121c5578384fd5b61142c8260208301602086016126b7565b6000602082840312156121e7578081fd5b813567ffffffffffffffff808211156121fe578283fd5b9083019060a08286031215612211578283fd5b60405160a08101818110838211171561222657fe5b604052823582811115612237578485fd5b61224387828601611eda565b82525061225260208401611ecf565b602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b60006101008284031215612293578081fd5b611f598383611f2b565b6000602082840312156122ae578081fd5b813567ffffffffffffffff8111156122c4578182fd5b820160a08185031215611f59578182fd5b6000602082840312156122e6578081fd5b813567ffffffffffffffff808211156122fd578283fd5b9083019060408286031215612310578283fd5b60405160408101818110838211171561232557fe5b604052823582811115612336578485fd5b61234287828601611eda565b82525060208301359250612355836126e3565b6020810192909252509392505050565b600060208284031215612376578081fd5b813562ffffff81168114611f59578182fd5b600060208284031215612399578081fd5b5035919050565b600080604083850312156123b2578182fd5b8235915060208301356123c4816126e3565b809150509250929050565b600080600080608085870312156123e4578182fd5b8435935060208501356123f6816126e3565b925060408501359150606085013561240d816126e3565b939692955090935050565b600081518084526124308160208601602086016126b7565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b60006001600160a01b038088168352861515602084015285604084015280851660608401525060a060808301526124f560a0830184612418565b979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b8281101561255357603f19888603018452612541858351612418565b94509285019290850190600101612525565b5092979650505050505050565b600060208252611f596020830184612418565b60208082526012908201527f546f6f206d756368207265717565737465640000000000000000000000000000604082015260600190565b60208082526013908201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604082015260600190565b6000602082528251604060208401526125fd6060840182612418565b90506001600160a01b0360208501511660408401528091505092915050565b90815260200190565b6000808335601e1984360301811261263b578283fd5b83018035915067ffffffffffffffff821115612655578283fd5b60200191503681900382131561266a57600080fd5b9250929050565b60405181810167ffffffffffffffff8111828210171561268d57fe5b604052919050565b600067ffffffffffffffff8211156126a957fe5b50601f01601f191660200190565b60005b838110156126d25781810151838201526020016126ba565b83811115610e895750506000910152565b6001600160a01b038116811461114557600080fdfea2646970667358221220c44ae75eab653d768fbfa7732c07be2d4e7a8510188a09af0d6c6d15158e46b064736f6c63430007060033",
  "deployedBytecode": "0x60806040526004361061012d5760003560e01c8063c04b8d59116100a5578063db3e219811610074578063e0e189a011610059578063e0e189a014610316578063f28c049814610329578063f3995c671461033c576101b1565b8063db3e2198146102f0578063df2ab5bb14610303576101b1565b8063c04b8d5914610295578063c2e3140a146102a8578063c45a0155146102bb578063d804d7a7146102d0576101b1565b806349404b7c116100fc5780639b2c0a37116100e15780639b2c0a371461024f578063a4a78f0c14610262578063ac9650d814610275576101b1565b806349404b7c1461021a5780634aa4a4fc1461022d576101b1565b806312210e8a146101b65780633beb26c4146101be578063414bf389146101de5780634659a49414610207576101b1565b366101b157336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101af576040805162461bcd60e51b815260206004820152600960248201527f4e6f742057455448390000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b6101af61034f565b3480156101ca57600080fd5b506101af6101d9366004612388565b610359565b6101f16101ec366004612281565b61035e565b6040516101fe919061261c565b60405180910390f35b6101af610215366004611fff565b610444565b6101af6102283660046123a0565b6104de565b34801561023957600080fd5b50610242610663565b6040516101fe91906124a7565b6101af61025d3660046123cf565b610687565b6101af610270366004611fff565b61085e565b61028861028336600461205f565b6108ef565b6040516101fe9190612500565b6101f16102a33660046121d6565b610a2f565b6101af6102b6366004611fff565b610b02565b3480156102c757600080fd5b50610242610b91565b3480156102dc57600080fd5b506101af6102eb3660046120f1565b610bb5565b6101f16102fe366004612281565b610cc8565b6101af610311366004611f60565b610da6565b6101af610324366004611fa1565b610e8f565b6101f161033736600461229d565b610fc1565b6101af61034a366004611fff565b61106e565b6103576110e0565b565b600155565b6000816080013561036e816110f0565b61040760a08401356103866080860160608701611f3d565b610397610100870160e08801611f3d565b60408051808201909152806103af60208a018a611f3d565b6103bf60608b0160408c01612365565b6103cf60408c0160208d01611f3d565b6040516020016103e193929190612444565b6040516020818303038152906040528152602001336001600160a01b0316815250611148565b91508260c001358210156104365760405162461bcd60e51b815260040161042d906125aa565b60405180910390fd5b61043e6110e0565b50919050565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b1580156104be57600080fd5b505af11580156104d2573d6000803e3d6000fd5b50505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561054d57600080fd5b505afa158015610561573d6000803e3d6000fd5b505050506040513d602081101561057757600080fd5b50519050828110156105d0576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b801561065e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561063c57600080fd5b505af1158015610650573d6000803e3d6000fd5b5050505061065e828261129a565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082118015610698575060648211155b6106a157600080fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561071057600080fd5b505afa158015610724573d6000803e3d6000fd5b505050506040513d602081101561073a57600080fd5b5051905084811015610793576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b8015610857577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b50505050600061271061082f858461138990919063ffffffff16565b8161083657fe5b049050801561084957610849838261129a565b6108558582840361129a565b505b5050505050565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156108af57600080fd5b505afa1580156108c3573d6000803e3d6000fd5b505050506040513d60208110156108d957600080fd5b5051101561085557610855868686868686610444565b60608167ffffffffffffffff8111801561090857600080fd5b5060405190808252806020026020018201604052801561093c57816020015b60608152602001906001900390816109275790505b50905060005b82811015610a28576000803086868581811061095a57fe5b905060200281019061096c9190612625565b60405161097a929190612497565b600060405180830381855af49150503d80600081146109b5576040519150601f19603f3d011682016040523d82523d6000602084013e6109ba565b606091505b509150915081610a06576044815110156109d357600080fd5b600481019050808060200190518101906109ed919061216c565b60405162461bcd60e51b815260040161042d9190612560565b80848481518110610a1357fe5b60209081029190910101525050600101610942565b5092915050565b60008160400151610a3f816110f0565b335b6000610a5085600001516113b3565b9050610a9c856060015182610a69578660200151610a6b565b305b60006040518060400160405280610a858b600001516113bf565b8152602001876001600160a01b0316815250611148565b60608601528015610abc578451309250610ab5906113ce565b8552610ac9565b8460600151935050610acf565b50610a41565b8360800151831015610af35760405162461bcd60e51b815260040161042d906125aa565b610afb6110e0565b5050919050565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b158015610b5157600080fd5b505afa158015610b65573d6000803e3d6000fd5b505050506040513d6020811015610b7b57600080fd5b505110156108555761085586868686868661106e565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000841380610bc45750600083135b610bcd57600080fd5b6000610bdb828401846122d5565b90506000806000610bef84600001516113e5565b925092509250610c217f0000000000000000000000000000000000000000000000000000000000000000848484611416565b5060008060008a13610c4857846001600160a01b0316846001600160a01b03161089610c5f565b836001600160a01b0316856001600160a01b0316108a5b915091508115610c7e57610c798587602001513384611435565b6104d2565b8551610c89906113b3565b15610cae578551610c99906113ce565b8652610ca881336000896115c5565b506104d2565b806000819055508394506104d28587602001513384611435565b60008160800135610cd8816110f0565b610d7460a0840135610cf06080860160608701611f3d565b610d01610100870160e08801611f3d565b6040518060400160405280886020016020810190610d1f9190611f3d565b610d2f60608b0160408c01612365565b610d3c60208c018c611f3d565b604051602001610d4e93929190612444565b6040516020818303038152906040528152602001336001600160a01b03168152506115c5565b91508260c00135821115610d9a5760405162461bcd60e51b815260040161042d90612573565b50600019600055919050565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610df557600080fd5b505afa158015610e09573d6000803e3d6000fd5b505050506040513d6020811015610e1f57600080fd5b5051905082811015610e78576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610e8957610e89848383611740565b50505050565b600082118015610ea0575060648211155b610ea957600080fd5b6000856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610ef857600080fd5b505afa158015610f0c573d6000803e3d6000fd5b505050506040513d6020811015610f2257600080fd5b5051905084811015610f7b576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610855576000612710610f908386611389565b81610f9757fe5b0490508015610fab57610fab878483611740565b610fb88786838503611740565b50505050505050565b60008160400135610fd1816110f0565b6110446060840135610fe96040860160208701611f3d565b60408051808201909152600090806110018980612625565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250336020909101526115c5565b5060005491508260800135821115610d9a5760405162461bcd60e51b815260040161042d90612573565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b1580156104be57600080fd5b471561035757610357334761129a565b80421115611145576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b50565b60006001600160a01b03841661115c573093505b600080600061116e85600001516113e5565b919450925090506001600160a01b038083169084161060008061119286868661189c565b6001600160a01b031663128acb088b856111ab8f6118da565b6001600160a01b038e16156111c0578d6111e6565b876111df5773fffd8963efd1fc6a506488495d951d5263988d256111e6565b6401000276a45b8d6040516020016111f791906125e1565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016112269594939291906124bb565b6040805180830381600087803b15801561123f57600080fd5b505af1158015611253573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127791906120ce565b91509150826112865781611288565b805b6000039b9a5050505050505050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106112e65780518252601f1990920191602091820191016112c7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611348576040519150601f19603f3d011682016040523d82523d6000602084013e61134d565b606091505b505090508061065e576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b60008215806113a4575050818102818382816113a157fe5b04145b6113ad57600080fd5b92915050565b8051604211155b919050565b60606113ad826000602b6118f0565b80516060906113ad908390601790601619016118f0565b600080806113f38482611a4d565b9250611400846014611b19565b905061140d846017611a4d565b91509193909250565b600061142c85611427868686611bd5565b611c2b565b95945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156114765750804710155b15611598577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156114d657600080fd5b505af11580156114ea573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561156657600080fd5b505af115801561157a573d6000803e3d6000fd5b505050506040513d602081101561159057600080fd5b50610e899050565b6001600160a01b0383163014156115b9576115b4848383611740565b610e89565b610e8984848484611c4e565b60006001600160a01b0384166115d9573093505b60008060006115eb85600001516113e5565b919450925090506001600160a01b038084169083161060008061160f85878661189c565b6001600160a01b031663128acb088b856116288f6118da565b6000036001600160a01b038e1615611640578d611666565b8761165f5773fffd8963efd1fc6a506488495d951d5263988d25611666565b6401000276a45b8d60405160200161167791906125e1565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016116a69594939291906124bb565b6040805180830381600087803b1580156116bf57600080fd5b505af11580156116d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f791906120ce565b9150915060008361170c578183600003611712565b82826000035b90985090506001600160a01b038a16611731578b811461173157600080fd5b50505050505050949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106117d15780518252601f1990920191602091820191016117b2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611833576040519150601f19603f3d011682016040523d82523d6000602084013e611838565b606091505b5091509150818015611866575080511580611866575080806020019051602081101561186357600080fd5b50515b610857576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b60006118d27f00000000000000000000000000000000000000000000000000000000000000006118cd868686611bd5565b611db3565b949350505050565b6000600160ff1b82106118ec57600080fd5b5090565b60608182601f01101561193b576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015611983576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b818301845110156119db576040805162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b6060821580156119fa5760405191506000825260208201604052611a44565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611a33578051835260209283019201611a1b565b5050858452601f01601f1916604052505b50949350505050565b600081826014011015611aa7576040805162461bcd60e51b815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015611b00576040805162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015611b73576040805162461bcd60e51b815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015611bcc576040805162461bcd60e51b815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b611bdd611eaf565b826001600160a01b0316846001600160a01b03161115611bfb579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b6000611c378383611db3565b9050336001600160a01b038216146113ad57600080fd5b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b178152925182516000948594938a169392918291908083835b60208310611ce75780518252601f199092019160209182019101611cc8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611d49576040519150601f19603f3d011682016040523d82523d6000602084013e611d4e565b606091505b5091509150818015611d7c575080511580611d7c5750808060200190516020811015611d7957600080fd5b50515b610855576040805162461bcd60e51b815260206004820152600360248201526229aa2360e91b604482015290519081900360640190fd5b600081602001516001600160a01b031682600001516001600160a01b031610611ddb57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b80356113ba816126e3565b600082601f830112611eea578081fd5b8135611efd611ef882612695565b612671565b818152846020838601011115611f11578283fd5b816020850160208301379081016020019190915292915050565b6000610100828403121561043e578081fd5b600060208284031215611f4e578081fd5b8135611f59816126e3565b9392505050565b600080600060608486031215611f74578182fd5b8335611f7f816126e3565b9250602084013591506040840135611f96816126e3565b809150509250925092565b600080600080600060a08688031215611fb8578081fd5b8535611fc3816126e3565b9450602086013593506040860135611fda816126e3565b9250606086013591506080860135611ff1816126e3565b809150509295509295909350565b60008060008060008060c08789031215612017578081fd5b8635612022816126e3565b95506020870135945060408701359350606087013560ff81168114612045578182fd5b9598949750929560808101359460a0909101359350915050565b60008060208385031215612071578182fd5b823567ffffffffffffffff80821115612088578384fd5b818501915085601f83011261209b578384fd5b8135818111156120a9578485fd5b86602080830285010111156120bc578485fd5b60209290920196919550909350505050565b600080604083850312156120e0578182fd5b505080516020909101519092909150565b60008060008060608587031215612106578182fd5b8435935060208501359250604085013567ffffffffffffffff8082111561212b578384fd5b818701915087601f83011261213e578384fd5b81358181111561214c578485fd5b88602082850101111561215d578485fd5b95989497505060200194505050565b60006020828403121561217d578081fd5b815167ffffffffffffffff811115612193578182fd5b8201601f810184136121a3578182fd5b80516121b1611ef882612695565b8181528560208385010111156121c5578384fd5b61142c8260208301602086016126b7565b6000602082840312156121e7578081fd5b813567ffffffffffffffff808211156121fe578283fd5b9083019060a08286031215612211578283fd5b60405160a08101818110838211171561222657fe5b604052823582811115612237578485fd5b61224387828601611eda565b82525061225260208401611ecf565b602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b60006101008284031215612293578081fd5b611f598383611f2b565b6000602082840312156122ae578081fd5b813567ffffffffffffffff8111156122c4578182fd5b820160a08185031215611f59578182fd5b6000602082840312156122e6578081fd5b813567ffffffffffffffff808211156122fd578283fd5b9083019060408286031215612310578283fd5b60405160408101818110838211171561232557fe5b604052823582811115612336578485fd5b61234287828601611eda565b82525060208301359250612355836126e3565b6020810192909252509392505050565b600060208284031215612376578081fd5b813562ffffff81168114611f59578182fd5b600060208284031215612399578081fd5b5035919050565b600080604083850312156123b2578182fd5b8235915060208301356123c4816126e3565b809150509250929050565b600080600080608085870312156123e4578182fd5b8435935060208501356123f6816126e3565b925060408501359150606085013561240d816126e3565b939692955090935050565b600081518084526124308160208601602086016126b7565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b60006001600160a01b038088168352861515602084015285604084015280851660608401525060a060808301526124f560a0830184612418565b979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b8281101561255357603f19888603018452612541858351612418565b94509285019290850190600101612525565b5092979650505050505050565b600060208252611f596020830184612418565b60208082526012908201527f546f6f206d756368207265717565737465640000000000000000000000000000604082015260600190565b60208082526013908201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604082015260600190565b6000602082528251604060208401526125fd6060840182612418565b90506001600160a01b0360208501511660408401528091505092915050565b90815260200190565b6000808335601e1984360301811261263b578283fd5b83018035915067ffffffffffffffff821115612655578283fd5b60200191503681900382131561266a57600080fd5b9250929050565b60405181810167ffffffffffffffff8111828210171561268d57fe5b604052919050565b600067ffffffffffffffff8211156126a957fe5b50601f01601f191660200190565b60005b838110156126d25781810151838201526020016126ba565b83811115610e895750506000910152565b6001600160a01b038116811461114557600080fdfea2646970667358221220c44ae75eab653d768fbfa7732c07be2d4e7a8510188a09af0d6c6d15158e46b064736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
