{
  "_format": "hh-sol-artifact-1",
  "contractName": "AstraRouter01",
  "sourceName": "contracts/periphery/AstraRouter01.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_factory",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_SAMB",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "SAMB",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountADesired",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountBDesired",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountAMin",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountBMin",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "addLiquidity",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountB",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "liquidity",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountTokenDesired",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountTokenMin",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountAMBMin",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "addLiquidityAMB",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountToken",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountAMB",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "liquidity",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveIn",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveOut",
          "type": "uint256"
        }
      ],
      "name": "getAmountIn",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveIn",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveOut",
          "type": "uint256"
        }
      ],
      "name": "getAmountOut",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "path",
          "type": "address[]"
        }
      ],
      "name": "getAmountsIn",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "path",
          "type": "address[]"
        }
      ],
      "name": "getAmountsOut",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveB",
          "type": "uint256"
        }
      ],
      "name": "quote",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountB",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "liquidity",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountAMin",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountBMin",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "removeLiquidity",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountB",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "liquidity",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountTokenMin",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountAMBMin",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "removeLiquidityAMB",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountToken",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountAMB",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "liquidity",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountTokenMin",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountAMBMin",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "approveMax",
          "type": "bool"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "removeLiquidityAMBWithPermit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountToken",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountAMB",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "liquidity",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountAMin",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountBMin",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "approveMax",
          "type": "bool"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "removeLiquidityWithPermit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountB",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "path",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "swapAMBForExactTokens",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountOutMin",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "path",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "swapExactAMBForTokens",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountOutMin",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "path",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "swapExactTokensForAMB",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountOutMin",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "path",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "swapExactTokensForTokens",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountInMax",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "path",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "swapTokensForExactAMB",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountInMax",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "path",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "swapTokensForExactTokens",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60c060405234801561001057600080fd5b5060405161363d38038061363d8339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c61350161013c600039806101285280610d2d5280610ec85280610fa852806110df5280611135528061116952806111dd5280611430528061149a52806115ee52806116765280611ac25280611c5c5280611c975280611ead5280611ffe52806120865250806109d05280610a095280610b445280610c1b5280610dc95280610f8652806111135280611380528061153b52806116a8528061182b5280611a235280611a4c5280611b5e5280611d8c5280611f4e52806120b8528061283552806128785280612af55280612ba35280612c2352506135016000f3fe6080604052600436106101185760003560e01c806390793ea8116100a0578063d06ca61f11610064578063d06ca61f14610730578063e5dee373146107e5578063e77bdfc51461087b578063e8e33700146108ce578063ef0dc4be1461093057610151565b806390793ea8146105d3578063ac8ee3b614610604578063ad615dec14610688578063baa2abde146106be578063c45a01551461071b57610151565b806340d2463f116100e757806340d2463f146103d05780636eeccb891461046657806384b0b3a2146104d957806385f8c259146101565780638803dbee1461053d57610151565b8063054d50d4146101565780631f00ca741461019e5780632195995c146102a357806338ed17391461033a57610151565b3661015157336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461014f57fe5b005b600080fd5b34801561016257600080fd5b5061018c6004803603606081101561017957600080fd5b50803590602081013590604001356109b4565b60408051918252519081900360200190f35b3480156101aa57600080fd5b50610253600480360360408110156101c157600080fd5b81359190810190604081016020820135600160201b8111156101e257600080fd5b8201836020820111156101f457600080fd5b803590602001918460208302840111600160201b8311171561021557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506109c9945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561028f578181015183820152602001610277565b505050509050019250505060405180910390f35b3480156102af57600080fd5b5061032160048036036101608110156102c757600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff61010082013516906101208101359061014001356109ff565b6040805192835260208301919091528051918290030190f35b34801561034657600080fd5b50610253600480360360a081101561035d57600080fd5b813591602081013591810190606081016040820135600160201b81111561038357600080fd5b82018360208201111561039557600080fd5b803590602001918460208302840111600160201b831117156103b657600080fd5b91935091506001600160a01b038135169060200135610af9565b3480156103dc57600080fd5b50610253600480360360a08110156103f357600080fd5b813591602081013591810190606081016040820135600160201b81111561041957600080fd5b82018360208201111561042b57600080fd5b803590602001918460208302840111600160201b8311171561044c57600080fd5b91935091506001600160a01b038135169060200135610cdd565b34801561047257600080fd5b50610321600480360361014081101561048a57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135610f7c565b61051f600480360360c08110156104ef57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611090565b60408051938452602084019290925282820152519081900360600190f35b34801561054957600080fd5b50610253600480360360a081101561056057600080fd5b813591602081013591810190606081016040820135600160201b81111561058657600080fd5b82018360208201111561059857600080fd5b803590602001918460208302840111600160201b831117156105b957600080fd5b91935091506001600160a01b038135169060200135611335565b3480156105df57600080fd5b506105e861142e565b604080516001600160a01b039092168252519081900360200190f35b6102536004803603608081101561061a57600080fd5b81359190810190604081016020820135600160201b81111561063b57600080fd5b82018360208201111561064d57600080fd5b803590602001918460208302840111600160201b8311171561066e57600080fd5b91935091506001600160a01b038135169060200135611452565b34801561069457600080fd5b5061018c600480360360608110156106ab57600080fd5b50803590602081013590604001356117d0565b3480156106ca57600080fd5b50610321600480360360e08110156106e157600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c001356117dd565b34801561072757600080fd5b506105e8611a21565b34801561073c57600080fd5b506102536004803603604081101561075357600080fd5b81359190810190604081016020820135600160201b81111561077457600080fd5b82018360208201111561078657600080fd5b803590602001918460208302840111600160201b831117156107a757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611a45945050505050565b3480156107f157600080fd5b50610253600480360360a081101561080857600080fd5b813591602081013591810190606081016040820135600160201b81111561082e57600080fd5b82018360208201111561084057600080fd5b803590602001918460208302840111600160201b8311171561086157600080fd5b91935091506001600160a01b038135169060200135611a72565b34801561088757600080fd5b50610321600480360360c081101561089e57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611c0f565b3480156108da57600080fd5b5061051f60048036036101008110156108f257600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135611d29565b6102536004803603608081101561094657600080fd5b81359190810190604081016020820135600160201b81111561096757600080fd5b82018360208201111561097957600080fd5b803590602001918460208302840111600160201b8311171561099a57600080fd5b91935091506001600160a01b038135169060200135611e65565b60006109c18484846121f5565b949350505050565b60606109f67f000000000000000000000000000000000000000000000000000000000000000084846122e5565b90505b92915050565b6000806000610a2f7f00000000000000000000000000000000000000000000000000000000000000008f8f612432565b9050600087610a3e578c610a42565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015610ab857600080fd5b505af1158015610acc573d6000803e3d6000fd5b50505050610adf8f8f8f8f8f8f8f6117dd565b809450819550505050509b509b9950505050505050505050565b60608142811015610b3f576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b610b9d7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124f292505050565b91508682600184510381518110610bb057fe5b60200260200101511015610bf55760405162461bcd60e51b815260040180806020018281038252602781526020018061338e6027913960400191505060405180910390fd5b610c9386866000818110610c0557fe5b905060200201356001600160a01b031633610c797f00000000000000000000000000000000000000000000000000000000000000008a8a6000818110610c4757fe5b905060200201356001600160a01b03168b8b6001818110610c6457fe5b905060200201356001600160a01b0316612432565b85600081518110610c8657fe5b6020026020010151612629565b610cd282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250612786915050565b509695505050505050565b60608142811015610d23576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866000198101818110610d5d57fe5b905060200201356001600160a01b03166001600160a01b031614610dc4576040805162461bcd60e51b8152602060048201526019602482015278082e6e8e4c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b610e227f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506122e592505050565b91508682600081518110610e3257fe5b60200260200101511115610e775760405162461bcd60e51b81526004018080602001828103825260238152602001806133fc6023913960400191505060405180910390fd5b610e8786866000818110610c0557fe5b610ec682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250612786915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d83600185510381518110610f0557fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f4357600080fd5b505af1158015610f57573d6000803e3d6000fd5b50505050610cd28483600185510381518110610f6f57fe5b60200260200101516129cc565b6000806000610fcc7f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000612432565b9050600087610fdb578c610fdf565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561105557600080fd5b505af1158015611069573d6000803e3d6000fd5b5050505061107b8e8e8e8e8e8e611c0f565b909f909e509c50505050505050505050505050565b600080600083428110156110d9576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b6111078a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c612ac4565b909450925060006111597f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000612432565b90506111678b338388612629565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156111c257600080fd5b505af11580156111d6573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561125b57600080fd5b505af115801561126f573d6000803e3d6000fd5b505050506040513d602081101561128557600080fd5b505161128d57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b505050506040513d602081101561130f57600080fd5b505192503484101561132757611327338534036129cc565b505096509650969350505050565b6060814281101561137b576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b6113d97f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506122e592505050565b915086826000815181106113e957fe5b60200260200101511115610bf55760405162461bcd60e51b81526004018080602001828103825260238152602001806133fc6023913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b60608142811015611498576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316868660008181106114cf57fe5b905060200201356001600160a01b03166001600160a01b031614611536576040805162461bcd60e51b8152602060048201526019602482015278082e6e8e4c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b6115947f0000000000000000000000000000000000000000000000000000000000000000348888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124f292505050565b915086826001845103815181106115a757fe5b602002602001015110156115ec5760405162461bcd60e51b815260040180806020018281038252602781526020018061338e6027913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061162857fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561165b57600080fd5b505af115801561166f573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6116f17f0000000000000000000000000000000000000000000000000000000000000000898960008181106116d457fe5b905060200201356001600160a01b03168a8a6001818110610c6457fe5b846000815181106116fe57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561175557600080fd5b505af1158015611769573d6000803e3d6000fd5b505050506040513d602081101561177f57600080fd5b505161178757fe5b6117c682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250612786915050565b5095945050505050565b60006109c1848484612d38565b6000808242811015611824576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b60006118517f00000000000000000000000000000000000000000000000000000000000000008c8c612432565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b1580156118ac57600080fd5b505af11580156118c0573d6000803e3d6000fd5b505050506040513d60208110156118d657600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561192357600080fd5b505af1158015611937573d6000803e3d6000fd5b505050506040513d604081101561194d57600080fd5b508051602090910151909250905060006119678e8e612de4565b509050806001600160a01b03168e6001600160a01b03161461198a57818361198d565b82825b90975095508a8710156119d15760405162461bcd60e51b815260040180806020018281038252602281526020018061331a6022913960400191505060405180910390fd5b89861015611a105760405162461bcd60e51b81526004018080602001828103825260228152602001806132f86022913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606109f67f000000000000000000000000000000000000000000000000000000000000000084846124f2565b60608142811015611ab8576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866000198101818110611af257fe5b905060200201356001600160a01b03166001600160a01b031614611b59576040805162461bcd60e51b8152602060048201526019602482015278082e6e8e4c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b611bb77f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124f292505050565b91508682600184510381518110611bca57fe5b60200260200101511015610e775760405162461bcd60e51b815260040180806020018281038252602781526020018061338e6027913960400191505060405180910390fd5b6000808242811015611c56576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b611c85897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a6117dd565b9093509150611c95898685612ec2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611cfb57600080fd5b505af1158015611d0f573d6000803e3d6000fd5b50505050611d1d85836129cc565b50965096945050505050565b60008060008342811015611d72576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b611d808c8c8c8c8c8c612ac4565b90945092506000611db27f00000000000000000000000000000000000000000000000000000000000000008e8e612432565b9050611dc08d338388612629565b611dcc8c338387612629565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015611e2457600080fd5b505af1158015611e38573d6000803e3d6000fd5b505050506040513d6020811015611e4e57600080fd5b5051949d939c50939a509198505050505050505050565b60608142811015611eab576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110611ee257fe5b905060200201356001600160a01b03166001600160a01b031614611f49576040805162461bcd60e51b8152602060048201526019602482015278082e6e8e4c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b611fa77f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506122e592505050565b91503482600081518110611fb757fe5b60200260200101511115611ffc5760405162461bcd60e51b81526004018080602001828103825260238152602001806133fc6023913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061203857fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561206b57600080fd5b505af115801561207f573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6120e47f0000000000000000000000000000000000000000000000000000000000000000898960008181106116d457fe5b846000815181106120f157fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561214857600080fd5b505af115801561215c573d6000803e3d6000fd5b505050506040513d602081101561217257600080fd5b505161217a57fe5b6121b982878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250612786915050565b816000815181106121c657fe5b60200260200101513411156117c6576117c633836000815181106121e657fe5b602002602001015134036129cc565b60008084116122355760405162461bcd60e51b81526004018080602001828103825260278152602001806133d56027913960400191505060405180910390fd5b6000831180156122455750600082115b6122805760405162461bcd60e51b81526004018080602001828103825260248152602001806134a86024913960400191505060405180910390fd5b6000612294856103e563ffffffff61301616565b905060006122a8828563ffffffff61301616565b905060006122ce836122c2886103e863ffffffff61301616565b9063ffffffff61307916565b90508082816122d957fe5b04979650505050505050565b606060028251101561233e576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a20494e56414c49445f50415448000000000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561235657600080fd5b50604051908082528060200260200182016040528015612380578160200160208202803683370190505b509050828160018351038151811061239457fe5b60209081029190910101528151600019015b801561242a576000806123e3878660018603815181106123c257fe5b60200260200101518786815181106123d657fe5b60200260200101516130c8565b915091506124058484815181106123f657fe5b60200260200101518383613196565b84600185038151811061241457fe5b60209081029190910101525050600019016123a6565b509392505050565b60008060006124418585612de4565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b606060028251101561254b576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a20494e56414c49445f50415448000000000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561256357600080fd5b5060405190808252806020026020018201604052801561258d578160200160208202803683370190505b509050828160008151811061259e57fe5b60200260200101818152505060005b600183510381101561242a576000806125e3878685815181106125cc57fe5b60200260200101518786600101815181106123d657fe5b915091506126058484815181106125f657fe5b602002602001015183836121f5565b84846001018151811061261457fe5b602090810291909101015250506001016125ad565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106126ae5780518252601f19909201916020918201910161268f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612710576040519150601f19603f3d011682016040523d82523d6000602084013e612715565b606091505b5091509150818015612743575080511580612743575080806020019051602081101561274057600080fd5b50515b61277e5760405162461bcd60e51b815260040180806020018281038252603181526020018061335d6031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156129c6576000808483815181106127a457fe5b60200260200101518584600101815181106127bb57fe5b60200260200101519150915060006127d38383612de4565b50905060008785600101815181106127e757fe5b60200260200101519050600080836001600160a01b0316866001600160a01b03161461281557826000612819565b6000835b91509150600060028a510388106128305788612871565b6128717f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061286457fe5b6020026020010151612432565b905061289e7f00000000000000000000000000000000000000000000000000000000000000008888612432565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156128db576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561294c578181015183820152602001612934565b50505050905090810190601f1680156129795780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561299b57600080fd5b505af11580156129af573d6000803e3d6000fd5b505060019099019850612789975050505050505050565b50505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310612a185780518252601f1990920191602091820191016129f9565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612a7a576040519150601f19603f3d011682016040523d82523d6000602084013e612a7f565b606091505b5050905080612abf5760405162461bcd60e51b815260040180806020018281038252603481526020018061341f6034913960400191505060405180910390fd5b505050565b6040805163e6a4390560e01b81526001600160a01b03888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015612b3e57600080fd5b505afa158015612b52573d6000803e3d6000fd5b505050506040513d6020811015612b6857600080fd5b50516001600160a01b03161415612c1b57604080516364e329cb60e11b81526001600160a01b038a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b158015612bee57600080fd5b505af1158015612c02573d6000803e3d6000fd5b505050506040513d6020811015612c1857600080fd5b50505b600080612c497f00000000000000000000000000000000000000000000000000000000000000008b8b6130c8565b91509150816000148015612c5b575080155b15612c6b57879350869250612d2b565b6000612c78898484612d38565b9050878111612ccb5785811015612cc05760405162461bcd60e51b81526004018080602001828103825260228152602001806132f86022913960400191505060405180910390fd5b889450925082612d29565b6000612cd8898486612d38565b905089811115612ce457fe5b87811015612d235760405162461bcd60e51b815260040180806020018281038252602281526020018061331a6022913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6000808411612d785760405162461bcd60e51b81526004018080602001828103825260218152602001806132d76021913960400191505060405180910390fd5b600083118015612d885750600082115b612dc35760405162461bcd60e51b81526004018080602001828103825260248152602001806134a86024913960400191505060405180910390fd5b82612dd4858463ffffffff61301616565b81612ddb57fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415612e385760405162461bcd60e51b815260040180806020018281038252602181526020018061333c6021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610612e58578284612e5b565b83835b90925090506001600160a01b038216612ebb576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310612f3f5780518252601f199092019160209182019101612f20565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612fa1576040519150601f19603f3d011682016040523d82523d6000602084013e612fa6565b606091505b5091509150818015612fd4575080511580612fd45750808060200190516020811015612fd157600080fd5b50515b61300f5760405162461bcd60e51b815260040180806020018281038252602d815260200180613453602d913960400191505060405180910390fd5b5050505050565b60008115806130315750508082028282828161302e57fe5b04145b6109f9576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b808201828110156109f9576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b60008060006130d78585612de4565b5090506000806130e8888888612432565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561312057600080fd5b505afa158015613134573d6000803e3d6000fd5b505050506040513d606081101561314a57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614613184578082613187565b81815b90999098509650505050505050565b60008084116131d65760405162461bcd60e51b81526004018080602001828103825260288152602001806134806028913960400191505060405180910390fd5b6000831180156131e65750600082115b6132215760405162461bcd60e51b81526004018080602001828103825260248152602001806134a86024913960400191505060405180910390fd5b60006132456103e8613239868863ffffffff61301616565b9063ffffffff61301616565b9050600061325f6103e5613239868963ffffffff61328616565b905061327c600182848161326f57fe5b049063ffffffff61307916565b9695505050505050565b808203828111156109f9576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fdfe41737472614c6962726172793a20494e53554646494349454e545f414d4f554e544173747261526f757465723a20494e53554646494349454e545f425f414d4f554e544173747261526f757465723a20494e53554646494349454e545f415f414d4f554e5441737472614c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65644173747261526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544173747261526f757465723a204558504952454400000000000000000000000041737472614c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544173747261526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a3a736166655472616e73666572414d423a20414d42207472616e73666572206661696c65645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c656441737472614c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5441737472614c6962726172793a20494e53554646494349454e545f4c4951554944495459a2646970667358221220bfa04523c334c3627547c4fa89675283d138d3ebfd7e65557c5375348ca4c29864736f6c63430006060033",
  "deployedBytecode": "0x6080604052600436106101185760003560e01c806390793ea8116100a0578063d06ca61f11610064578063d06ca61f14610730578063e5dee373146107e5578063e77bdfc51461087b578063e8e33700146108ce578063ef0dc4be1461093057610151565b806390793ea8146105d3578063ac8ee3b614610604578063ad615dec14610688578063baa2abde146106be578063c45a01551461071b57610151565b806340d2463f116100e757806340d2463f146103d05780636eeccb891461046657806384b0b3a2146104d957806385f8c259146101565780638803dbee1461053d57610151565b8063054d50d4146101565780631f00ca741461019e5780632195995c146102a357806338ed17391461033a57610151565b3661015157336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461014f57fe5b005b600080fd5b34801561016257600080fd5b5061018c6004803603606081101561017957600080fd5b50803590602081013590604001356109b4565b60408051918252519081900360200190f35b3480156101aa57600080fd5b50610253600480360360408110156101c157600080fd5b81359190810190604081016020820135600160201b8111156101e257600080fd5b8201836020820111156101f457600080fd5b803590602001918460208302840111600160201b8311171561021557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506109c9945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561028f578181015183820152602001610277565b505050509050019250505060405180910390f35b3480156102af57600080fd5b5061032160048036036101608110156102c757600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff61010082013516906101208101359061014001356109ff565b6040805192835260208301919091528051918290030190f35b34801561034657600080fd5b50610253600480360360a081101561035d57600080fd5b813591602081013591810190606081016040820135600160201b81111561038357600080fd5b82018360208201111561039557600080fd5b803590602001918460208302840111600160201b831117156103b657600080fd5b91935091506001600160a01b038135169060200135610af9565b3480156103dc57600080fd5b50610253600480360360a08110156103f357600080fd5b813591602081013591810190606081016040820135600160201b81111561041957600080fd5b82018360208201111561042b57600080fd5b803590602001918460208302840111600160201b8311171561044c57600080fd5b91935091506001600160a01b038135169060200135610cdd565b34801561047257600080fd5b50610321600480360361014081101561048a57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135610f7c565b61051f600480360360c08110156104ef57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611090565b60408051938452602084019290925282820152519081900360600190f35b34801561054957600080fd5b50610253600480360360a081101561056057600080fd5b813591602081013591810190606081016040820135600160201b81111561058657600080fd5b82018360208201111561059857600080fd5b803590602001918460208302840111600160201b831117156105b957600080fd5b91935091506001600160a01b038135169060200135611335565b3480156105df57600080fd5b506105e861142e565b604080516001600160a01b039092168252519081900360200190f35b6102536004803603608081101561061a57600080fd5b81359190810190604081016020820135600160201b81111561063b57600080fd5b82018360208201111561064d57600080fd5b803590602001918460208302840111600160201b8311171561066e57600080fd5b91935091506001600160a01b038135169060200135611452565b34801561069457600080fd5b5061018c600480360360608110156106ab57600080fd5b50803590602081013590604001356117d0565b3480156106ca57600080fd5b50610321600480360360e08110156106e157600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c001356117dd565b34801561072757600080fd5b506105e8611a21565b34801561073c57600080fd5b506102536004803603604081101561075357600080fd5b81359190810190604081016020820135600160201b81111561077457600080fd5b82018360208201111561078657600080fd5b803590602001918460208302840111600160201b831117156107a757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611a45945050505050565b3480156107f157600080fd5b50610253600480360360a081101561080857600080fd5b813591602081013591810190606081016040820135600160201b81111561082e57600080fd5b82018360208201111561084057600080fd5b803590602001918460208302840111600160201b8311171561086157600080fd5b91935091506001600160a01b038135169060200135611a72565b34801561088757600080fd5b50610321600480360360c081101561089e57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611c0f565b3480156108da57600080fd5b5061051f60048036036101008110156108f257600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135611d29565b6102536004803603608081101561094657600080fd5b81359190810190604081016020820135600160201b81111561096757600080fd5b82018360208201111561097957600080fd5b803590602001918460208302840111600160201b8311171561099a57600080fd5b91935091506001600160a01b038135169060200135611e65565b60006109c18484846121f5565b949350505050565b60606109f67f000000000000000000000000000000000000000000000000000000000000000084846122e5565b90505b92915050565b6000806000610a2f7f00000000000000000000000000000000000000000000000000000000000000008f8f612432565b9050600087610a3e578c610a42565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015610ab857600080fd5b505af1158015610acc573d6000803e3d6000fd5b50505050610adf8f8f8f8f8f8f8f6117dd565b809450819550505050509b509b9950505050505050505050565b60608142811015610b3f576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b610b9d7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124f292505050565b91508682600184510381518110610bb057fe5b60200260200101511015610bf55760405162461bcd60e51b815260040180806020018281038252602781526020018061338e6027913960400191505060405180910390fd5b610c9386866000818110610c0557fe5b905060200201356001600160a01b031633610c797f00000000000000000000000000000000000000000000000000000000000000008a8a6000818110610c4757fe5b905060200201356001600160a01b03168b8b6001818110610c6457fe5b905060200201356001600160a01b0316612432565b85600081518110610c8657fe5b6020026020010151612629565b610cd282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250612786915050565b509695505050505050565b60608142811015610d23576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866000198101818110610d5d57fe5b905060200201356001600160a01b03166001600160a01b031614610dc4576040805162461bcd60e51b8152602060048201526019602482015278082e6e8e4c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b610e227f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506122e592505050565b91508682600081518110610e3257fe5b60200260200101511115610e775760405162461bcd60e51b81526004018080602001828103825260238152602001806133fc6023913960400191505060405180910390fd5b610e8786866000818110610c0557fe5b610ec682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250612786915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d83600185510381518110610f0557fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f4357600080fd5b505af1158015610f57573d6000803e3d6000fd5b50505050610cd28483600185510381518110610f6f57fe5b60200260200101516129cc565b6000806000610fcc7f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000612432565b9050600087610fdb578c610fdf565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561105557600080fd5b505af1158015611069573d6000803e3d6000fd5b5050505061107b8e8e8e8e8e8e611c0f565b909f909e509c50505050505050505050505050565b600080600083428110156110d9576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b6111078a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c612ac4565b909450925060006111597f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000612432565b90506111678b338388612629565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156111c257600080fd5b505af11580156111d6573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561125b57600080fd5b505af115801561126f573d6000803e3d6000fd5b505050506040513d602081101561128557600080fd5b505161128d57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b505050506040513d602081101561130f57600080fd5b505192503484101561132757611327338534036129cc565b505096509650969350505050565b6060814281101561137b576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b6113d97f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506122e592505050565b915086826000815181106113e957fe5b60200260200101511115610bf55760405162461bcd60e51b81526004018080602001828103825260238152602001806133fc6023913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b60608142811015611498576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316868660008181106114cf57fe5b905060200201356001600160a01b03166001600160a01b031614611536576040805162461bcd60e51b8152602060048201526019602482015278082e6e8e4c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b6115947f0000000000000000000000000000000000000000000000000000000000000000348888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124f292505050565b915086826001845103815181106115a757fe5b602002602001015110156115ec5760405162461bcd60e51b815260040180806020018281038252602781526020018061338e6027913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061162857fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561165b57600080fd5b505af115801561166f573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6116f17f0000000000000000000000000000000000000000000000000000000000000000898960008181106116d457fe5b905060200201356001600160a01b03168a8a6001818110610c6457fe5b846000815181106116fe57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561175557600080fd5b505af1158015611769573d6000803e3d6000fd5b505050506040513d602081101561177f57600080fd5b505161178757fe5b6117c682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250612786915050565b5095945050505050565b60006109c1848484612d38565b6000808242811015611824576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b60006118517f00000000000000000000000000000000000000000000000000000000000000008c8c612432565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b1580156118ac57600080fd5b505af11580156118c0573d6000803e3d6000fd5b505050506040513d60208110156118d657600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561192357600080fd5b505af1158015611937573d6000803e3d6000fd5b505050506040513d604081101561194d57600080fd5b508051602090910151909250905060006119678e8e612de4565b509050806001600160a01b03168e6001600160a01b03161461198a57818361198d565b82825b90975095508a8710156119d15760405162461bcd60e51b815260040180806020018281038252602281526020018061331a6022913960400191505060405180910390fd5b89861015611a105760405162461bcd60e51b81526004018080602001828103825260228152602001806132f86022913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606109f67f000000000000000000000000000000000000000000000000000000000000000084846124f2565b60608142811015611ab8576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866000198101818110611af257fe5b905060200201356001600160a01b03166001600160a01b031614611b59576040805162461bcd60e51b8152602060048201526019602482015278082e6e8e4c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b611bb77f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124f292505050565b91508682600184510381518110611bca57fe5b60200260200101511015610e775760405162461bcd60e51b815260040180806020018281038252602781526020018061338e6027913960400191505060405180910390fd5b6000808242811015611c56576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b611c85897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a6117dd565b9093509150611c95898685612ec2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611cfb57600080fd5b505af1158015611d0f573d6000803e3d6000fd5b50505050611d1d85836129cc565b50965096945050505050565b60008060008342811015611d72576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b611d808c8c8c8c8c8c612ac4565b90945092506000611db27f00000000000000000000000000000000000000000000000000000000000000008e8e612432565b9050611dc08d338388612629565b611dcc8c338387612629565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015611e2457600080fd5b505af1158015611e38573d6000803e3d6000fd5b505050506040513d6020811015611e4e57600080fd5b5051949d939c50939a509198505050505050505050565b60608142811015611eab576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110611ee257fe5b905060200201356001600160a01b03166001600160a01b031614611f49576040805162461bcd60e51b8152602060048201526019602482015278082e6e8e4c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b611fa77f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506122e592505050565b91503482600081518110611fb757fe5b60200260200101511115611ffc5760405162461bcd60e51b81526004018080602001828103825260238152602001806133fc6023913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061203857fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561206b57600080fd5b505af115801561207f573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6120e47f0000000000000000000000000000000000000000000000000000000000000000898960008181106116d457fe5b846000815181106120f157fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561214857600080fd5b505af115801561215c573d6000803e3d6000fd5b505050506040513d602081101561217257600080fd5b505161217a57fe5b6121b982878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250612786915050565b816000815181106121c657fe5b60200260200101513411156117c6576117c633836000815181106121e657fe5b602002602001015134036129cc565b60008084116122355760405162461bcd60e51b81526004018080602001828103825260278152602001806133d56027913960400191505060405180910390fd5b6000831180156122455750600082115b6122805760405162461bcd60e51b81526004018080602001828103825260248152602001806134a86024913960400191505060405180910390fd5b6000612294856103e563ffffffff61301616565b905060006122a8828563ffffffff61301616565b905060006122ce836122c2886103e863ffffffff61301616565b9063ffffffff61307916565b90508082816122d957fe5b04979650505050505050565b606060028251101561233e576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a20494e56414c49445f50415448000000000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561235657600080fd5b50604051908082528060200260200182016040528015612380578160200160208202803683370190505b509050828160018351038151811061239457fe5b60209081029190910101528151600019015b801561242a576000806123e3878660018603815181106123c257fe5b60200260200101518786815181106123d657fe5b60200260200101516130c8565b915091506124058484815181106123f657fe5b60200260200101518383613196565b84600185038151811061241457fe5b60209081029190910101525050600019016123a6565b509392505050565b60008060006124418585612de4565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b606060028251101561254b576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a20494e56414c49445f50415448000000000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561256357600080fd5b5060405190808252806020026020018201604052801561258d578160200160208202803683370190505b509050828160008151811061259e57fe5b60200260200101818152505060005b600183510381101561242a576000806125e3878685815181106125cc57fe5b60200260200101518786600101815181106123d657fe5b915091506126058484815181106125f657fe5b602002602001015183836121f5565b84846001018151811061261457fe5b602090810291909101015250506001016125ad565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106126ae5780518252601f19909201916020918201910161268f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612710576040519150601f19603f3d011682016040523d82523d6000602084013e612715565b606091505b5091509150818015612743575080511580612743575080806020019051602081101561274057600080fd5b50515b61277e5760405162461bcd60e51b815260040180806020018281038252603181526020018061335d6031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156129c6576000808483815181106127a457fe5b60200260200101518584600101815181106127bb57fe5b60200260200101519150915060006127d38383612de4565b50905060008785600101815181106127e757fe5b60200260200101519050600080836001600160a01b0316866001600160a01b03161461281557826000612819565b6000835b91509150600060028a510388106128305788612871565b6128717f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061286457fe5b6020026020010151612432565b905061289e7f00000000000000000000000000000000000000000000000000000000000000008888612432565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156128db576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561294c578181015183820152602001612934565b50505050905090810190601f1680156129795780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561299b57600080fd5b505af11580156129af573d6000803e3d6000fd5b505060019099019850612789975050505050505050565b50505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310612a185780518252601f1990920191602091820191016129f9565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612a7a576040519150601f19603f3d011682016040523d82523d6000602084013e612a7f565b606091505b5050905080612abf5760405162461bcd60e51b815260040180806020018281038252603481526020018061341f6034913960400191505060405180910390fd5b505050565b6040805163e6a4390560e01b81526001600160a01b03888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015612b3e57600080fd5b505afa158015612b52573d6000803e3d6000fd5b505050506040513d6020811015612b6857600080fd5b50516001600160a01b03161415612c1b57604080516364e329cb60e11b81526001600160a01b038a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b158015612bee57600080fd5b505af1158015612c02573d6000803e3d6000fd5b505050506040513d6020811015612c1857600080fd5b50505b600080612c497f00000000000000000000000000000000000000000000000000000000000000008b8b6130c8565b91509150816000148015612c5b575080155b15612c6b57879350869250612d2b565b6000612c78898484612d38565b9050878111612ccb5785811015612cc05760405162461bcd60e51b81526004018080602001828103825260228152602001806132f86022913960400191505060405180910390fd5b889450925082612d29565b6000612cd8898486612d38565b905089811115612ce457fe5b87811015612d235760405162461bcd60e51b815260040180806020018281038252602281526020018061331a6022913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6000808411612d785760405162461bcd60e51b81526004018080602001828103825260218152602001806132d76021913960400191505060405180910390fd5b600083118015612d885750600082115b612dc35760405162461bcd60e51b81526004018080602001828103825260248152602001806134a86024913960400191505060405180910390fd5b82612dd4858463ffffffff61301616565b81612ddb57fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415612e385760405162461bcd60e51b815260040180806020018281038252602181526020018061333c6021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610612e58578284612e5b565b83835b90925090506001600160a01b038216612ebb576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310612f3f5780518252601f199092019160209182019101612f20565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612fa1576040519150601f19603f3d011682016040523d82523d6000602084013e612fa6565b606091505b5091509150818015612fd4575080511580612fd45750808060200190516020811015612fd157600080fd5b50515b61300f5760405162461bcd60e51b815260040180806020018281038252602d815260200180613453602d913960400191505060405180910390fd5b5050505050565b60008115806130315750508082028282828161302e57fe5b04145b6109f9576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b808201828110156109f9576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b60008060006130d78585612de4565b5090506000806130e8888888612432565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561312057600080fd5b505afa158015613134573d6000803e3d6000fd5b505050506040513d606081101561314a57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614613184578082613187565b81815b90999098509650505050505050565b60008084116131d65760405162461bcd60e51b81526004018080602001828103825260288152602001806134806028913960400191505060405180910390fd5b6000831180156131e65750600082115b6132215760405162461bcd60e51b81526004018080602001828103825260248152602001806134a86024913960400191505060405180910390fd5b60006132456103e8613239868863ffffffff61301616565b9063ffffffff61301616565b9050600061325f6103e5613239868963ffffffff61328616565b905061327c600182848161326f57fe5b049063ffffffff61307916565b9695505050505050565b808203828111156109f9576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fdfe41737472614c6962726172793a20494e53554646494349454e545f414d4f554e544173747261526f757465723a20494e53554646494349454e545f425f414d4f554e544173747261526f757465723a20494e53554646494349454e545f415f414d4f554e5441737472614c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65644173747261526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544173747261526f757465723a204558504952454400000000000000000000000041737472614c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544173747261526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a3a736166655472616e73666572414d423a20414d42207472616e73666572206661696c65645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c656441737472614c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5441737472614c6962726172793a20494e53554646494349454e545f4c4951554944495459a2646970667358221220bfa04523c334c3627547c4fa89675283d138d3ebfd7e65557c5375348ca4c29864736f6c63430006060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
