{
  "_format": "hh-sol-artifact-1",
  "contractName": "OFTAdapterMintBurnMock",
  "sourceName": "contracts/mocks/layerzero/adapter/ERC20/OFTAdapterMintBurnMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "lzEndpoint",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "delegate",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "InvalidDelegate",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidEndpointCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidLocalDecimals",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "options",
          "type": "bytes"
        }
      ],
      "name": "InvalidOptions",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LzTokenUnavailable",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "eid",
          "type": "uint32"
        }
      ],
      "name": "NoPeer",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "msgValue",
          "type": "uint256"
        }
      ],
      "name": "NotEnoughNative",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "OnlyEndpoint",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "eid",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "sender",
          "type": "bytes32"
        }
      ],
      "name": "OnlyPeer",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlySelf",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "OwnableInvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OwnableUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "SafeERC20FailedOperation",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "result",
          "type": "bytes"
        }
      ],
      "name": "SimulationResult",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountLD",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minAmountLD",
          "type": "uint256"
        }
      ],
      "name": "SlippageExceeded",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountReceivedLD",
          "type": "uint256"
        }
      ],
      "name": "Credit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountSentLD",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountReceivedLD",
          "type": "uint256"
        }
      ],
      "name": "Debit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "eid",
              "type": "uint32"
            },
            {
              "internalType": "uint16",
              "name": "msgType",
              "type": "uint16"
            },
            {
              "internalType": "bytes",
              "name": "options",
              "type": "bytes"
            }
          ],
          "indexed": false,
          "internalType": "struct EnforcedOptionParam[]",
          "name": "_enforcedOptions",
          "type": "tuple[]"
        }
      ],
      "name": "EnforcedOptionSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "inspector",
          "type": "address"
        }
      ],
      "name": "MsgInspectorSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "guid",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "srcEid",
          "type": "uint32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "toAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountReceivedLD",
          "type": "uint256"
        }
      ],
      "name": "OFTReceived",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "guid",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "dstEid",
          "type": "uint32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "fromAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountSentLD",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountReceivedLD",
          "type": "uint256"
        }
      ],
      "name": "OFTSent",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "eid",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "peer",
          "type": "bytes32"
        }
      ],
      "name": "PeerSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "preCrimeAddress",
          "type": "address"
        }
      ],
      "name": "PreCrimeSet",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "SEND",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SEND_AND_CALL",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "srcEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "sender",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "nonce",
              "type": "uint64"
            }
          ],
          "internalType": "struct Origin",
          "name": "origin",
          "type": "tuple"
        }
      ],
      "name": "allowInitializePath",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "approvalRequired",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_eid",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "_msgType",
          "type": "uint16"
        },
        {
          "internalType": "bytes",
          "name": "_extraOptions",
          "type": "bytes"
        }
      ],
      "name": "combineOptions",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountLD",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "srcEid",
          "type": "uint32"
        }
      ],
      "name": "credit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountLD",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minAmountLD",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "dstEid",
          "type": "uint32"
        }
      ],
      "name": "debit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimalConversionRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "endpoint",
      "outputs": [
        {
          "internalType": "contract ILayerZeroEndpointV2",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "eid",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "msgType",
          "type": "uint16"
        }
      ],
      "name": "enforcedOptions",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "enforcedOption",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "srcEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "sender",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "nonce",
              "type": "uint64"
            }
          ],
          "internalType": "struct Origin",
          "name": "",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        },
        {
          "internalType": "address",
          "name": "_sender",
          "type": "address"
        }
      ],
      "name": "isComposeMsgSender",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_eid",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "_peer",
          "type": "bytes32"
        }
      ],
      "name": "isPeer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "srcEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "sender",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "nonce",
              "type": "uint64"
            }
          ],
          "internalType": "struct Origin",
          "name": "_origin",
          "type": "tuple"
        },
        {
          "internalType": "bytes32",
          "name": "_guid",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_message",
          "type": "bytes"
        },
        {
          "internalType": "address",
          "name": "_executor",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "lzReceive",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "uint32",
                  "name": "srcEid",
                  "type": "uint32"
                },
                {
                  "internalType": "bytes32",
                  "name": "sender",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint64",
                  "name": "nonce",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Origin",
              "name": "origin",
              "type": "tuple"
            },
            {
              "internalType": "uint32",
              "name": "dstEid",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "guid",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "executor",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "message",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "extraData",
              "type": "bytes"
            }
          ],
          "internalType": "struct InboundPacket[]",
          "name": "_packets",
          "type": "tuple[]"
        }
      ],
      "name": "lzReceiveAndRevert",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "srcEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "sender",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "nonce",
              "type": "uint64"
            }
          ],
          "internalType": "struct Origin",
          "name": "_origin",
          "type": "tuple"
        },
        {
          "internalType": "bytes32",
          "name": "_guid",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_message",
          "type": "bytes"
        },
        {
          "internalType": "address",
          "name": "_executor",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "lzReceiveSimulate",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "msgInspector",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "nextNonce",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "nonce",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oApp",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oAppVersion",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "senderVersion",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "receiverVersion",
          "type": "uint64"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oftVersion",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        },
        {
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "eid",
          "type": "uint32"
        }
      ],
      "name": "peers",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "peer",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "preCrime",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "dstEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "to",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "amountLD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minAmountLD",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "extraOptions",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "composeMsg",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "oftCmd",
              "type": "bytes"
            }
          ],
          "internalType": "struct SendParam",
          "name": "_sendParam",
          "type": "tuple"
        }
      ],
      "name": "quoteOFT",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "minAmountLD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxAmountLD",
              "type": "uint256"
            }
          ],
          "internalType": "struct OFTLimit",
          "name": "oftLimit",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "int256",
              "name": "feeAmountLD",
              "type": "int256"
            },
            {
              "internalType": "string",
              "name": "description",
              "type": "string"
            }
          ],
          "internalType": "struct OFTFeeDetail[]",
          "name": "oftFeeDetails",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "amountSentLD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountReceivedLD",
              "type": "uint256"
            }
          ],
          "internalType": "struct OFTReceipt",
          "name": "oftReceipt",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "dstEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "to",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "amountLD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minAmountLD",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "extraOptions",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "composeMsg",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "oftCmd",
              "type": "bytes"
            }
          ],
          "internalType": "struct SendParam",
          "name": "_sendParam",
          "type": "tuple"
        },
        {
          "internalType": "bool",
          "name": "_payInLzToken",
          "type": "bool"
        }
      ],
      "name": "quoteSend",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "nativeFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lzTokenFee",
              "type": "uint256"
            }
          ],
          "internalType": "struct MessagingFee",
          "name": "msgFee",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "dstEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "to",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "amountLD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minAmountLD",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "extraOptions",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "composeMsg",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "oftCmd",
              "type": "bytes"
            }
          ],
          "internalType": "struct SendParam",
          "name": "_sendParam",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "nativeFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lzTokenFee",
              "type": "uint256"
            }
          ],
          "internalType": "struct MessagingFee",
          "name": "_fee",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "_refundAddress",
          "type": "address"
        }
      ],
      "name": "send",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "guid",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "nonce",
              "type": "uint64"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "nativeFee",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "lzTokenFee",
                  "type": "uint256"
                }
              ],
              "internalType": "struct MessagingFee",
              "name": "fee",
              "type": "tuple"
            }
          ],
          "internalType": "struct MessagingReceipt",
          "name": "msgReceipt",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "amountSentLD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountReceivedLD",
              "type": "uint256"
            }
          ],
          "internalType": "struct OFTReceipt",
          "name": "oftReceipt",
          "type": "tuple"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_delegate",
          "type": "address"
        }
      ],
      "name": "setDelegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "eid",
              "type": "uint32"
            },
            {
              "internalType": "uint16",
              "name": "msgType",
              "type": "uint16"
            },
            {
              "internalType": "bytes",
              "name": "options",
              "type": "bytes"
            }
          ],
          "internalType": "struct EnforcedOptionParam[]",
          "name": "_enforcedOptions",
          "type": "tuple[]"
        }
      ],
      "name": "setEnforcedOptions",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_msgInspector",
          "type": "address"
        }
      ],
      "name": "setMsgInspector",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_eid",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "_peer",
          "type": "bytes32"
        }
      ],
      "name": "setPeer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_preCrime",
          "type": "address"
        }
      ],
      "name": "setPreCrime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "sharedDecimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60e060405234801561001057600080fd5b5060405161389638038061389683398101604081905261002f91610243565b828282828282826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100979190610286565b828281818181806001600160a01b0381166100cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100d5816101d2565b506001600160a01b03808316608052811661010357604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b15801561014a57600080fd5b505af115801561015e573d6000803e3d6000fd5b505050505050505061017461022260201b60201c565b60ff168360ff16101561019a576040516301e9714b60e41b815260040160405180910390fd5b6101a56006846102c6565b6101b090600a6103cc565b60a0525050506001600160a01b0390921660c052506103db9650505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b80516001600160a01b038116811461023e57600080fd5b919050565b60008060006060848603121561025857600080fd5b61026184610227565b925061026f60208501610227565b915061027d60408501610227565b90509250925092565b60006020828403121561029857600080fd5b815160ff811681146102a957600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60ff82811682821603908111156102df576102df6102b0565b92915050565b6001815b600184111561032057808504811115610304576103046102b0565b600184161561031257908102905b60019390931c9280026102e9565b935093915050565b600082610337575060016102df565b81610344575060006102df565b816001811461035a576002811461036457610380565b60019150506102df565b60ff841115610375576103756102b0565b50506001821b6102df565b5060208310610133831016604e8410600b84101617156103a3575081810a6102df565b6103b060001984846102e5565b80600019048211156103c4576103c46102b0565b029392505050565b60006102a960ff841683610328565b60805160a05160c05161343861045e6000396000818161073e01528181611811015261194f01526000818161058a01528181611c1301528181611c880152611d3b01526000818161047e0152818161092f015281816110d6015281816113f7015281816116ea01528181611e2501528181611f4f015261203901526134386000f3fe6080604052600436106102345760003560e01c806382413eac11610138578063bc70b354116100b0578063d045a0dc1161007f578063f2fde38b11610064578063f2fde38b1461070f578063fc0c546a1461072f578063ff7bd03d1461076257600080fd5b8063d045a0dc146106dc578063d4243885146106ef57600080fd5b8063bc70b35414610668578063bd815db014610688578063c7c7f5b31461069b578063ca5eb5e1146106bc57600080fd5b806398ae8aab11610107578063b731ea0a116100ec578063b731ea0a146105ee578063b98bd0701461061b578063bb0b6a531461063b57600080fd5b806398ae8aab146105ba5780639f68b964146105da57600080fd5b806382413eac14610511578063857749b0146105315780638da5cb5b1461054d578063963efcaa1461057857600080fd5b80633b6f743b116101cb5780635a0dfe4d1161019a5780636fc1b31e1161017f5780636fc1b31e146104a0578063715018a6146104c05780637d25a05e146104d557600080fd5b80635a0dfe4d146104255780635e280f111461046c57600080fd5b80633b6f743b146103985780634dba701b146103c557806352ae2879146103e55780635535d461146103f857600080fd5b8063156a0d0f11610207578063156a0d0f1461030057806317442b70146103415780631f5e1334146103635780633400288b1461037857600080fd5b80630d35b41514610239578063111ecdad1461027157806313137d65146102c3578063134d4f25146102d8575b600080fd5b34801561024557600080fd5b506102596102543660046121f5565b610782565b60405161026893929190612298565b60405180910390f35b34801561027d57600080fd5b5060045461029e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610268565b6102d66102d13660046123d0565b61092d565b005b3480156102e457600080fd5b506102ed600281565b60405161ffff9091168152602001610268565b34801561030c57600080fd5b50604080517f02e49c2c0000000000000000000000000000000000000000000000000000000081526001602082015201610268565b34801561034d57600080fd5b5060408051600181526002602082015201610268565b34801561036f57600080fd5b506102ed600181565b34801561038457600080fd5b506102d661039336600461248c565b610a2c565b3480156103a457600080fd5b506103b86103b33660046124c4565b610a42565b6040516102689190612516565b3480156103d157600080fd5b506102d66103e036600461252d565b610aab565b3480156103f157600080fd5b503061029e565b34801561040457600080fd5b5061041861041336600461257d565b610af9565b60405161026891906125b0565b34801561043157600080fd5b5061045c61044036600461248c565b63ffffffff919091166000908152600160205260409020541490565b6040519015158152602001610268565b34801561047857600080fd5b5061029e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ac57600080fd5b506102d66104bb3660046125c3565b610b9e565b3480156104cc57600080fd5b506102d6610c20565b3480156104e157600080fd5b506104f86104f036600461248c565b600092915050565b60405167ffffffffffffffff9091168152602001610268565b34801561051d57600080fd5b5061045c61052c3660046125e0565b610c34565b34801561053d57600080fd5b5060405160068152602001610268565b34801561055957600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661029e565b34801561058457600080fd5b506105ac7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610268565b3480156105c657600080fd5b506102d66105d5366004612647565b610c56565b3480156105e657600080fd5b50600161045c565b3480156105fa57600080fd5b5060025461029e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561062757600080fd5b506102d66106363660046126d4565b610cac565b34801561064757600080fd5b506105ac610656366004612716565b60016020526000908152604090205481565b34801561067457600080fd5b50610418610683366004612731565b610cc6565b6102d66106963660046126d4565b610e87565b6106ae6106a9366004612792565b611055565b60405161026892919061281e565b3480156106c857600080fd5b506102d66106d73660046125c3565b611089565b6102d66106ea3660046123d0565b611135565b3480156106fb57600080fd5b506102d661070a3660046125c3565b61117d565b34801561071b57600080fd5b506102d661072a3660046125c3565b6111f8565b34801561073b57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061029e565b34801561076e57600080fd5b5061045c61077d366004612871565b61125c565b604080518082019091526000808252602082015260606107b5604051806040016040528060008152602001600081525090565b6000803073ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610803573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610827919061288d565b73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089591906128aa565b604080518082018252848152602080820184905282516000808252918101909352909750919250906108ea565b6040805180820190915260008152606060208201528152602001906001900390816108c25790505b50935060008061090f604089013560608a013561090a60208c018c612716565b611292565b60408051808201909152918252602082015296989597505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146109a3576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b602087018035906109bd906109b8908a612716565b6112e7565b14610a14576109cf6020880188612716565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526020880135602482015260440161099a565b610a238787878787878761133c565b50505050505050565b610a346114d6565b610a3e8282611529565b5050565b60408051808201909152600080825260208201526000610a726040850135606086013561090a6020880188612716565b915050600080610a82868461157e565b9092509050610a9f610a976020880188612716565b8383886116d4565b93505050505b92915050565b6000610ab88484846117c2565b90507faa59a58ddf85cd3886905c545ad095a38aa8b22ddc6e9565293f7894b9a805c681604051610aeb91815260200190565b60405180910390a150505050565b600360209081526000928352604080842090915290825290208054610b1d906128f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610b49906128f2565b8015610b965780601f10610b6b57610100808354040283529160200191610b96565b820191906000526020600020905b815481529060010190602001808311610b7957829003601f168201915b505050505081565b610ba66114d6565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610c286114d6565b610c32600061187a565b565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b600080610c65868686866118ef565b60408051838152602081018390529294509092507f98ff8e8df1b96c632e1c76d797690d1e8bc7379f4e46dd61f3105b952d405fb7910160405180910390a1505050505050565b610cb46114d6565b610a3e610cc18284612a20565b6119c8565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610cfa906128f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610d26906128f2565b8015610d735780601f10610d4857610100808354040283529160200191610d73565b820191906000526020600020905b815481529060010190602001808311610d5657829003601f168201915b505050505090508051600003610dc35783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610c4e9350505050565b6000839003610dd3579050610c4e565b60028310610e5157610e1a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611acf92505050565b80610e288460028188612b4c565b604051602001610e3a93929190612b76565b604051602081830303815290604052915050610c4e565b83836040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161099a929190612be7565b60005b81811015610f905736838383818110610ea557610ea5612bfb565b9050602002810190610eb79190612c2a565b9050610eea610ec96020830183612716565b602083013563ffffffff919091166000908152600160205260409020541490565b610ef45750610f88565b3063d045a0dc60c08301358360a0810135610f13610100830183612c68565b610f24610100890160e08a016125c3565b610f326101208a018a612c68565b6040518963ffffffff1660e01b8152600401610f549796959493929190612ce3565b6000604051808303818588803b158015610f6d57600080fd5b505af1158015610f81573d6000803e3d6000fd5b5050505050505b600101610e8a565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610fdc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526110229190810190612d77565b6040517f8351eea700000000000000000000000000000000000000000000000000000000815260040161099a91906125b0565b61105d612195565b604080518082019091526000808252602082015261107c858585611b14565b915091505b935093915050565b6110916114d6565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561111a57600080fd5b505af115801561112e573d6000803e3d6000fd5b5050505050565b33301461116e576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a2387878787878787610a14565b6111856114d6565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610c15565b6112006114d6565b73ffffffffffffffffffffffffffffffffffffffff8116611250576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161099a565b6112598161187a565b50565b60006020820180359060019083906112749086612716565b63ffffffff1681526020810191909152604001600020541492915050565b60008061129e85611c0f565b915081905083811015611081576040517f71c4efed000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260440161099a565b63ffffffff811660009081526001602052604081205480610aa5576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff8416600482015260240161099a565b600061134e61134b8787611c46565b90565b9050600061137a826113686113638a8a611c5e565b611c81565b61137560208d018d612716565b6117c2565b905060288611156114675760006113b761139a60608c0160408d01612de5565b6113a760208d018d612716565b846113b28c8c611cb7565b611d02565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906114339086908d906000908790600401612e02565b600060405180830381600087803b15801561144d57600080fd5b505af1158015611461573d6000803e3d6000fd5b50505050505b73ffffffffffffffffffffffffffffffffffffffff8216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c6114ad60208d018d612716565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c32576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161099a565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b60608060006115db856020013561159486611d34565b6115a160a0890189612c68565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6092505050565b90935090506000816115ee5760016115f1565b60025b90506116116116036020880188612716565b8261068360808a018a612c68565b60045490935073ffffffffffffffffffffffffffffffffffffffff1680156116ca576040517f043a78eb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063043a78eb906116879088908890600401612e4b565b602060405180830381865afa1580156116a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c89190612e70565b505b5050509250929050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611744896112e7565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611779929190612e8d565b6040805180830381865afa158015611795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b99190612f62565b95945050505050565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490526000917f0000000000000000000000000000000000000000000000000000000000000000909116906340c10f1990604401600060405180830381600087803b15801561185757600080fd5b505af115801561186b573d6000803e3d6000fd5b505050508290505b9392505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806118fd858585611292565b6040517f79cc679000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529294509092507f0000000000000000000000000000000000000000000000000000000000000000909116906379cc6790906044016020604051808303816000875af115801561199a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119be9190612e70565b5094509492505050565b60005b8151811015611a9f576119fa8282815181106119e9576119e9612bfb565b602002602001015160400151611acf565b818181518110611a0c57611a0c612bfb565b60200260200101516040015160036000848481518110611a2e57611a2e612bfb565b60200260200101516000015163ffffffff1663ffffffff1681526020019081526020016000206000848481518110611a6857611a68612bfb565b60200260200101516020015161ffff1661ffff1681526020019081526020016000209081611a969190612fca565b506001016119cb565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67481604051610c1591906130e3565b600281015161ffff8116600314610a3e57816040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161099a91906125b0565b611b1c612195565b6040805180820190915260008082526020820152600080611b5333604089013560608a0135611b4e60208c018c612716565b6118ef565b91509150600080611b64898461157e565b9092509050611b90611b7960208b018b612716565b8383611b8a368d90038d018d613191565b8b611df2565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90611bde908d018d612716565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b60007f0000000000000000000000000000000000000000000000000000000000000000611c3c81846131c4565b610aa591906131ff565b6000611c556020828486612b4c565b6118739161323d565b6000611c6e602860208486612b4c565b611c7791613279565b60c01c9392505050565b6000610aa57f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff84166131ff565b6060611cc68260288186612b4c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606084848484604051602001611d1b94939291906132df565b6040516020818303038152906040529050949350505050565b6000610aa57f0000000000000000000000000000000000000000000000000000000000000000836131c4565b8051606090151580611dc1578484604051602001611dad92919091825260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016602082015260280190565b604051602081830303815290604052611de8565b84843385604051602001611dd8949392919061335d565b6040516020818303038152906040525b9150935093915050565b611dfa612195565b6000611e098460000151611f0a565b602085015190915015611e2357611e238460200151611f4b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001611e808c6112e7565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611ebc929190612e8d565b60806040518083038185885af1158015611eda573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eff91906133b6565b979650505050505050565b6000813414611f47576040517f9f70412000000000000000000000000000000000000000000000000000000000815234600482015260240161099a565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fdc919061288d565b905073ffffffffffffffffffffffffffffffffffffffff811661202b576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805133602482018190527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff818116604485015260648085018890528551808603909101815260849094019094526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610a3e9385169286906120eb9085906120f1565b50505050565b600080602060008451602086016000885af180612114576040513d6000823e3d81fd5b50506000513d9150811561212c578060011415612146565b73ffffffffffffffffffffffffffffffffffffffff84163b155b156120eb576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161099a565b604051806060016040528060008019168152602001600067ffffffffffffffff1681526020016121d8604051806040016040528060008152602001600081525090565b905290565b600060e082840312156121ef57600080fd5b50919050565b60006020828403121561220757600080fd5b813567ffffffffffffffff81111561221e57600080fd5b610c4e848285016121dd565b60005b8381101561224557818101518382015260200161222d565b50506000910152565b6000815180845261226681602086016020860161222a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8351815260208085015190820152600060a0820160a0604084015280855180835260c08501915060c08160051b86010192506020870160005b82811015612337577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408786030184528151805186526020810151905060406020870152612321604087018261224e565b95505060209384019391909101906001016122d1565b5050855160608601525050602084015160808401529050610c4e565b6000606082840312156121ef57600080fd5b60008083601f84011261237757600080fd5b50813567ffffffffffffffff81111561238f57600080fd5b6020830191508360208285010111156123a757600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461125957600080fd5b600080600080600080600060e0888a0312156123eb57600080fd5b6123f58989612353565b965060608801359550608088013567ffffffffffffffff81111561241857600080fd5b6124248a828b01612365565b90965094505060a0880135612438816123ae565b925060c088013567ffffffffffffffff81111561245457600080fd5b6124608a828b01612365565b989b979a50959850939692959293505050565b803563ffffffff8116811461248757600080fd5b919050565b6000806040838503121561249f57600080fd5b6124a883612473565b946020939093013593505050565b801515811461125957600080fd5b600080604083850312156124d757600080fd5b823567ffffffffffffffff8111156124ee57600080fd5b6124fa858286016121dd565b925050602083013561250b816124b6565b809150509250929050565b815181526020808301519082015260408101610aa5565b60008060006060848603121561254257600080fd5b833561254d816123ae565b92506020840135915061256260408501612473565b90509250925092565b803561ffff8116811461248757600080fd5b6000806040838503121561259057600080fd5b61259983612473565b91506125a76020840161256b565b90509250929050565b602081526000611873602083018461224e565b6000602082840312156125d557600080fd5b8135611873816123ae565b60008060008060a085870312156125f657600080fd5b6126008686612353565b9350606085013567ffffffffffffffff81111561261c57600080fd5b61262887828801612365565b909450925050608085013561263c816123ae565b939692955090935050565b6000806000806080858703121561265d57600080fd5b8435612668816123ae565b9350602085013592506040850135915061268460608601612473565b905092959194509250565b60008083601f8401126126a157600080fd5b50813567ffffffffffffffff8111156126b957600080fd5b6020830191508360208260051b85010111156123a757600080fd5b600080602083850312156126e757600080fd5b823567ffffffffffffffff8111156126fe57600080fd5b61270a8582860161268f565b90969095509350505050565b60006020828403121561272857600080fd5b61187382612473565b6000806000806060858703121561274757600080fd5b61275085612473565b935061275e6020860161256b565b9250604085013567ffffffffffffffff81111561277a57600080fd5b61278687828801612365565b95989497509550505050565b600080600083850360808112156127a857600080fd5b843567ffffffffffffffff8111156127bf57600080fd5b6127cb878288016121dd565b94505060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820112156127fe57600080fd5b506020840191506060840135612813816123ae565b809150509250925092565b600060c0820190508351825267ffffffffffffffff6020850151166020830152604084015161285a604084018280518252602090810151910152565b5082516080830152602083015160a0830152611873565b60006060828403121561288357600080fd5b6118738383612353565b60006020828403121561289f57600080fd5b8151611873816123ae565b6000602082840312156128bc57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061290657607f821691505b6020821081036121ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6040516060810167ffffffffffffffff81118282101715612962576129626128c3565b60405290565b6040805190810167ffffffffffffffff81118282101715612962576129626128c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156129d2576129d26128c3565b604052919050565b600067ffffffffffffffff8211156129f4576129f46128c3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600067ffffffffffffffff831115612a3a57612a3a6128c3565b8260051b612a4a6020820161298b565b84815290830190602081019036831115612a6357600080fd5b845b83811015612b4257803567ffffffffffffffff811115612a8457600080fd5b86016060368290031215612a9757600080fd5b612a9f61293f565b612aa882612473565b8152612ab66020830161256b565b6020820152604082013567ffffffffffffffff811115612ad557600080fd5b919091019036601f830112612ae957600080fd5b8135612afc612af7826129da565b61298b565b818152366020838601011115612b1157600080fd5b8160208501602083013760006020838301015280604084015250508085525050602083019250602081019050612a65565b5095945050505050565b60008085851115612b5c57600080fd5b83861115612b6957600080fd5b5050820193919092039150565b60008451612b8881846020890161222a565b8201838582376000930192835250909392505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000610c4e602083018486612b9e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612c5e57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612c9d57600080fd5b83018035915067ffffffffffffffff821115612cb857600080fd5b6020019150368190038213156123a757600080fd5b67ffffffffffffffff8116811461125957600080fd5b63ffffffff612cf189612473565b1681526020888101359082015260006040890135612d0e81612ccd565b67ffffffffffffffff811660408401525087606083015260e06080830152612d3a60e083018789612b9e565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152612d69818587612b9e565b9a9950505050505050505050565b600060208284031215612d8957600080fd5b815167ffffffffffffffff811115612da057600080fd5b8201601f81018413612db157600080fd5b8051612dbf612af7826129da565b818152856020838501011115612dd457600080fd5b6117b982602083016020860161222a565b600060208284031215612df757600080fd5b813561187381612ccd565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015261ffff83166040820152608060608201526000612e41608083018461224e565b9695505050505050565b604081526000612e5e604083018561224e565b82810360208401526117b9818561224e565b600060208284031215612e8257600080fd5b8151611873816124b6565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152612ec360e084018261224e565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152612efe828261224e565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b600060408284031215612f4357600080fd5b612f4b612968565b825181526020928301519281019290925250919050565b600060408284031215612f7457600080fd5b6118738383612f31565b601f821115612fc557806000526020600020601f840160051c81016020851015612fa55750805b601f840160051c820191505b8181101561112e5760008155600101612fb1565b505050565b815167ffffffffffffffff811115612fe457612fe46128c3565b612ff881612ff284546128f2565b84612f7e565b6020601f82116001811461304a57600083156130145750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b17845561112e565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156130985787850151825560209485019460019092019101613078565b50848210156130d457868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613185577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815163ffffffff815116865261ffff6020820151166020870152604081015190506060604087015261316f606087018261224e565b955050602093840193919091019060010161310b565b50929695505050505050565b600060408284031280156131a457600080fd5b506131ad612968565b823581526020928301359281019290925250919050565b6000826131fa577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80356020831015610aa5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b80357fffffffffffffffff00000000000000000000000000000000000000000000000081169060088410156132d8577fffffffffffffffff000000000000000000000000000000000000000000000000808560080360031b1b82161691505b5092915050565b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c8201526000825161334d81602c85016020870161222a565b91909101602c0195945050505050565b8481527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b166020820152826028820152600082516133a681604885016020870161222a565b9190910160480195945050505050565b600060808284031280156133c957600080fd5b506133d261293f565b8251815260208301516133e481612ccd565b60208201526133f68460408501612f31565b6040820152939250505056fea2646970667358221220846f1dec694a3c5a0698ba497f5fc948286081f40a02b824232755a8a12cdc5864736f6c634300081c0033",
  "deployedBytecode": "0x6080604052600436106102345760003560e01c806382413eac11610138578063bc70b354116100b0578063d045a0dc1161007f578063f2fde38b11610064578063f2fde38b1461070f578063fc0c546a1461072f578063ff7bd03d1461076257600080fd5b8063d045a0dc146106dc578063d4243885146106ef57600080fd5b8063bc70b35414610668578063bd815db014610688578063c7c7f5b31461069b578063ca5eb5e1146106bc57600080fd5b806398ae8aab11610107578063b731ea0a116100ec578063b731ea0a146105ee578063b98bd0701461061b578063bb0b6a531461063b57600080fd5b806398ae8aab146105ba5780639f68b964146105da57600080fd5b806382413eac14610511578063857749b0146105315780638da5cb5b1461054d578063963efcaa1461057857600080fd5b80633b6f743b116101cb5780635a0dfe4d1161019a5780636fc1b31e1161017f5780636fc1b31e146104a0578063715018a6146104c05780637d25a05e146104d557600080fd5b80635a0dfe4d146104255780635e280f111461046c57600080fd5b80633b6f743b146103985780634dba701b146103c557806352ae2879146103e55780635535d461146103f857600080fd5b8063156a0d0f11610207578063156a0d0f1461030057806317442b70146103415780631f5e1334146103635780633400288b1461037857600080fd5b80630d35b41514610239578063111ecdad1461027157806313137d65146102c3578063134d4f25146102d8575b600080fd5b34801561024557600080fd5b506102596102543660046121f5565b610782565b60405161026893929190612298565b60405180910390f35b34801561027d57600080fd5b5060045461029e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610268565b6102d66102d13660046123d0565b61092d565b005b3480156102e457600080fd5b506102ed600281565b60405161ffff9091168152602001610268565b34801561030c57600080fd5b50604080517f02e49c2c0000000000000000000000000000000000000000000000000000000081526001602082015201610268565b34801561034d57600080fd5b5060408051600181526002602082015201610268565b34801561036f57600080fd5b506102ed600181565b34801561038457600080fd5b506102d661039336600461248c565b610a2c565b3480156103a457600080fd5b506103b86103b33660046124c4565b610a42565b6040516102689190612516565b3480156103d157600080fd5b506102d66103e036600461252d565b610aab565b3480156103f157600080fd5b503061029e565b34801561040457600080fd5b5061041861041336600461257d565b610af9565b60405161026891906125b0565b34801561043157600080fd5b5061045c61044036600461248c565b63ffffffff919091166000908152600160205260409020541490565b6040519015158152602001610268565b34801561047857600080fd5b5061029e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ac57600080fd5b506102d66104bb3660046125c3565b610b9e565b3480156104cc57600080fd5b506102d6610c20565b3480156104e157600080fd5b506104f86104f036600461248c565b600092915050565b60405167ffffffffffffffff9091168152602001610268565b34801561051d57600080fd5b5061045c61052c3660046125e0565b610c34565b34801561053d57600080fd5b5060405160068152602001610268565b34801561055957600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661029e565b34801561058457600080fd5b506105ac7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610268565b3480156105c657600080fd5b506102d66105d5366004612647565b610c56565b3480156105e657600080fd5b50600161045c565b3480156105fa57600080fd5b5060025461029e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561062757600080fd5b506102d66106363660046126d4565b610cac565b34801561064757600080fd5b506105ac610656366004612716565b60016020526000908152604090205481565b34801561067457600080fd5b50610418610683366004612731565b610cc6565b6102d66106963660046126d4565b610e87565b6106ae6106a9366004612792565b611055565b60405161026892919061281e565b3480156106c857600080fd5b506102d66106d73660046125c3565b611089565b6102d66106ea3660046123d0565b611135565b3480156106fb57600080fd5b506102d661070a3660046125c3565b61117d565b34801561071b57600080fd5b506102d661072a3660046125c3565b6111f8565b34801561073b57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061029e565b34801561076e57600080fd5b5061045c61077d366004612871565b61125c565b604080518082019091526000808252602082015260606107b5604051806040016040528060008152602001600081525090565b6000803073ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610803573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610827919061288d565b73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089591906128aa565b604080518082018252848152602080820184905282516000808252918101909352909750919250906108ea565b6040805180820190915260008152606060208201528152602001906001900390816108c25790505b50935060008061090f604089013560608a013561090a60208c018c612716565b611292565b60408051808201909152918252602082015296989597505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146109a3576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b602087018035906109bd906109b8908a612716565b6112e7565b14610a14576109cf6020880188612716565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526020880135602482015260440161099a565b610a238787878787878761133c565b50505050505050565b610a346114d6565b610a3e8282611529565b5050565b60408051808201909152600080825260208201526000610a726040850135606086013561090a6020880188612716565b915050600080610a82868461157e565b9092509050610a9f610a976020880188612716565b8383886116d4565b93505050505b92915050565b6000610ab88484846117c2565b90507faa59a58ddf85cd3886905c545ad095a38aa8b22ddc6e9565293f7894b9a805c681604051610aeb91815260200190565b60405180910390a150505050565b600360209081526000928352604080842090915290825290208054610b1d906128f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610b49906128f2565b8015610b965780601f10610b6b57610100808354040283529160200191610b96565b820191906000526020600020905b815481529060010190602001808311610b7957829003601f168201915b505050505081565b610ba66114d6565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610c286114d6565b610c32600061187a565b565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b600080610c65868686866118ef565b60408051838152602081018390529294509092507f98ff8e8df1b96c632e1c76d797690d1e8bc7379f4e46dd61f3105b952d405fb7910160405180910390a1505050505050565b610cb46114d6565b610a3e610cc18284612a20565b6119c8565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610cfa906128f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610d26906128f2565b8015610d735780601f10610d4857610100808354040283529160200191610d73565b820191906000526020600020905b815481529060010190602001808311610d5657829003601f168201915b505050505090508051600003610dc35783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610c4e9350505050565b6000839003610dd3579050610c4e565b60028310610e5157610e1a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611acf92505050565b80610e288460028188612b4c565b604051602001610e3a93929190612b76565b604051602081830303815290604052915050610c4e565b83836040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161099a929190612be7565b60005b81811015610f905736838383818110610ea557610ea5612bfb565b9050602002810190610eb79190612c2a565b9050610eea610ec96020830183612716565b602083013563ffffffff919091166000908152600160205260409020541490565b610ef45750610f88565b3063d045a0dc60c08301358360a0810135610f13610100830183612c68565b610f24610100890160e08a016125c3565b610f326101208a018a612c68565b6040518963ffffffff1660e01b8152600401610f549796959493929190612ce3565b6000604051808303818588803b158015610f6d57600080fd5b505af1158015610f81573d6000803e3d6000fd5b5050505050505b600101610e8a565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610fdc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526110229190810190612d77565b6040517f8351eea700000000000000000000000000000000000000000000000000000000815260040161099a91906125b0565b61105d612195565b604080518082019091526000808252602082015261107c858585611b14565b915091505b935093915050565b6110916114d6565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561111a57600080fd5b505af115801561112e573d6000803e3d6000fd5b5050505050565b33301461116e576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a2387878787878787610a14565b6111856114d6565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610c15565b6112006114d6565b73ffffffffffffffffffffffffffffffffffffffff8116611250576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161099a565b6112598161187a565b50565b60006020820180359060019083906112749086612716565b63ffffffff1681526020810191909152604001600020541492915050565b60008061129e85611c0f565b915081905083811015611081576040517f71c4efed000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260440161099a565b63ffffffff811660009081526001602052604081205480610aa5576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff8416600482015260240161099a565b600061134e61134b8787611c46565b90565b9050600061137a826113686113638a8a611c5e565b611c81565b61137560208d018d612716565b6117c2565b905060288611156114675760006113b761139a60608c0160408d01612de5565b6113a760208d018d612716565b846113b28c8c611cb7565b611d02565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906114339086908d906000908790600401612e02565b600060405180830381600087803b15801561144d57600080fd5b505af1158015611461573d6000803e3d6000fd5b50505050505b73ffffffffffffffffffffffffffffffffffffffff8216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c6114ad60208d018d612716565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c32576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161099a565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b60608060006115db856020013561159486611d34565b6115a160a0890189612c68565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6092505050565b90935090506000816115ee5760016115f1565b60025b90506116116116036020880188612716565b8261068360808a018a612c68565b60045490935073ffffffffffffffffffffffffffffffffffffffff1680156116ca576040517f043a78eb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063043a78eb906116879088908890600401612e4b565b602060405180830381865afa1580156116a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c89190612e70565b505b5050509250929050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611744896112e7565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611779929190612e8d565b6040805180830381865afa158015611795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b99190612f62565b95945050505050565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490526000917f0000000000000000000000000000000000000000000000000000000000000000909116906340c10f1990604401600060405180830381600087803b15801561185757600080fd5b505af115801561186b573d6000803e3d6000fd5b505050508290505b9392505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806118fd858585611292565b6040517f79cc679000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529294509092507f0000000000000000000000000000000000000000000000000000000000000000909116906379cc6790906044016020604051808303816000875af115801561199a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119be9190612e70565b5094509492505050565b60005b8151811015611a9f576119fa8282815181106119e9576119e9612bfb565b602002602001015160400151611acf565b818181518110611a0c57611a0c612bfb565b60200260200101516040015160036000848481518110611a2e57611a2e612bfb565b60200260200101516000015163ffffffff1663ffffffff1681526020019081526020016000206000848481518110611a6857611a68612bfb565b60200260200101516020015161ffff1661ffff1681526020019081526020016000209081611a969190612fca565b506001016119cb565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67481604051610c1591906130e3565b600281015161ffff8116600314610a3e57816040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161099a91906125b0565b611b1c612195565b6040805180820190915260008082526020820152600080611b5333604089013560608a0135611b4e60208c018c612716565b6118ef565b91509150600080611b64898461157e565b9092509050611b90611b7960208b018b612716565b8383611b8a368d90038d018d613191565b8b611df2565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90611bde908d018d612716565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b60007f0000000000000000000000000000000000000000000000000000000000000000611c3c81846131c4565b610aa591906131ff565b6000611c556020828486612b4c565b6118739161323d565b6000611c6e602860208486612b4c565b611c7791613279565b60c01c9392505050565b6000610aa57f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff84166131ff565b6060611cc68260288186612b4c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606084848484604051602001611d1b94939291906132df565b6040516020818303038152906040529050949350505050565b6000610aa57f0000000000000000000000000000000000000000000000000000000000000000836131c4565b8051606090151580611dc1578484604051602001611dad92919091825260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016602082015260280190565b604051602081830303815290604052611de8565b84843385604051602001611dd8949392919061335d565b6040516020818303038152906040525b9150935093915050565b611dfa612195565b6000611e098460000151611f0a565b602085015190915015611e2357611e238460200151611f4b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001611e808c6112e7565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611ebc929190612e8d565b60806040518083038185885af1158015611eda573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eff91906133b6565b979650505050505050565b6000813414611f47576040517f9f70412000000000000000000000000000000000000000000000000000000000815234600482015260240161099a565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fdc919061288d565b905073ffffffffffffffffffffffffffffffffffffffff811661202b576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805133602482018190527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff818116604485015260648085018890528551808603909101815260849094019094526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610a3e9385169286906120eb9085906120f1565b50505050565b600080602060008451602086016000885af180612114576040513d6000823e3d81fd5b50506000513d9150811561212c578060011415612146565b73ffffffffffffffffffffffffffffffffffffffff84163b155b156120eb576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161099a565b604051806060016040528060008019168152602001600067ffffffffffffffff1681526020016121d8604051806040016040528060008152602001600081525090565b905290565b600060e082840312156121ef57600080fd5b50919050565b60006020828403121561220757600080fd5b813567ffffffffffffffff81111561221e57600080fd5b610c4e848285016121dd565b60005b8381101561224557818101518382015260200161222d565b50506000910152565b6000815180845261226681602086016020860161222a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8351815260208085015190820152600060a0820160a0604084015280855180835260c08501915060c08160051b86010192506020870160005b82811015612337577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408786030184528151805186526020810151905060406020870152612321604087018261224e565b95505060209384019391909101906001016122d1565b5050855160608601525050602084015160808401529050610c4e565b6000606082840312156121ef57600080fd5b60008083601f84011261237757600080fd5b50813567ffffffffffffffff81111561238f57600080fd5b6020830191508360208285010111156123a757600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461125957600080fd5b600080600080600080600060e0888a0312156123eb57600080fd5b6123f58989612353565b965060608801359550608088013567ffffffffffffffff81111561241857600080fd5b6124248a828b01612365565b90965094505060a0880135612438816123ae565b925060c088013567ffffffffffffffff81111561245457600080fd5b6124608a828b01612365565b989b979a50959850939692959293505050565b803563ffffffff8116811461248757600080fd5b919050565b6000806040838503121561249f57600080fd5b6124a883612473565b946020939093013593505050565b801515811461125957600080fd5b600080604083850312156124d757600080fd5b823567ffffffffffffffff8111156124ee57600080fd5b6124fa858286016121dd565b925050602083013561250b816124b6565b809150509250929050565b815181526020808301519082015260408101610aa5565b60008060006060848603121561254257600080fd5b833561254d816123ae565b92506020840135915061256260408501612473565b90509250925092565b803561ffff8116811461248757600080fd5b6000806040838503121561259057600080fd5b61259983612473565b91506125a76020840161256b565b90509250929050565b602081526000611873602083018461224e565b6000602082840312156125d557600080fd5b8135611873816123ae565b60008060008060a085870312156125f657600080fd5b6126008686612353565b9350606085013567ffffffffffffffff81111561261c57600080fd5b61262887828801612365565b909450925050608085013561263c816123ae565b939692955090935050565b6000806000806080858703121561265d57600080fd5b8435612668816123ae565b9350602085013592506040850135915061268460608601612473565b905092959194509250565b60008083601f8401126126a157600080fd5b50813567ffffffffffffffff8111156126b957600080fd5b6020830191508360208260051b85010111156123a757600080fd5b600080602083850312156126e757600080fd5b823567ffffffffffffffff8111156126fe57600080fd5b61270a8582860161268f565b90969095509350505050565b60006020828403121561272857600080fd5b61187382612473565b6000806000806060858703121561274757600080fd5b61275085612473565b935061275e6020860161256b565b9250604085013567ffffffffffffffff81111561277a57600080fd5b61278687828801612365565b95989497509550505050565b600080600083850360808112156127a857600080fd5b843567ffffffffffffffff8111156127bf57600080fd5b6127cb878288016121dd565b94505060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820112156127fe57600080fd5b506020840191506060840135612813816123ae565b809150509250925092565b600060c0820190508351825267ffffffffffffffff6020850151166020830152604084015161285a604084018280518252602090810151910152565b5082516080830152602083015160a0830152611873565b60006060828403121561288357600080fd5b6118738383612353565b60006020828403121561289f57600080fd5b8151611873816123ae565b6000602082840312156128bc57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061290657607f821691505b6020821081036121ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6040516060810167ffffffffffffffff81118282101715612962576129626128c3565b60405290565b6040805190810167ffffffffffffffff81118282101715612962576129626128c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156129d2576129d26128c3565b604052919050565b600067ffffffffffffffff8211156129f4576129f46128c3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600067ffffffffffffffff831115612a3a57612a3a6128c3565b8260051b612a4a6020820161298b565b84815290830190602081019036831115612a6357600080fd5b845b83811015612b4257803567ffffffffffffffff811115612a8457600080fd5b86016060368290031215612a9757600080fd5b612a9f61293f565b612aa882612473565b8152612ab66020830161256b565b6020820152604082013567ffffffffffffffff811115612ad557600080fd5b919091019036601f830112612ae957600080fd5b8135612afc612af7826129da565b61298b565b818152366020838601011115612b1157600080fd5b8160208501602083013760006020838301015280604084015250508085525050602083019250602081019050612a65565b5095945050505050565b60008085851115612b5c57600080fd5b83861115612b6957600080fd5b5050820193919092039150565b60008451612b8881846020890161222a565b8201838582376000930192835250909392505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000610c4e602083018486612b9e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612c5e57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612c9d57600080fd5b83018035915067ffffffffffffffff821115612cb857600080fd5b6020019150368190038213156123a757600080fd5b67ffffffffffffffff8116811461125957600080fd5b63ffffffff612cf189612473565b1681526020888101359082015260006040890135612d0e81612ccd565b67ffffffffffffffff811660408401525087606083015260e06080830152612d3a60e083018789612b9e565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152612d69818587612b9e565b9a9950505050505050505050565b600060208284031215612d8957600080fd5b815167ffffffffffffffff811115612da057600080fd5b8201601f81018413612db157600080fd5b8051612dbf612af7826129da565b818152856020838501011115612dd457600080fd5b6117b982602083016020860161222a565b600060208284031215612df757600080fd5b813561187381612ccd565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015261ffff83166040820152608060608201526000612e41608083018461224e565b9695505050505050565b604081526000612e5e604083018561224e565b82810360208401526117b9818561224e565b600060208284031215612e8257600080fd5b8151611873816124b6565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152612ec360e084018261224e565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152612efe828261224e565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b600060408284031215612f4357600080fd5b612f4b612968565b825181526020928301519281019290925250919050565b600060408284031215612f7457600080fd5b6118738383612f31565b601f821115612fc557806000526020600020601f840160051c81016020851015612fa55750805b601f840160051c820191505b8181101561112e5760008155600101612fb1565b505050565b815167ffffffffffffffff811115612fe457612fe46128c3565b612ff881612ff284546128f2565b84612f7e565b6020601f82116001811461304a57600083156130145750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b17845561112e565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156130985787850151825560209485019460019092019101613078565b50848210156130d457868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613185577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815163ffffffff815116865261ffff6020820151166020870152604081015190506060604087015261316f606087018261224e565b955050602093840193919091019060010161310b565b50929695505050505050565b600060408284031280156131a457600080fd5b506131ad612968565b823581526020928301359281019290925250919050565b6000826131fa577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80356020831015610aa5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b80357fffffffffffffffff00000000000000000000000000000000000000000000000081169060088410156132d8577fffffffffffffffff000000000000000000000000000000000000000000000000808560080360031b1b82161691505b5092915050565b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c8201526000825161334d81602c85016020870161222a565b91909101602c0195945050505050565b8481527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b166020820152826028820152600082516133a681604885016020870161222a565b9190910160480195945050505050565b600060808284031280156133c957600080fd5b506133d261293f565b8251815260208301516133e481612ccd565b60208201526133f68460408501612f31565b6040820152939250505056fea2646970667358221220846f1dec694a3c5a0698ba497f5fc948286081f40a02b824232755a8a12cdc5864736f6c634300081c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
