// This file was autogenerated by hardhat-viem, do not edit it.
// prettier-ignore
// tslint:disable
// eslint-disable

import type { Address } from "viem";
import type { GetContractReturnType } from "@nomicfoundation/hardhat-viem/types";
import "@nomicfoundation/hardhat-viem/types";

export interface BondFacet$Type {
  "_format": "hh-sol-artifact-1",
  "contractName": "BondFacet",
  "sourceName": "contracts/facets/BondFacet.sol",
  "abi": [
    {
      "inputs": [],
      "name": "BondAlreadyInitialized",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BondAlreadyIssued",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BondHasNotBeenIssued",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CampaignAlreadyPaused",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CampaignIsClosed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CampaignIsPaused",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CampaignNotPaused",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CannotReserveAfterCampaignEnd",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CannotReserveBeforeSignupDate",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CapitalAmortizationFreePeriodDurationIsNotAMultpleOfThree",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CapitalAmortizationFreePeriodDurationIsNotAMultpleOfTwelve",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "DivideByZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "DurationIsNotAMultpleOfThree",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "DurationIsNotAMultpleOfTwelve",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ExceedingMaxAmountPerInvestor",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "GracePeriodDurationIsNotAMultpleOfThree",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "GracePeriodDurationIsNotAMultpleOfTwelve",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NoMoreBondsToBuy",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OldAccountDoesNotHaveEnoughBonds",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "x",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "y",
          "type": "uint256"
        }
      ],
      "name": "PRBMath_MulDiv18_Overflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "x",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "y",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "denominator",
          "type": "uint256"
        }
      ],
      "name": "PRBMath_MulDiv_Overflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "UD60x18",
          "name": "x",
          "type": "uint256"
        }
      ],
      "name": "PRBMath_UD60x18_Exp2_InputTooBig",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "UD60x18",
          "name": "x",
          "type": "uint256"
        }
      ],
      "name": "PRBMath_UD60x18_Log_InputTooSmall",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "balloonRateNum",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "balloonRateDen",
          "type": "uint256"
        }
      ],
      "name": "BalloonRateSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "coupure",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "interestNum",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "interestDen",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "withholdingTaxNum",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "withholdingTaxDen",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "issuer",
          "type": "address"
        }
      ],
      "name": "BondInitializedPart1",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "periodicInterestRate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "netReturn",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "periodicity",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "methodOfRepayment",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxSupply",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "formOfFinancing",
          "type": "uint256"
        }
      ],
      "name": "BondInitializedPart2",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "issuedAmount",
          "type": "uint256"
        }
      ],
      "name": "BondIssued",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "coupure",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "interestNum",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "interestDen",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "withholdingTaxNum",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "withholdingTaxDen",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "issuer",
          "type": "address"
        }
      ],
      "name": "BondParametersEditedPart1",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "periodicInterestRate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "netReturn",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "periodicity",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "methodOfRepayment",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxSupply",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "formOfFinancing",
          "type": "uint256"
        }
      ],
      "name": "BondParametersEditedPart2",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "bondTransferId",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldAccount",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAccount",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "BondTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "bondPurchaseId",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "holder",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "BondsWithdrawn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        }
      ],
      "name": "CampaignPaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "startDate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "endDate",
          "type": "uint256"
        }
      ],
      "name": "CampaignStartAndEndDateSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        }
      ],
      "name": "CampaignUnpaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "capitalAmortizationFreePeriodDuration",
          "type": "uint256"
        }
      ],
      "name": "CapitalAmortizationFreePeriodSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "capitalClaimId",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "capitalAmount",
          "type": "uint256"
        }
      ],
      "name": "CapitalClaimAmountSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "couponDates",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "remainingCapital",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "capitalRepayments",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "grossCouponRates",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "netCouponRates",
          "type": "uint256[]"
        }
      ],
      "name": "CouponsComputed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "gracePeriodDuration",
          "type": "uint256"
        }
      ],
      "name": "GracePeriodSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "investorsCount",
          "type": "uint256"
        }
      ],
      "name": "InvestorsCountChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "issueDate",
          "type": "uint256"
        }
      ],
      "name": "IssueDateSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "minAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxAmountPerInvestor",
          "type": "uint256"
        }
      ],
      "name": "MinAndMaxAmountSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "periodicInterest",
          "type": "uint256"
        }
      ],
      "name": "PeriodicInterestRateSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reservedAmount",
          "type": "uint256"
        }
      ],
      "name": "ReservedAmountChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "revocationsCount",
          "type": "uint256"
        }
      ],
      "name": "RevocationsCountChanged",
      "type": "event"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "__bondId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__campaignMinAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__campaignMaxAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__campaignStartDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__expectedIssueDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__coupure",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__interestNum",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__interestDen",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__withholdingTaxNum",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__withholdingTaxDen",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__balloonRateNum",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__balloonRateDen",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__duration",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__capitalAmortizationDuration",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__gracePeriodDuration",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__maxAmountPerInvestor",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__periodicity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__formOfFinancing",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__methodOfRepayment",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "__issuer",
              "type": "address"
            }
          ],
          "internalType": "struct BondInitParams.BondInit",
          "name": "bi",
          "type": "tuple"
        }
      ],
      "name": "editBondParameters",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSelectors",
      "outputs": [
        {
          "internalType": "bytes4[]",
          "name": "",
          "type": "bytes4[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSelectorsOwnership",
      "outputs": [
        {
          "internalType": "bytes4[]",
          "name": "",
          "type": "bytes4[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "__bondId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__campaignMinAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__campaignMaxAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__campaignStartDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__expectedIssueDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__coupure",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__interestNum",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__interestDen",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__withholdingTaxNum",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__withholdingTaxDen",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__balloonRateNum",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__balloonRateDen",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__duration",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__capitalAmortizationDuration",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__gracePeriodDuration",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__maxAmountPerInvestor",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__periodicity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__formOfFinancing",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__methodOfRepayment",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "__issuer",
              "type": "address"
            }
          ],
          "internalType": "struct BondInitParams.BondInit",
          "name": "bi",
          "type": "tuple"
        }
      ],
      "name": "initializeBond",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "initializeOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_bondId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_issueDate",
          "type": "uint256"
        }
      ],
      "name": "issueBond",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155BatchReceived",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_bondId",
          "type": "uint256"
        }
      ],
      "name": "pauseCampaign",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_bondPurchaseId",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "_bondId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_buyer",
          "type": "address"
        }
      ],
      "name": "rescindReservation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_bondPurchaseId",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "_bondId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_bondAmount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_buyer",
          "type": "address"
        }
      ],
      "name": "reserve",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_bondId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_balloonRateNum",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_balloonRateDen",
          "type": "uint256"
        }
      ],
      "name": "setBalloonRate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_bondId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_duration",
          "type": "uint256"
        }
      ],
      "name": "setCapitalAmortizationFreeDuration",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_currencyAddress",
          "type": "address"
        }
      ],
      "name": "setCurrencyAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_bondId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_duration",
          "type": "uint256"
        }
      ],
      "name": "setGracePeriodDuration",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_bondTransferId",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "_bondId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_old",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_new",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "transferBond",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_bondId",
          "type": "uint256"
        }
      ],
      "name": "unpauseCampaign",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_bondPurchaseId",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "_bondId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "holder",
          "type": "address"
        }
      ],
      "name": "withdrawBondsPurchased",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60808060405234601557615061908161001b8239f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816301ffc9a714611fd25750806325830db314611d225780632dcb118e14611ce457806343a19a6514611c125780634b503f0b146118f757806360332e891461170457806368aea41b14611686578063796b89ec1461162a5780638c5f36bb146114f65780638da5cb5b146114a35780638dea1f4714611071578063906b131a14610d435780639226537e14610ae8578063b410500414610a29578063bc197c8114610975578063de99347a14610876578063e3adc7ee14610511578063ee5b280a146104c3578063f23a6e611461044f578063f2fde38b146103125763f844a31c1461010857600080fd5b3461030f57610116366121ca565b61015873ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416331461249e565b61016182612669565b9160016018840155601b830160ff815460201c166102e757610183838361326e565b61018c82613751565b5050506401000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff8254161790556025830163010000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff825416179055836017601185015494019380855573ffffffffffffffffffffffffffffffffffffffff825416803b156102e3576040517f731133e900000000000000000000000000000000000000000000000000000000815230600482015260248101859052604481019290925260806064830152600060848301528290829060a490829084905af180156102d8576102bf575b50509154604080519384526020840192909252908201527fb5c3204064d2ac62821e92f17e7e2c1e9971c89f07fa01b6dab37145db86dc559080606081015b0390a180f35b816102c991612072565b6102d457833861027a565b8380fd5b6040513d84823e3d90fd5b8280fd5b6004857fdecaae02000000000000000000000000000000000000000000000000000000008152fd5b80fd5b503461030f57602060031936011261030f5761032c61210e565b7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c549073ffffffffffffffffffffffffffffffffffffffff8083163314916103738361249e565b169182156103cc576103a57fffffffffffffffffffffffff00000000000000000000000000000000000000009261249e565b16177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5580f35b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b503461030f5760a060031936011261030f5761046961210e565b50610472612154565b5060843567ffffffffffffffff81116104bf57610493903690600401612385565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b5080fd5b503461030f577f8a7a5c9c34210b39b0dd6c746e4824f7af2a84c059d4dcbc168a2036d26df99060406104f5366121ca565b80600f61050184612669565b015582519182526020820152a180f35b503461030f5761052036612177565b919061052b81612669565b9260ff601b85015460201c161561084e5761054960248501846123d6565b5490610559600586015483612529565b6001546040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301523060248301529091169190602081604481865afa908115610843578991610808575b5090610650926105d582602094101561253c565b73ffffffffffffffffffffffffffffffffffffffff60268a0154168a6040518096819582947f23b872dd0000000000000000000000000000000000000000000000000000000084528a6004850173ffffffffffffffffffffffffffffffffffffffff6040929594938160608401971683521660208201520152565b03925af180156107fd5761066b9188916107ce575b506125df565b8573ffffffffffffffffffffffffffffffffffffffff815416803b156104bf578160405180927f731133e90000000000000000000000000000000000000000000000000000000082528183816106fa8a8c8b600485019173ffffffffffffffffffffffffffffffffffffffff60a094921683526020830152604082015260806060820152600060808201520190565b03925af180156102d8576107ad575b507f99c110e7b335cff55cab2cfe92e319ad78396f17234debbb5860886aa0244cca61079686868673ffffffffffffffffffffffffffffffffffffffff8760228d83831660005201602052604060002060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055604051958695608087526080870190612644565b93602086015216604084015260608301520390a180f35b816107bc919695949396612072565b6107ca579091928538610709565b8580fd5b6107f0915060203d6020116107f6575b6107e88183612072565b8101906125c7565b38610665565b503d6107de565b6040513d89823e3d90fd5b9190506020823d60201161083b575b8161082460209383612072565b810103126108365790516106506105c1565b600080fd5b3d9150610817565b6040513d8b823e3d90fd5b6004857fc4d56880000000000000000000000000000000000000000000000000000000008152fd5b503461030f57602060031936011261030f5760043561089481612669565b601b81019081549060ff8260181c1661094d57600281015442119081159161093d575b50610915577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1663010000001790556040519081527fab1902ee37c92d1a78dda53814d64b815e7e3ee287d60843a3dbd6954e3206b490602090a180f35b6004847febd7e129000000000000000000000000000000000000000000000000000000008152fd5b90506003429101541115386108b7565b6004857f5cebfd4a000000000000000000000000000000000000000000000000000000008152fd5b503461030f5760a060031936011261030f5761098f61210e565b50610998612154565b5060443567ffffffffffffffff81116104bf576109b9903690600401612354565b505060643567ffffffffffffffff81116104bf576109db903690600401612354565b505060843567ffffffffffffffff81116104bf576109fd903690600401612385565b505060206040517fbc197c81000000000000000000000000000000000000000000000000000000008152f35b503461030f578060031936011261030f57610ae4604051610a4b608082612072565b6003815260603660208301377f8da5cb5b00000000000000000000000000000000000000000000000000000000610a818261243b565b527ff2fde38b00000000000000000000000000000000000000000000000000000000610aac8261245e565b527f8c5f36bb00000000000000000000000000000000000000000000000000000000610ad78261246e565b52604051918291826121e0565b0390f35b503461030f57610af73661223c565b610b018151612669565b60ff601b82015460201c16610d1b57907f182cb671939e46d1345c30b51134e41ef7782a2113747a93b4dc3c31b91ea81e610d1592610b3f8361284a565b825160028201546003830154604080519384526020840192909252908201527f05b741eb5649daedcc851ef6f057b1bf89b49d12357d31c478c425b6eb1ce9c590606090a182518154600183015460128401546040805194855260208501939093529183015260608201527f1ada3075f8dc673c9de9ba7c0b8e81065d996d1faa99feb6d0a648c8b7a1516d90608090a17fc64d8be5e3585a2141489e772ad1096418b37137a76298a309a5f1095f95f1ca835160a085015190610c7d60c087015160e08801516101008901516101208a01519173ffffffffffffffffffffffffffffffffffffffff6102608c015116936040519788978895919360c0959198979373ffffffffffffffffffffffffffffffffffffffff9560e089019a8952602089015260408801526060870152608086015260a085015216910152565b0390a18251610cfc6008830154926007810154906102008701516101808801516102408901519160ff6025601086015495015460081c1694610cbe8661247e565b6040519889988994919260e0969399989794919961010087019a8752602087015260408601526060850152608084015260a083015260c08201520152565b0390a1610d0f815160808301519061326e565b51613751565b50505080f35b6004837fdecaae02000000000000000000000000000000000000000000000000000000008152fd5b503461030f57608060031936011261030f5760043567ffffffffffffffff81116104bf57610d759036906004016120c7565b9060243560443592610d85612131565b9260ff601b610d9385612669565b015460181c1661104957610da683612669565b9060108201549460118301968754968780821160001461104057610dc991612421565b905b818111156110385750955b600284015442106110105760038401544211610fe8578615610fc057602384019273ffffffffffffffffffffffffffffffffffffffff831660005283602052610e248860406000205461242e565b601286015410610f985773ffffffffffffffffffffffffffffffffffffffff83166000528360205260406000205415610edd575b5060409460247f83518b027c8ada9071fa7643b5352e180e42cf5a021d61294e5880408643c97f979560209a9573ffffffffffffffffffffffffffffffffffffffff8b96610ea988610ec99861242e565b8955166000528b5287600020610ec086825461242e565b905501906123d6565b5554825191825285820152a1604051908152f35b6014850180549160018301809311610f845750879560209a9573ffffffffffffffffffffffffffffffffffffffff8b96610ea988610ec9987ff865af89149aa92dd957b447226842542090f013d1c80f4f66f6eb3ea79f8e917f83518b027c8ada9071fa7643b5352e180e42cf5a021d61294e5880408643c97f9f60409f9a906040918060249c5582519182526020820152a198505050965050959a509597505094610e58565b80634e487b7160e01b602492526011600452fd5b807f2b42b1220000000000000000000000000000000000000000000000000000000060049252fd5b6004837f7eec29e0000000000000000000000000000000000000000000000000000000008152fd5b6004837f0c32ed70000000000000000000000000000000000000000000000000000000008152fd5b6004837ff2b4a12c000000000000000000000000000000000000000000000000000000008152fd5b905095610dd6565b50508290610dcb565b807fa6a992df0000000000000000000000000000000000000000000000000000000060049252fd5b503461030f5760a060031936011261030f5760043567ffffffffffffffff81116104bf576110a39036906004016120c7565b60243560443573ffffffffffffffffffffffffffffffffffffffff811680820361149f576110cf612131565b906084359261111673ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416331461249e565b61111f85612669565b60ff601b82015460201c1615611477576044602073ffffffffffffffffffffffffffffffffffffffff8a5416604051928380927efdd58e0000000000000000000000000000000000000000000000000000000082528860048301528b60248301525afa80156108435786918a9161143e575b50106114165760056111a591015485612529565b6001546040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015230602483015290911690602081604481855afa90811561140b578a916113cd575b5090611281936112218460209594101561253c565b8a6040518096819582947f23b872dd0000000000000000000000000000000000000000000000000000000084528b6004850173ffffffffffffffffffffffffffffffffffffffff6040929594938160608401971683521660208201520152565b03925af180156107fd5761129b9188916107ce57506125df565b8573ffffffffffffffffffffffffffffffffffffffff81541692833b156104bf5773ffffffffffffffffffffffffffffffffffffffff60c4839260405194859384927ff242432a00000000000000000000000000000000000000000000000000000000845288600485015216978860248401528a604484015289606484015260a060848401528160a48401525af180156107fd5761138d575b509161137293917f38db1382a58023a1d5d8aaab1581199c9b7d9ed33223c18beeaab57924aff20f959360405195869560a0875260a0870190612644565b9360208601526040850152606084015260808301520390a180f35b91866113c17f38db1382a58023a1d5d8aaab1581199c9b7d9ed33223c18beeaab57924aff20f979593986113729795612072565b96919395509193611334565b929190506020833d602011611403575b816113ea60209383612072565b810103126113ff57915190919061128161120c565b8980fd5b3d91506113dd565b6040513d8c823e3d90fd5b6004887f91df618a000000000000000000000000000000000000000000000000000000008152fd5b9150506020813d60201161146f575b8161145a60209383612072565b8101031261146b5785905138611191565b8880fd5b3d915061144d565b6004887fc4d56880000000000000000000000000000000000000000000000000000000008152fd5b8480fd5b503461030f578060031936011261030f57602073ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416604051908152f35b503461030f57602060031936011261030f5761151061210e565b73ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c54166115cc5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000007f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5580f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f776e657220616c7265616479207365740000000000000000000000000000006044820152fd5b503461030f57602060031936011261030f5773ffffffffffffffffffffffffffffffffffffffff61165961210e565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600154161760015580f35b503461030f57606060031936011261030f577f9cc9725ee02d8f0a4d8b30054405939f4d872cc6a5c2d677e02f5bd87e5dea2a6024356004356102b96044356116ce83612669565b600a670de0b6b3a76400006116e3848861445a565b04910155604051938493846040919493926060820195825260208201520152565b503461030f576117133661223c565b307fffffffffffffffffffffffff00000000000000000000000000000000000000008354161782556117458151612669565b601b810160ff815460101c166118cf5782917fb42ebd0ad22561f77328ee457d5ba2a08a7c2847ff88c663cca9dcc8c53dc08691611785610d159561284a565b6201000062ff0000198254161790556001549060258101917fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000084549260201b169116178092557ff5d1b3af18a6e549e23801b7a43bec54699badce37e0f7e96e0a4ebb65143d74845160a08601519061189160c088015160e08901516101008a01516101208b01519173ffffffffffffffffffffffffffffffffffffffff6102608d015116936040519788978895919360c0959198979373ffffffffffffffffffffffffffffffffffffffff9560e089019a8952602089015260408801526060870152608086015260a085015216910152565b0390a1610cfc8451916008810154936007820154916102008801516101808901519060ff60106102408c01519401549460081c1694610cbe8661247e565b6004847fe2003eba000000000000000000000000000000000000000000000000000000008152fd5b503461030f578060031936011261030f5760405190601f1961020061191c8185612072565b600f8452013660208401377f60332e89000000000000000000000000000000000000000000000000000000006119518361243b565b527f796b89ec0000000000000000000000000000000000000000000000000000000061197c8361245e565b527f9226537e000000000000000000000000000000000000000000000000000000006119a78361246e565b52815160031015611bfe577f68aea41b000000000000000000000000000000000000000000000000000000006080830152815160041015611bfe577f2dcb118e0000000000000000000000000000000000000000000000000000000060a0830152815160051015611bfe577fee5b280a0000000000000000000000000000000000000000000000000000000060c0830152815160061015611bfe577f906b131a0000000000000000000000000000000000000000000000000000000060e0830152815160071015611bfe577fde99347a00000000000000000000000000000000000000000000000000000000610100830152815160081015611bfe577f43a19a6500000000000000000000000000000000000000000000000000000000610120830152815160091015611bfe577f25830db3000000000000000000000000000000000000000000000000000000006101408301528151600a1015611bfe577f8dea1f47000000000000000000000000000000000000000000000000000000006101608301528151600b1015611bfe577fe3adc7ee000000000000000000000000000000000000000000000000000000006101808301528151600c1015611bfe577ff844a31c000000000000000000000000000000000000000000000000000000006101a08301528151600d1015611bfe577ff23a6e61000000000000000000000000000000000000000000000000000000006101c08301528151600e1015611bfe577fbc197c81000000000000000000000000000000000000000000000000000000006101e083015260405180610ae484826121e0565b80634e487b7160e01b602492526032600452fd5b503461030f57602060031936011261030f57600435611c3081612669565b601b81019081549060ff8260181c1615611cbc576002810154421190811591611cac575b50610915577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1690556040519081527f11aa0bd3fb4d9c5622c703f91610a74140a4f88a7ebc7b4faaeaf52e3cb7aa9490602090a180f35b9050600342910154111538611c54565b6004857fc851109a000000000000000000000000000000000000000000000000000000008152fd5b503461030f577f091a72ed52432e53c748925ef46b36a19f93cb874539b387d4f3b1f92aa33e116040611d16366121ca565b80600e61050184612669565b503461030f57611d3136612177565b9091611d3c83612669565b9160118301928354916024820192611d5484866123d6565b548110611f7457602383019173ffffffffffffffffffffffffffffffffffffffff81168952826020526040892054611d8c86886123d6565b5411611ef057611dbc73ffffffffffffffffffffffffffffffffffffffff92611db587896123d6565b5490612421565b8755611dc885876123d6565b548282168a5283602052611de160408b20918254612421565b9055168752602052604086205415611e8c575b60150191825460018101809111611e78578387611e5b604097957f499925bc28b60b5b11b1841f8f51318fa4484237122fb618e76c3195b37d9eb89589957f83518b027c8ada9071fa7643b5352e180e42cf5a021d61294e5880408643c97f9b99556123d6565b55548151908582526020820152a15482519182526020820152a180f35b602487634e487b7160e01b81526011600452fd5b601481018054906000198201918211611edc57604082601594937ff865af89149aa92dd957b447226842542090f013d1c80f4f66f6eb3ea79f8e9193558151908982526020820152a19050611df4565b602488634e487b7160e01b81526011600452fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f556e646572666c6f773a20726573657276656420616d6f756e7420627920616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e646572666c6f773a20726573657276656420616d6f756e740000000000006044820152fd5b9050346104bf5760206003193601126104bf576004357fffffffff0000000000000000000000000000000000000000000000000000000081168091036102e357602092507f4e2312e0000000000000000000000000000000000000000000000000000000008114908115612048575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501438612041565b90601f601f19910116810190811067ffffffffffffffff82111761209557604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff811161209557601f01601f191660200190565b81601f82011215610836578035906120de826120ab565b926120ec6040519485612072565b8284526020838301011161083657816000926020809301838601378301015290565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361083657565b6064359073ffffffffffffffffffffffffffffffffffffffff8216820361083657565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361083657565b6060600319820112610836576004359067ffffffffffffffff8211610836576121a2916004016120c7565b906024359060443573ffffffffffffffffffffffffffffffffffffffff811681036108365790565b6003196040910112610836576004359060243590565b602060408183019282815284518094520192019060005b8181106122045750505090565b82517fffffffff00000000000000000000000000000000000000000000000000000000168452602093840193909201916001016121f7565b600319610280910112610836576040516000610280820167ffffffffffffffff811183821017612340576040526004358252602435602083015260443560408301526064356060830152608435608083015260a43560a083015260c43560c083015260e43560e083015261010435610100830152610124356101208301526101443561014083015261016435610160830152610184356101808301526101a4356101a08301526101c4356101c08301526101e4356101e0830152610204356102008301526102243561022083015261024435610240830152610264359073ffffffffffffffffffffffffffffffffffffffff8216820361030f575061026082015290565b602482634e487b7160e01b81526041600452fd5b9181601f840112156108365782359167ffffffffffffffff8311610836576020808501948460051b01011161083657565b9181601f840112156108365782359167ffffffffffffffff8311610836576020838186019501011161083657565b60005b8381106123c65750506000910152565b81810151838201526020016123b6565b6020906123f09282604051948386809551938492016123b3565b82019081520301902090565b90600019820191821161240b57565b634e487b7160e01b600052601160045260246000fd5b9190820391821161240b57565b9190820180921161240b57565b8051156124485760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156124485760400190565b8051600210156124485760600190565b6002111561248857565b634e487b7160e01b600052602160045260246000fd5b156124a557565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e60448201527f6374696f6e0000000000000000000000000000000000000000000000000000006064820152fd5b8181029291811591840414171561240b57565b1561254357565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152fd5b90816020910312610836575180151581036108365790565b156125e657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f45524332303a207472616e73666572206661696c6564000000000000000000006044820152fd5b90601f19601f602093612662815180928187528780880191016123b3565b0116010190565b600081807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000081101561281f575b50806d04ee2d6d415b85acef8100000000600a921015612804575b662386f26fc100008110156127f0575b6305f5e1008110156127df575b6127108110156127d0575b60648110156127c2575b10156127ba575b6001810191600a60001960216127136126fd876120ab565b9661270b6040519889612072565b8088526120ab565b94601f196020880196013687378601015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a835304801561276057600019600a9192612724565b50506127b4602c60405180936127a360208301967f73746f726167652e626f6e6400000000000000000000000000000000000000008852518092858501906123b3565b81010301601f198101835282612072565b51902090565b6001016126e5565b6064600291049201916126de565b612710600491049201916126d4565b6305f5e100600891049201916126c9565b662386f26fc10000601091049201916126bc565b6d04ee2d6d415b85acef8100000000602091049201916126ac565b604092507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000090049050600a612691565b9060006128578351612669565b9073ffffffffffffffffffffffffffffffffffffffff6102608501511673ffffffffffffffffffffffffffffffffffffffff6026840191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905560a084018051600584015560e0850192835115613186576102008601928684511560001461313f57610180600c910151066131175786905b6101c08201908151612f9a575b6101a08301918251612e7b575b60c084019761291a895182519061445a565b906006870191825561010086019182519161293c61012089019384519061445a565b60098a0155670de0b6b3a764000061296960408a0151809c60018d019d8e5560208c01518d55519061445a565b0460108a015560606101e08901519860128b01998a55610180810151600d8c015501519b8c9b624f1a008d60028d019e8f55019d8e811161240b578e10612df7578a90600382019e8f55805115600014612d0d575060250180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555050805460088901555b6102408d018051600103612cb45750855115612c7d57602588016203000062ff0000198254161790555b8551600e8901558351600f8901556101408d01948d8651908115159081612c6e575b50612be2575b5050612bdd98957f9cc9725ee02d8f0a4d8b30054405939f4d872cc6a5c2d677e02f5bd87e5dea2a89967f05b741eb5649daedcc851ef6f057b1bf89b49d12357d31c478c425b6eb1ce9c59e9f9a6040612bb898612b497f1ada3075f8dc673c9de9ba7c0b8e81065d996d1faa99feb6d0a648c8b7a1516d9d99612b43612b3d7f091a72ed52432e53c748925ef46b36a19f93cb874539b387d4f3b1f92aa33e119b869b601b7f8a7a5c9c34210b39b0dd6c746e4824f7af2a84c059d4dcbc168a2036d26df99099017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff815416905554935190519061445a565b82614f32565b90612421565b60078c01558d51905182519182526020820152a18a5190516101608c0151855192835260208301919091526040820152606090a18851905182519182526020820152a1855192549354905490604051948594859094939260609260808301968352602083015260408201520152565b0390a15191549254604051938493846040919493926060820195825260208201520152565b0390a1565b8e612bf461016082019283519061445a565b600a8c015551908751905191303b156102d4576040517f68aea41b000000000000000000000000000000000000000000000000000000008152600481019190915260248101919091526044810191909152818160648183305af180156102d85715612a4357612c64828092612072565b61030f5780612a43565b6101609150015115158f612a3d565b835115612c9c57602588016204000062ff000019825416179055612a1b565b602588016201000062ff000019825416179055612a1b565b8051612cce57506025880162ff0000198154169055612a1b565b517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612a1b57602588016202000062ff000019825416179055612a1b565b8051600103612d835750612d7992612d5c612d74936025612d64940160017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055825190519061242e565b90519061445a565b6703782dace9d900005b90614186565b6123fc565b60088901556129f1565b51909190600214612d97575b5050506129f1565b612dea92612d5c612ddc926025612d74950160027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055825190519061242e565b6701280f39a3485555612d6e565b6008890155388881612d8f565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f54696d657374616d702073686f756c64206265206561726c696572206f72206560448201527f7175616c20746f207468652063757272656e742074696d657374616d700000006064820152fd5b90979695949392855115600014612f4e57508151600c900615612ec0576004887fbebd2292000000000000000000000000000000000000000000000000000000008152fd5b889791929394959697518351303b156102d457604051917f2dcb118e00000000000000000000000000000000000000000000000000000000835260048301526024820152828160448183305af18015612f4357908a94939291612f24575b50612908565b8280949550612f3591939293612072565b6104bf579088929138612f1e565b6040513d85823e3d90fd5b9293949596979060018751036129085782519198979695949350906003900615612ec0576004887f4f80c6ed000000000000000000000000000000000000000000000000000000008152fd5b96959493929184511560001461305a57508051600c900615612fde576004877fdcbd8c00000000000000000000000000000000000000000000000000000000008152fd5b90919293949587518251303b156102e357604051917fee5b280a00000000000000000000000000000000000000000000000000000000835260048301526024820152818160448183305af180156102d857908993929161303f575b506128fb565b818093945061304d91612072565b61030f5790879138613039565b91929394959660018651036128fb578151909796959493925060039006156130a4576004877f07010901000000000000000000000000000000000000000000000000000000008152fd5b90919293949587518251303b156102e357604051917fee5b280a00000000000000000000000000000000000000000000000000000000835260048301526024820152818160448183305af180156102d85790828a949392613107575b50506128fb565b61311091612072565b3881613100565b807f0d38e32c0000000000000000000000000000000000000000000000000000000060049252fd5b9060018551036128ee579061018060039101510661315e5786906128ee565b807fecfbd8cf0000000000000000000000000000000000000000000000000000000060049252fd5b6004837f1de42a90000000000000000000000000000000000000000000000000000000008152fd5b8181106131b9575050565b600081556001016131ae565b805460008255806131d4575050565b6131e9916000526020600020908101906131ae565b565b80548210156124485760005260206000200190600090565b80546801000000000000000081101561209557613225916001820181556131eb565b60001982549160031b1b19169055565b80546801000000000000000081101561209557613257916001820181556131eb565b600019829392549160031b92831b921b1916179055565b9061327882612669565b600160ff601b83015460201c161515146136ed5762015180820462010bd981019062010bd982126000821290801582169115161761240b57622649650190600062253d8c8312911290801582169115161761240b578060021b60048105820361240b5762023ab19005908162023ab1029062023ab18205830361240b576003820191600060038412911290801582169115161761240b57600461331c920590615012565b9060018201600181126000841290801582169115161761240b5780610fa00290610fa082050361240b5762164b09613362910592600461335b85614fff565b0590615012565b91601f8301926000601f8512911290801582169115161761240b578260500260508105840361240b5761098f9005928361098f029061098f8205850361240b5760506133af920590615012565b92600b8105906002810190600060028312911290801582169115161761240b5781600c02600c8105830361240b576133e691615012565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf810190811360011661240b578060640290606482050361240b576134349261342f91614fe3565b614fe3565b600091602585019260ff84541660038110156136d957806136b6575050600c600d86015404935b60009483601d88019461346d866131c5565b60218901978854818a5580613697575b50805b8481106134c957505050505050505050509181604092600b7f6d7086ab13fbd1583240e1b6e62b23416e3945f952373732fc183a2a407e462d95015582519182526020820152a1565b60ff895416600381101561248857600281036135e557509091816135ac57509050600c85066135a5576001820180831161240b57905b6001860180871161240b57600c900690811561359c575b61352a61352487848661426c565b89613235565b600019850185811161240b578114613587575b895490680100000000000000008210156120955760018201808c55821015612448576001918b60005260206000208160051c019060ff60f883549260031b161b1916905501613480565b61359286838561426c565b600c8c015561353d565b600c9150613516565b81906134ff565b600c83066135df576001810180911161240b57915b6001810180911161240b57600c9006908161351657600c9150613516565b916135c1565b60006001820361367057505090811560001461363657509050600a851061362f576001820180831161240b57905b6003860180871161240b57600c900690811561359c575b613516565b8190613613565b600a81101561365e575b6003810180911161240b57600c9006908161362a57600c9150613516565b916001810180911161240b5791613640565b5061351657918261368657505081908590613516565b6001810180911161240b5791613516565b898252602082206136b091601f0160051c8101906131ae565b3861347d565b6001141590506136ce576003600d860154049361345b565b600d8501549361345b565b602482634e487b7160e01b81526021600452fd5b7fdecaae020000000000000000000000000000000000000000000000000000000060005260046000fd5b906020825491828152019160005260206000209060005b81811061373b5750505090565b825484526020909301926001928301920161372e565b61375a81612669565b90600160ff601b84015460201c161515146136ed576000600583015460ff6025850154166003811015613eec57806141665750600c600d85015404915b6137a3601c86016131c5565b6137af601e86016131c5565b6137bb601f86016131c5565b6137c7602086016131c5565b6137d3601f8601613203565b6137e4600586015460208701613235565b6137f0601c8601613203565b6137fc601e8601613203565b60058501546016860155805b83821061392357505050506138f56138ee917f2f3e3b3aaadf1f165fa7d634278fa8ee54a0548dbf8fc62a1d301da8f6aa6298604060088601548151908482526020820152a17f1cd0ec0194cd0b5111bf7154d1801ab3549a822fcff5ac188bcaa7f310aa11de601d85019160405190815260c06020820152806138df6138ce6138bd6138ac61389b60c0860189613717565b858103604087015260208c01613717565b8481036060860152601f8b01613717565b8381036080850152601c8a01613717565b82810360a0840152601e8901613717565b0390a160405192838092613717565b0382612072565b91601e61392060405161390f816138ee81601c8901613717565b936138ee6040518094819301613717565b90565b602586015491600660ff8460101c16101591826124885760ff8460101c1615600014613fed57506000925b61395c8560088a0154614f32565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561240b578160098a0154670de0b6b3a764000003670de0b6b3a7640000811161240b576139a691614f32565b936124885760ff8160101c1615600014613a4157508560001981011161240b57600192613a00613a179260001989018510600014613a23576139ea601f8c01613203565b6139f78860208d01613235565b601c8b01613235565b613a0d81601e8b01613235565b601689015461242e565b60168801550190613808565b613a2f60208c01613203565b613a3c88601f8d01613235565b6139f7565b600095919295600260ff8360101c1614600014613af257505084613aa857600192613a0060209693613a3c84613a9f8d613a96670de0b6b3a7640000613a8e613a179a600a850154614f32565b048094612421565b9b8c9101613235565b601f8d01613235565b93908560001981011161240b57600192613a00613a179260001989018514600014613ad957613a2f60208c01613203565b613ae68860208d01613235565b613a3c601f8c01613203565b9593929550600160ff8260101c1614600014613b8857508560001981011161240b57876000198701841015613b51575060019291613a00613b3686613a1794612421565b96613b448860208d01613235565b613a3c87601f8d01613235565b91613a00613a179296613a3c613b7887602088613b728260019c9b01613203565b016131eb565b90549060031b1c601f8d01613235565b6000600360ff8360101c1614600014613cb157505060ff602589015416600381101590816124885780159182613c9e575b8215613c78575b8215613c53575b505015613c3b578560001981011161240b57876000198701841015613c16575060019291613a00613bfb86613a1794612421565b96613c0987601f8d01613235565b613a3c8860208d01613235565b94613a17915091613a008493613a3c613b78600197602060009b613b72828201613203565b9360019291613a00613a1792613c09601f8c01613203565b9091506124885760021480613c6a575b3880613bc7565b50600e880154831015613c63565b50600091506001811480613c8d575b91613bc0565b506003600e8b015404851015613c87565b9150600c600e8b01540485101591613bb9565b50600460ff8260101c1614600014613d9b575060ff602589015416600381101590816124885780159182613d88575b8215613d62575b8215613d3d575b505015613d22578560001981011161240b57876000198701841015613c16575060019291613a00613bfb86613a1794612421565b935050600190613a176000613a0081613c09601f8c01613203565b9091506124885760021480613d54575b3880613cee565b50600f880154831015613d4d565b50600091506001811480613d77575b91613ce7565b506003600f8b015404851015613d71565b9150600c600f8b01540485101591613ce0565b600095919590600560ff8260101c1614613dc2575b505060019291613a00613a17926139f7565b600360ff829893981610159081613fd95760ff8116159182613fc6575b8215613f9e575b8215613f62575b505015613f485786600019810111613f3457846000198801851015613f0057613e1591612421565b94613e2385601f8b01613235565b613e308660208b01613235565b60ff60258a01541660038110159081613eec5780159182613eda575b8215613eb6575b8215613e83575b5050916001949391613a1793613e76575b509181939450613db0565b9150819050613a00613e6b565b9091506136d9579160019493916002613a17941480613ea9575b91938193959650613e5a565b50600f8b01548510613e9d565b508291506001811480613eca575b91613e53565b506003600f8c0154048610613ec4565b9150600c600f8c015404861091613e4c565b602483634e487b7160e01b81526021600452fd5b505084613f0f60208a01613203565b613f2f613f1f8560208c016131eb565b90549060031b1c601f8b01613235565b613e30565b602486634e487b7160e01b81526011600452fd5b94613f55601f8a01613203565b613f2f8660208b01613235565b909150613f8a5760ff1660021480613f7c575b3880613ded565b50600e890154841015613f75565b602487634e487b7160e01b81526021600452fd5b5087915060ff811660011480613fb5575b91613de6565b506003600e8c015404861015613faf565b9150600c600e8c01540486101591613ddf565b602488634e487b7160e01b81526021600452fd5b60009250601084901c60ff1660010361401f5750670de0b6b3a76400006140188660058a015461445a565b049261394e565b600360ff8560101c16148015614151575b156140c05750600360ff841610156124885760ff831661407257670de0b6b3a7640000614018600589015461406c600c600e8c01540489612421565b9061445a565b670de0b6b3a7640000600060ff85166001036140aa576140a160058a015461406c6003600e8d0154048a612421565b9050049261394e565b6140a160058a015461406c600e8c01548a612421565b928261248857600460ff8260101c160361394e579250600360ff841610156124885760ff831661410c57670de0b6b3a7640000614018600589015461406c600c600f8c01540489612421565b670de0b6b3a7640000600060ff851660010361413b576140a160058a015461406c6003600f8d0154048a612421565b6140a160058a015461406c600f8c01548a612421565b509150600091600560ff8560101c1614614030565b60010361417b576003600d8501540491613797565b600d84015491613797565b801580156141a55750506141a057670de0b6b3a764000090565b600090565b670de0b6b3a7640000821461425d57826141c857505050670de0b6b3a764000090565b670de0b6b3a7640000831461425757670de0b6b3a76400008211156142025750613920916141f86141fd92614536565b614f32565b614657565b61424157614227916141f86141fd926ec097ce7bc90715b34b9f100000000004614536565b8015614241576ec097ce7bc90715b34b9f10000000000490565b634e487b7160e01b600052601260045260246000fd5b50905090565b505050670de0b6b3a764000090565b906107b282106143fc577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2810181811360011661240b57600c9005916112c081019060006112c08312911290801582169115161761240b57826142ce91614fe3565b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe820191821360011661240b57600c810290808205600c149015171561240b5761431891615012565b9161432282614fff565b918361016f029361016f85050361240b576064810190600060648312911290801582169115161761240b5760649005918260030292600384050361240b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82b5820191821360011661240b576143b593600c6143a5600494856143ad950590614fe3565b910590614fe3565b910590615012565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdac274810190811360011661240b576201518081029080820462015180149015171561240b5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f596561722063616e6e6f74206265206561726c696572207468616e20313937306044820152fd5b600019670de0b6b3a7640000820991670de0b6b3a764000082029182808510940393808503941461452957818410156144ed57670de0b6b3a764000082910960018219018216809204600281600302188082026002030280820260020302808202600203028082026002030280820260020302809102600203029360018380600003040190848311900302920304170290565b7f63a0577800000000000000000000000000000000000000000000000000000000600052600452670de0b6b3a764000060245260445260646000fd5b5091508115614241570490565b670de0b6b3a7640000811061462a57670de0b6b3a764000081046fffffffffffffffffffffffffffffffff811160071b90811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c9060ff821160031b91821c92600f841160021b93841c94600160038711811b96871c11961717171717171790670de0b6b3a76400008202911c670de0b6b3a76400008114614626576706f05b59d3b2000090815b6145ef57505090565b80670de0b6b3a764000091020490671bc16d674ec80000821015614618575b60011c90816145e6565b809192019160011c9061460e565b5090565b7f36d32ef00000000000000000000000000000000000000000000000000000000060005260045260246000fd5b680a688906bd8affffff8111614f0557670de0b6b3a76400009060401b047780000000000000000000000000000000000000000000000067ff000000000000008216614dd0575b670de0b6b3a76400009066ff0000000000008316614cc0575b65ff00000000008316614bb8575b64ff000000008316614ab8575b63ff00000083166149c0575b62ff000083166148d0575b61ff0083166147e8575b60ff8316614708575b029060401c60bf031c90565b608083166147d5575b604083166147c2575b602083166147af575b6010831661479c575b60088316614789575b60048316614776575b60028316614763575b60018316156146fc57680100000000000000010260401c6146fc565b680100000000000000010260401c614747565b680100000000000000030260401c61473e565b680100000000000000060260401c614735565b6801000000000000000b0260401c61472c565b680100000000000000160260401c614723565b6801000000000000002c0260401c61471a565b680100000000000000590260401c614711565b61800083166148bd575b61400083166148aa575b6120008316614897575b6110008316614884575b6108008316614871575b610400831661485e575b610200831661484b575b6101008316156146f357680100000000000000b10260401c6146f3565b680100000000000001630260401c61482e565b680100000000000002c60260401c614824565b6801000000000000058c0260401c61481a565b68010000000000000b170260401c614810565b6801000000000000162e0260401c614806565b68010000000000002c5d0260401c6147fc565b680100000000000058b90260401c6147f2565b6280000083166149ad575b62400000831661499a575b622000008316614987575b621000008316614974575b620800008316614961575b62040000831661494e575b62020000831661493b575b620100008316156146e9576801000000000000b1720260401c6146e9565b680100000000000162e40260401c61491d565b6801000000000002c5c80260401c614912565b68010000000000058b910260401c614907565b680100000000000b17210260401c6148fc565b68010000000000162e430260401c6148f1565b680100000000002c5c860260401c6148e6565b6801000000000058b90c0260401c6148db565b63800000008316614aa5575b63400000008316614a92575b63200000008316614a7f575b63100000008316614a6c575b63080000008316614a59575b63040000008316614a46575b63020000008316614a33575b63010000008316156146de5768010000000000b172180260401c6146de565b6801000000000162e4300260401c614a14565b68010000000002c5c8600260401c614a08565b680100000000058b90c00260401c6149fc565b6801000000000b17217f0260401c6149f0565b680100000000162e42ff0260401c6149e4565b6801000000002c5c85fe0260401c6149d8565b68010000000058b90bfc0260401c6149cc565b6480000000008316614ba5575b6440000000008316614b92575b6420000000008316614b7f575b6410000000008316614b6c575b6408000000008316614b59575b6404000000008316614b46575b6402000000008316614b33575b6401000000008316156146d257680100000000b17217f80260401c6146d2565b68010000000162e42ff10260401c614b13565b680100000002c5c85fe30260401c614b06565b6801000000058b90bfce0260401c614af9565b68010000000b17217fbb0260401c614aec565b6801000000162e42fff00260401c614adf565b68010000002c5c8601cc0260401c614ad2565b680100000058b90c0b490260401c614ac5565b658000000000008316614cad575b654000000000008316614c9a575b652000000000008316614c87575b651000000000008316614c74575b650800000000008316614c61575b650400000000008316614c4e575b650200000000008316614c3b575b650100000000008316156146c5576801000000b1721835510260401c6146c5565b680100000162e430e5a20260401c614c1a565b6801000002c5c863b73f0260401c614c0c565b68010000058b90cf1e6e0260401c614bfe565b680100000b1721bcfc9a0260401c614bf0565b68010000162e43f4f8310260401c614be2565b680100002c5c89d5ec6d0260401c614bd4565b6801000058b91b5bc9ae0260401c614bc6565b66800000000000008316614dbd575b66400000000000008316614daa575b66200000000000008316614d97575b66100000000000008316614d84575b66080000000000008316614d71575b66040000000000008316614d5e575b66020000000000008316614d4b575b66010000000000008316156146b75768010000b17255775c040260401c6146b7565b6801000162e525ee05470260401c614d29565b68010002c5cc37da94920260401c614d1a565b680100058ba01fb9f96d0260401c614d0b565b6801000b175effdc76ba0260401c614cfc565b680100162f3904051fa10260401c614ced565b6801002c605e2e8cec500260401c614cde565b68010058c86da1c09ea20260401c614ccf565b6780000000000000008216614ee6575b670de0b6b3a7640000906740000000000000008316614ed3575b6720000000000000008316614ec0575b6710000000000000008316614ead575b6708000000000000008316614e9a575b6704000000000000008316614e87575b6702000000000000008316614e74575b6701000000000000008316614e61575b905061469e565b680100b1afa5abcbed610260401c614e5a565b68010163da9fb33356d80260401c614e4a565b680102c9a3e778060ee70260401c614e3a565b6801059b0d31585743ae0260401c614e2a565b68010b5586cf9890f62a0260401c614e1a565b6801172b83c7d517adce0260401c614e0a565b6801306fe0a31b7152df0260401c614dfa565b5077b504f333f9de648480000000000000000000000000000000614de0565b7fb3b6ba1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b91909160001983820983820291828083109203918083039214614fd257670de0b6b3a7640000821015614fa0577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106699394670de0b6b3a7640000910990828211900360ee1b910360121c170290565b84907f5173648d0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b5050670de0b6b3a764000090049150565b9190916000838201938412911290801582169115161761240b57565b90816105b502916105b583050361240b57565b8181039291600013801582851316918412161761240b5756fea2646970667358221220733c105e2d00b57a6dea1117d0a657fb8a2f23ac291fb2d83c09e2a06dfb468164736f6c634300081b0033",
  "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c90816301ffc9a714611fd25750806325830db314611d225780632dcb118e14611ce457806343a19a6514611c125780634b503f0b146118f757806360332e891461170457806368aea41b14611686578063796b89ec1461162a5780638c5f36bb146114f65780638da5cb5b146114a35780638dea1f4714611071578063906b131a14610d435780639226537e14610ae8578063b410500414610a29578063bc197c8114610975578063de99347a14610876578063e3adc7ee14610511578063ee5b280a146104c3578063f23a6e611461044f578063f2fde38b146103125763f844a31c1461010857600080fd5b3461030f57610116366121ca565b61015873ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416331461249e565b61016182612669565b9160016018840155601b830160ff815460201c166102e757610183838361326e565b61018c82613751565b5050506401000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff8254161790556025830163010000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff825416179055836017601185015494019380855573ffffffffffffffffffffffffffffffffffffffff825416803b156102e3576040517f731133e900000000000000000000000000000000000000000000000000000000815230600482015260248101859052604481019290925260806064830152600060848301528290829060a490829084905af180156102d8576102bf575b50509154604080519384526020840192909252908201527fb5c3204064d2ac62821e92f17e7e2c1e9971c89f07fa01b6dab37145db86dc559080606081015b0390a180f35b816102c991612072565b6102d457833861027a565b8380fd5b6040513d84823e3d90fd5b8280fd5b6004857fdecaae02000000000000000000000000000000000000000000000000000000008152fd5b80fd5b503461030f57602060031936011261030f5761032c61210e565b7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c549073ffffffffffffffffffffffffffffffffffffffff8083163314916103738361249e565b169182156103cc576103a57fffffffffffffffffffffffff00000000000000000000000000000000000000009261249e565b16177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5580f35b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b503461030f5760a060031936011261030f5761046961210e565b50610472612154565b5060843567ffffffffffffffff81116104bf57610493903690600401612385565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b5080fd5b503461030f577f8a7a5c9c34210b39b0dd6c746e4824f7af2a84c059d4dcbc168a2036d26df99060406104f5366121ca565b80600f61050184612669565b015582519182526020820152a180f35b503461030f5761052036612177565b919061052b81612669565b9260ff601b85015460201c161561084e5761054960248501846123d6565b5490610559600586015483612529565b6001546040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301523060248301529091169190602081604481865afa908115610843578991610808575b5090610650926105d582602094101561253c565b73ffffffffffffffffffffffffffffffffffffffff60268a0154168a6040518096819582947f23b872dd0000000000000000000000000000000000000000000000000000000084528a6004850173ffffffffffffffffffffffffffffffffffffffff6040929594938160608401971683521660208201520152565b03925af180156107fd5761066b9188916107ce575b506125df565b8573ffffffffffffffffffffffffffffffffffffffff815416803b156104bf578160405180927f731133e90000000000000000000000000000000000000000000000000000000082528183816106fa8a8c8b600485019173ffffffffffffffffffffffffffffffffffffffff60a094921683526020830152604082015260806060820152600060808201520190565b03925af180156102d8576107ad575b507f99c110e7b335cff55cab2cfe92e319ad78396f17234debbb5860886aa0244cca61079686868673ffffffffffffffffffffffffffffffffffffffff8760228d83831660005201602052604060002060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055604051958695608087526080870190612644565b93602086015216604084015260608301520390a180f35b816107bc919695949396612072565b6107ca579091928538610709565b8580fd5b6107f0915060203d6020116107f6575b6107e88183612072565b8101906125c7565b38610665565b503d6107de565b6040513d89823e3d90fd5b9190506020823d60201161083b575b8161082460209383612072565b810103126108365790516106506105c1565b600080fd5b3d9150610817565b6040513d8b823e3d90fd5b6004857fc4d56880000000000000000000000000000000000000000000000000000000008152fd5b503461030f57602060031936011261030f5760043561089481612669565b601b81019081549060ff8260181c1661094d57600281015442119081159161093d575b50610915577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1663010000001790556040519081527fab1902ee37c92d1a78dda53814d64b815e7e3ee287d60843a3dbd6954e3206b490602090a180f35b6004847febd7e129000000000000000000000000000000000000000000000000000000008152fd5b90506003429101541115386108b7565b6004857f5cebfd4a000000000000000000000000000000000000000000000000000000008152fd5b503461030f5760a060031936011261030f5761098f61210e565b50610998612154565b5060443567ffffffffffffffff81116104bf576109b9903690600401612354565b505060643567ffffffffffffffff81116104bf576109db903690600401612354565b505060843567ffffffffffffffff81116104bf576109fd903690600401612385565b505060206040517fbc197c81000000000000000000000000000000000000000000000000000000008152f35b503461030f578060031936011261030f57610ae4604051610a4b608082612072565b6003815260603660208301377f8da5cb5b00000000000000000000000000000000000000000000000000000000610a818261243b565b527ff2fde38b00000000000000000000000000000000000000000000000000000000610aac8261245e565b527f8c5f36bb00000000000000000000000000000000000000000000000000000000610ad78261246e565b52604051918291826121e0565b0390f35b503461030f57610af73661223c565b610b018151612669565b60ff601b82015460201c16610d1b57907f182cb671939e46d1345c30b51134e41ef7782a2113747a93b4dc3c31b91ea81e610d1592610b3f8361284a565b825160028201546003830154604080519384526020840192909252908201527f05b741eb5649daedcc851ef6f057b1bf89b49d12357d31c478c425b6eb1ce9c590606090a182518154600183015460128401546040805194855260208501939093529183015260608201527f1ada3075f8dc673c9de9ba7c0b8e81065d996d1faa99feb6d0a648c8b7a1516d90608090a17fc64d8be5e3585a2141489e772ad1096418b37137a76298a309a5f1095f95f1ca835160a085015190610c7d60c087015160e08801516101008901516101208a01519173ffffffffffffffffffffffffffffffffffffffff6102608c015116936040519788978895919360c0959198979373ffffffffffffffffffffffffffffffffffffffff9560e089019a8952602089015260408801526060870152608086015260a085015216910152565b0390a18251610cfc6008830154926007810154906102008701516101808801516102408901519160ff6025601086015495015460081c1694610cbe8661247e565b6040519889988994919260e0969399989794919961010087019a8752602087015260408601526060850152608084015260a083015260c08201520152565b0390a1610d0f815160808301519061326e565b51613751565b50505080f35b6004837fdecaae02000000000000000000000000000000000000000000000000000000008152fd5b503461030f57608060031936011261030f5760043567ffffffffffffffff81116104bf57610d759036906004016120c7565b9060243560443592610d85612131565b9260ff601b610d9385612669565b015460181c1661104957610da683612669565b9060108201549460118301968754968780821160001461104057610dc991612421565b905b818111156110385750955b600284015442106110105760038401544211610fe8578615610fc057602384019273ffffffffffffffffffffffffffffffffffffffff831660005283602052610e248860406000205461242e565b601286015410610f985773ffffffffffffffffffffffffffffffffffffffff83166000528360205260406000205415610edd575b5060409460247f83518b027c8ada9071fa7643b5352e180e42cf5a021d61294e5880408643c97f979560209a9573ffffffffffffffffffffffffffffffffffffffff8b96610ea988610ec99861242e565b8955166000528b5287600020610ec086825461242e565b905501906123d6565b5554825191825285820152a1604051908152f35b6014850180549160018301809311610f845750879560209a9573ffffffffffffffffffffffffffffffffffffffff8b96610ea988610ec9987ff865af89149aa92dd957b447226842542090f013d1c80f4f66f6eb3ea79f8e917f83518b027c8ada9071fa7643b5352e180e42cf5a021d61294e5880408643c97f9f60409f9a906040918060249c5582519182526020820152a198505050965050959a509597505094610e58565b80634e487b7160e01b602492526011600452fd5b807f2b42b1220000000000000000000000000000000000000000000000000000000060049252fd5b6004837f7eec29e0000000000000000000000000000000000000000000000000000000008152fd5b6004837f0c32ed70000000000000000000000000000000000000000000000000000000008152fd5b6004837ff2b4a12c000000000000000000000000000000000000000000000000000000008152fd5b905095610dd6565b50508290610dcb565b807fa6a992df0000000000000000000000000000000000000000000000000000000060049252fd5b503461030f5760a060031936011261030f5760043567ffffffffffffffff81116104bf576110a39036906004016120c7565b60243560443573ffffffffffffffffffffffffffffffffffffffff811680820361149f576110cf612131565b906084359261111673ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416331461249e565b61111f85612669565b60ff601b82015460201c1615611477576044602073ffffffffffffffffffffffffffffffffffffffff8a5416604051928380927efdd58e0000000000000000000000000000000000000000000000000000000082528860048301528b60248301525afa80156108435786918a9161143e575b50106114165760056111a591015485612529565b6001546040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015230602483015290911690602081604481855afa90811561140b578a916113cd575b5090611281936112218460209594101561253c565b8a6040518096819582947f23b872dd0000000000000000000000000000000000000000000000000000000084528b6004850173ffffffffffffffffffffffffffffffffffffffff6040929594938160608401971683521660208201520152565b03925af180156107fd5761129b9188916107ce57506125df565b8573ffffffffffffffffffffffffffffffffffffffff81541692833b156104bf5773ffffffffffffffffffffffffffffffffffffffff60c4839260405194859384927ff242432a00000000000000000000000000000000000000000000000000000000845288600485015216978860248401528a604484015289606484015260a060848401528160a48401525af180156107fd5761138d575b509161137293917f38db1382a58023a1d5d8aaab1581199c9b7d9ed33223c18beeaab57924aff20f959360405195869560a0875260a0870190612644565b9360208601526040850152606084015260808301520390a180f35b91866113c17f38db1382a58023a1d5d8aaab1581199c9b7d9ed33223c18beeaab57924aff20f979593986113729795612072565b96919395509193611334565b929190506020833d602011611403575b816113ea60209383612072565b810103126113ff57915190919061128161120c565b8980fd5b3d91506113dd565b6040513d8c823e3d90fd5b6004887f91df618a000000000000000000000000000000000000000000000000000000008152fd5b9150506020813d60201161146f575b8161145a60209383612072565b8101031261146b5785905138611191565b8880fd5b3d915061144d565b6004887fc4d56880000000000000000000000000000000000000000000000000000000008152fd5b8480fd5b503461030f578060031936011261030f57602073ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416604051908152f35b503461030f57602060031936011261030f5761151061210e565b73ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c54166115cc5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000007f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5580f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f776e657220616c7265616479207365740000000000000000000000000000006044820152fd5b503461030f57602060031936011261030f5773ffffffffffffffffffffffffffffffffffffffff61165961210e565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600154161760015580f35b503461030f57606060031936011261030f577f9cc9725ee02d8f0a4d8b30054405939f4d872cc6a5c2d677e02f5bd87e5dea2a6024356004356102b96044356116ce83612669565b600a670de0b6b3a76400006116e3848861445a565b04910155604051938493846040919493926060820195825260208201520152565b503461030f576117133661223c565b307fffffffffffffffffffffffff00000000000000000000000000000000000000008354161782556117458151612669565b601b810160ff815460101c166118cf5782917fb42ebd0ad22561f77328ee457d5ba2a08a7c2847ff88c663cca9dcc8c53dc08691611785610d159561284a565b6201000062ff0000198254161790556001549060258101917fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000084549260201b169116178092557ff5d1b3af18a6e549e23801b7a43bec54699badce37e0f7e96e0a4ebb65143d74845160a08601519061189160c088015160e08901516101008a01516101208b01519173ffffffffffffffffffffffffffffffffffffffff6102608d015116936040519788978895919360c0959198979373ffffffffffffffffffffffffffffffffffffffff9560e089019a8952602089015260408801526060870152608086015260a085015216910152565b0390a1610cfc8451916008810154936007820154916102008801516101808901519060ff60106102408c01519401549460081c1694610cbe8661247e565b6004847fe2003eba000000000000000000000000000000000000000000000000000000008152fd5b503461030f578060031936011261030f5760405190601f1961020061191c8185612072565b600f8452013660208401377f60332e89000000000000000000000000000000000000000000000000000000006119518361243b565b527f796b89ec0000000000000000000000000000000000000000000000000000000061197c8361245e565b527f9226537e000000000000000000000000000000000000000000000000000000006119a78361246e565b52815160031015611bfe577f68aea41b000000000000000000000000000000000000000000000000000000006080830152815160041015611bfe577f2dcb118e0000000000000000000000000000000000000000000000000000000060a0830152815160051015611bfe577fee5b280a0000000000000000000000000000000000000000000000000000000060c0830152815160061015611bfe577f906b131a0000000000000000000000000000000000000000000000000000000060e0830152815160071015611bfe577fde99347a00000000000000000000000000000000000000000000000000000000610100830152815160081015611bfe577f43a19a6500000000000000000000000000000000000000000000000000000000610120830152815160091015611bfe577f25830db3000000000000000000000000000000000000000000000000000000006101408301528151600a1015611bfe577f8dea1f47000000000000000000000000000000000000000000000000000000006101608301528151600b1015611bfe577fe3adc7ee000000000000000000000000000000000000000000000000000000006101808301528151600c1015611bfe577ff844a31c000000000000000000000000000000000000000000000000000000006101a08301528151600d1015611bfe577ff23a6e61000000000000000000000000000000000000000000000000000000006101c08301528151600e1015611bfe577fbc197c81000000000000000000000000000000000000000000000000000000006101e083015260405180610ae484826121e0565b80634e487b7160e01b602492526032600452fd5b503461030f57602060031936011261030f57600435611c3081612669565b601b81019081549060ff8260181c1615611cbc576002810154421190811591611cac575b50610915577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1690556040519081527f11aa0bd3fb4d9c5622c703f91610a74140a4f88a7ebc7b4faaeaf52e3cb7aa9490602090a180f35b9050600342910154111538611c54565b6004857fc851109a000000000000000000000000000000000000000000000000000000008152fd5b503461030f577f091a72ed52432e53c748925ef46b36a19f93cb874539b387d4f3b1f92aa33e116040611d16366121ca565b80600e61050184612669565b503461030f57611d3136612177565b9091611d3c83612669565b9160118301928354916024820192611d5484866123d6565b548110611f7457602383019173ffffffffffffffffffffffffffffffffffffffff81168952826020526040892054611d8c86886123d6565b5411611ef057611dbc73ffffffffffffffffffffffffffffffffffffffff92611db587896123d6565b5490612421565b8755611dc885876123d6565b548282168a5283602052611de160408b20918254612421565b9055168752602052604086205415611e8c575b60150191825460018101809111611e78578387611e5b604097957f499925bc28b60b5b11b1841f8f51318fa4484237122fb618e76c3195b37d9eb89589957f83518b027c8ada9071fa7643b5352e180e42cf5a021d61294e5880408643c97f9b99556123d6565b55548151908582526020820152a15482519182526020820152a180f35b602487634e487b7160e01b81526011600452fd5b601481018054906000198201918211611edc57604082601594937ff865af89149aa92dd957b447226842542090f013d1c80f4f66f6eb3ea79f8e9193558151908982526020820152a19050611df4565b602488634e487b7160e01b81526011600452fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f556e646572666c6f773a20726573657276656420616d6f756e7420627920616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e646572666c6f773a20726573657276656420616d6f756e740000000000006044820152fd5b9050346104bf5760206003193601126104bf576004357fffffffff0000000000000000000000000000000000000000000000000000000081168091036102e357602092507f4e2312e0000000000000000000000000000000000000000000000000000000008114908115612048575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501438612041565b90601f601f19910116810190811067ffffffffffffffff82111761209557604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff811161209557601f01601f191660200190565b81601f82011215610836578035906120de826120ab565b926120ec6040519485612072565b8284526020838301011161083657816000926020809301838601378301015290565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361083657565b6064359073ffffffffffffffffffffffffffffffffffffffff8216820361083657565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361083657565b6060600319820112610836576004359067ffffffffffffffff8211610836576121a2916004016120c7565b906024359060443573ffffffffffffffffffffffffffffffffffffffff811681036108365790565b6003196040910112610836576004359060243590565b602060408183019282815284518094520192019060005b8181106122045750505090565b82517fffffffff00000000000000000000000000000000000000000000000000000000168452602093840193909201916001016121f7565b600319610280910112610836576040516000610280820167ffffffffffffffff811183821017612340576040526004358252602435602083015260443560408301526064356060830152608435608083015260a43560a083015260c43560c083015260e43560e083015261010435610100830152610124356101208301526101443561014083015261016435610160830152610184356101808301526101a4356101a08301526101c4356101c08301526101e4356101e0830152610204356102008301526102243561022083015261024435610240830152610264359073ffffffffffffffffffffffffffffffffffffffff8216820361030f575061026082015290565b602482634e487b7160e01b81526041600452fd5b9181601f840112156108365782359167ffffffffffffffff8311610836576020808501948460051b01011161083657565b9181601f840112156108365782359167ffffffffffffffff8311610836576020838186019501011161083657565b60005b8381106123c65750506000910152565b81810151838201526020016123b6565b6020906123f09282604051948386809551938492016123b3565b82019081520301902090565b90600019820191821161240b57565b634e487b7160e01b600052601160045260246000fd5b9190820391821161240b57565b9190820180921161240b57565b8051156124485760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156124485760400190565b8051600210156124485760600190565b6002111561248857565b634e487b7160e01b600052602160045260246000fd5b156124a557565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e60448201527f6374696f6e0000000000000000000000000000000000000000000000000000006064820152fd5b8181029291811591840414171561240b57565b1561254357565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152fd5b90816020910312610836575180151581036108365790565b156125e657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f45524332303a207472616e73666572206661696c6564000000000000000000006044820152fd5b90601f19601f602093612662815180928187528780880191016123b3565b0116010190565b600081807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000081101561281f575b50806d04ee2d6d415b85acef8100000000600a921015612804575b662386f26fc100008110156127f0575b6305f5e1008110156127df575b6127108110156127d0575b60648110156127c2575b10156127ba575b6001810191600a60001960216127136126fd876120ab565b9661270b6040519889612072565b8088526120ab565b94601f196020880196013687378601015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a835304801561276057600019600a9192612724565b50506127b4602c60405180936127a360208301967f73746f726167652e626f6e6400000000000000000000000000000000000000008852518092858501906123b3565b81010301601f198101835282612072565b51902090565b6001016126e5565b6064600291049201916126de565b612710600491049201916126d4565b6305f5e100600891049201916126c9565b662386f26fc10000601091049201916126bc565b6d04ee2d6d415b85acef8100000000602091049201916126ac565b604092507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000090049050600a612691565b9060006128578351612669565b9073ffffffffffffffffffffffffffffffffffffffff6102608501511673ffffffffffffffffffffffffffffffffffffffff6026840191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905560a084018051600584015560e0850192835115613186576102008601928684511560001461313f57610180600c910151066131175786905b6101c08201908151612f9a575b6101a08301918251612e7b575b60c084019761291a895182519061445a565b906006870191825561010086019182519161293c61012089019384519061445a565b60098a0155670de0b6b3a764000061296960408a0151809c60018d019d8e5560208c01518d55519061445a565b0460108a015560606101e08901519860128b01998a55610180810151600d8c015501519b8c9b624f1a008d60028d019e8f55019d8e811161240b578e10612df7578a90600382019e8f55805115600014612d0d575060250180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555050805460088901555b6102408d018051600103612cb45750855115612c7d57602588016203000062ff0000198254161790555b8551600e8901558351600f8901556101408d01948d8651908115159081612c6e575b50612be2575b5050612bdd98957f9cc9725ee02d8f0a4d8b30054405939f4d872cc6a5c2d677e02f5bd87e5dea2a89967f05b741eb5649daedcc851ef6f057b1bf89b49d12357d31c478c425b6eb1ce9c59e9f9a6040612bb898612b497f1ada3075f8dc673c9de9ba7c0b8e81065d996d1faa99feb6d0a648c8b7a1516d9d99612b43612b3d7f091a72ed52432e53c748925ef46b36a19f93cb874539b387d4f3b1f92aa33e119b869b601b7f8a7a5c9c34210b39b0dd6c746e4824f7af2a84c059d4dcbc168a2036d26df99099017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff815416905554935190519061445a565b82614f32565b90612421565b60078c01558d51905182519182526020820152a18a5190516101608c0151855192835260208301919091526040820152606090a18851905182519182526020820152a1855192549354905490604051948594859094939260609260808301968352602083015260408201520152565b0390a15191549254604051938493846040919493926060820195825260208201520152565b0390a1565b8e612bf461016082019283519061445a565b600a8c015551908751905191303b156102d4576040517f68aea41b000000000000000000000000000000000000000000000000000000008152600481019190915260248101919091526044810191909152818160648183305af180156102d85715612a4357612c64828092612072565b61030f5780612a43565b6101609150015115158f612a3d565b835115612c9c57602588016204000062ff000019825416179055612a1b565b602588016201000062ff000019825416179055612a1b565b8051612cce57506025880162ff0000198154169055612a1b565b517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612a1b57602588016202000062ff000019825416179055612a1b565b8051600103612d835750612d7992612d5c612d74936025612d64940160017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055825190519061242e565b90519061445a565b6703782dace9d900005b90614186565b6123fc565b60088901556129f1565b51909190600214612d97575b5050506129f1565b612dea92612d5c612ddc926025612d74950160027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055825190519061242e565b6701280f39a3485555612d6e565b6008890155388881612d8f565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f54696d657374616d702073686f756c64206265206561726c696572206f72206560448201527f7175616c20746f207468652063757272656e742074696d657374616d700000006064820152fd5b90979695949392855115600014612f4e57508151600c900615612ec0576004887fbebd2292000000000000000000000000000000000000000000000000000000008152fd5b889791929394959697518351303b156102d457604051917f2dcb118e00000000000000000000000000000000000000000000000000000000835260048301526024820152828160448183305af18015612f4357908a94939291612f24575b50612908565b8280949550612f3591939293612072565b6104bf579088929138612f1e565b6040513d85823e3d90fd5b9293949596979060018751036129085782519198979695949350906003900615612ec0576004887f4f80c6ed000000000000000000000000000000000000000000000000000000008152fd5b96959493929184511560001461305a57508051600c900615612fde576004877fdcbd8c00000000000000000000000000000000000000000000000000000000008152fd5b90919293949587518251303b156102e357604051917fee5b280a00000000000000000000000000000000000000000000000000000000835260048301526024820152818160448183305af180156102d857908993929161303f575b506128fb565b818093945061304d91612072565b61030f5790879138613039565b91929394959660018651036128fb578151909796959493925060039006156130a4576004877f07010901000000000000000000000000000000000000000000000000000000008152fd5b90919293949587518251303b156102e357604051917fee5b280a00000000000000000000000000000000000000000000000000000000835260048301526024820152818160448183305af180156102d85790828a949392613107575b50506128fb565b61311091612072565b3881613100565b807f0d38e32c0000000000000000000000000000000000000000000000000000000060049252fd5b9060018551036128ee579061018060039101510661315e5786906128ee565b807fecfbd8cf0000000000000000000000000000000000000000000000000000000060049252fd5b6004837f1de42a90000000000000000000000000000000000000000000000000000000008152fd5b8181106131b9575050565b600081556001016131ae565b805460008255806131d4575050565b6131e9916000526020600020908101906131ae565b565b80548210156124485760005260206000200190600090565b80546801000000000000000081101561209557613225916001820181556131eb565b60001982549160031b1b19169055565b80546801000000000000000081101561209557613257916001820181556131eb565b600019829392549160031b92831b921b1916179055565b9061327882612669565b600160ff601b83015460201c161515146136ed5762015180820462010bd981019062010bd982126000821290801582169115161761240b57622649650190600062253d8c8312911290801582169115161761240b578060021b60048105820361240b5762023ab19005908162023ab1029062023ab18205830361240b576003820191600060038412911290801582169115161761240b57600461331c920590615012565b9060018201600181126000841290801582169115161761240b5780610fa00290610fa082050361240b5762164b09613362910592600461335b85614fff565b0590615012565b91601f8301926000601f8512911290801582169115161761240b578260500260508105840361240b5761098f9005928361098f029061098f8205850361240b5760506133af920590615012565b92600b8105906002810190600060028312911290801582169115161761240b5781600c02600c8105830361240b576133e691615012565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf810190811360011661240b578060640290606482050361240b576134349261342f91614fe3565b614fe3565b600091602585019260ff84541660038110156136d957806136b6575050600c600d86015404935b60009483601d88019461346d866131c5565b60218901978854818a5580613697575b50805b8481106134c957505050505050505050509181604092600b7f6d7086ab13fbd1583240e1b6e62b23416e3945f952373732fc183a2a407e462d95015582519182526020820152a1565b60ff895416600381101561248857600281036135e557509091816135ac57509050600c85066135a5576001820180831161240b57905b6001860180871161240b57600c900690811561359c575b61352a61352487848661426c565b89613235565b600019850185811161240b578114613587575b895490680100000000000000008210156120955760018201808c55821015612448576001918b60005260206000208160051c019060ff60f883549260031b161b1916905501613480565b61359286838561426c565b600c8c015561353d565b600c9150613516565b81906134ff565b600c83066135df576001810180911161240b57915b6001810180911161240b57600c9006908161351657600c9150613516565b916135c1565b60006001820361367057505090811560001461363657509050600a851061362f576001820180831161240b57905b6003860180871161240b57600c900690811561359c575b613516565b8190613613565b600a81101561365e575b6003810180911161240b57600c9006908161362a57600c9150613516565b916001810180911161240b5791613640565b5061351657918261368657505081908590613516565b6001810180911161240b5791613516565b898252602082206136b091601f0160051c8101906131ae565b3861347d565b6001141590506136ce576003600d860154049361345b565b600d8501549361345b565b602482634e487b7160e01b81526021600452fd5b7fdecaae020000000000000000000000000000000000000000000000000000000060005260046000fd5b906020825491828152019160005260206000209060005b81811061373b5750505090565b825484526020909301926001928301920161372e565b61375a81612669565b90600160ff601b84015460201c161515146136ed576000600583015460ff6025850154166003811015613eec57806141665750600c600d85015404915b6137a3601c86016131c5565b6137af601e86016131c5565b6137bb601f86016131c5565b6137c7602086016131c5565b6137d3601f8601613203565b6137e4600586015460208701613235565b6137f0601c8601613203565b6137fc601e8601613203565b60058501546016860155805b83821061392357505050506138f56138ee917f2f3e3b3aaadf1f165fa7d634278fa8ee54a0548dbf8fc62a1d301da8f6aa6298604060088601548151908482526020820152a17f1cd0ec0194cd0b5111bf7154d1801ab3549a822fcff5ac188bcaa7f310aa11de601d85019160405190815260c06020820152806138df6138ce6138bd6138ac61389b60c0860189613717565b858103604087015260208c01613717565b8481036060860152601f8b01613717565b8381036080850152601c8a01613717565b82810360a0840152601e8901613717565b0390a160405192838092613717565b0382612072565b91601e61392060405161390f816138ee81601c8901613717565b936138ee6040518094819301613717565b90565b602586015491600660ff8460101c16101591826124885760ff8460101c1615600014613fed57506000925b61395c8560088a0154614f32565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561240b578160098a0154670de0b6b3a764000003670de0b6b3a7640000811161240b576139a691614f32565b936124885760ff8160101c1615600014613a4157508560001981011161240b57600192613a00613a179260001989018510600014613a23576139ea601f8c01613203565b6139f78860208d01613235565b601c8b01613235565b613a0d81601e8b01613235565b601689015461242e565b60168801550190613808565b613a2f60208c01613203565b613a3c88601f8d01613235565b6139f7565b600095919295600260ff8360101c1614600014613af257505084613aa857600192613a0060209693613a3c84613a9f8d613a96670de0b6b3a7640000613a8e613a179a600a850154614f32565b048094612421565b9b8c9101613235565b601f8d01613235565b93908560001981011161240b57600192613a00613a179260001989018514600014613ad957613a2f60208c01613203565b613ae68860208d01613235565b613a3c601f8c01613203565b9593929550600160ff8260101c1614600014613b8857508560001981011161240b57876000198701841015613b51575060019291613a00613b3686613a1794612421565b96613b448860208d01613235565b613a3c87601f8d01613235565b91613a00613a179296613a3c613b7887602088613b728260019c9b01613203565b016131eb565b90549060031b1c601f8d01613235565b6000600360ff8360101c1614600014613cb157505060ff602589015416600381101590816124885780159182613c9e575b8215613c78575b8215613c53575b505015613c3b578560001981011161240b57876000198701841015613c16575060019291613a00613bfb86613a1794612421565b96613c0987601f8d01613235565b613a3c8860208d01613235565b94613a17915091613a008493613a3c613b78600197602060009b613b72828201613203565b9360019291613a00613a1792613c09601f8c01613203565b9091506124885760021480613c6a575b3880613bc7565b50600e880154831015613c63565b50600091506001811480613c8d575b91613bc0565b506003600e8b015404851015613c87565b9150600c600e8b01540485101591613bb9565b50600460ff8260101c1614600014613d9b575060ff602589015416600381101590816124885780159182613d88575b8215613d62575b8215613d3d575b505015613d22578560001981011161240b57876000198701841015613c16575060019291613a00613bfb86613a1794612421565b935050600190613a176000613a0081613c09601f8c01613203565b9091506124885760021480613d54575b3880613cee565b50600f880154831015613d4d565b50600091506001811480613d77575b91613ce7565b506003600f8b015404851015613d71565b9150600c600f8b01540485101591613ce0565b600095919590600560ff8260101c1614613dc2575b505060019291613a00613a17926139f7565b600360ff829893981610159081613fd95760ff8116159182613fc6575b8215613f9e575b8215613f62575b505015613f485786600019810111613f3457846000198801851015613f0057613e1591612421565b94613e2385601f8b01613235565b613e308660208b01613235565b60ff60258a01541660038110159081613eec5780159182613eda575b8215613eb6575b8215613e83575b5050916001949391613a1793613e76575b509181939450613db0565b9150819050613a00613e6b565b9091506136d9579160019493916002613a17941480613ea9575b91938193959650613e5a565b50600f8b01548510613e9d565b508291506001811480613eca575b91613e53565b506003600f8c0154048610613ec4565b9150600c600f8c015404861091613e4c565b602483634e487b7160e01b81526021600452fd5b505084613f0f60208a01613203565b613f2f613f1f8560208c016131eb565b90549060031b1c601f8b01613235565b613e30565b602486634e487b7160e01b81526011600452fd5b94613f55601f8a01613203565b613f2f8660208b01613235565b909150613f8a5760ff1660021480613f7c575b3880613ded565b50600e890154841015613f75565b602487634e487b7160e01b81526021600452fd5b5087915060ff811660011480613fb5575b91613de6565b506003600e8c015404861015613faf565b9150600c600e8c01540486101591613ddf565b602488634e487b7160e01b81526021600452fd5b60009250601084901c60ff1660010361401f5750670de0b6b3a76400006140188660058a015461445a565b049261394e565b600360ff8560101c16148015614151575b156140c05750600360ff841610156124885760ff831661407257670de0b6b3a7640000614018600589015461406c600c600e8c01540489612421565b9061445a565b670de0b6b3a7640000600060ff85166001036140aa576140a160058a015461406c6003600e8d0154048a612421565b9050049261394e565b6140a160058a015461406c600e8c01548a612421565b928261248857600460ff8260101c160361394e579250600360ff841610156124885760ff831661410c57670de0b6b3a7640000614018600589015461406c600c600f8c01540489612421565b670de0b6b3a7640000600060ff851660010361413b576140a160058a015461406c6003600f8d0154048a612421565b6140a160058a015461406c600f8c01548a612421565b509150600091600560ff8560101c1614614030565b60010361417b576003600d8501540491613797565b600d84015491613797565b801580156141a55750506141a057670de0b6b3a764000090565b600090565b670de0b6b3a7640000821461425d57826141c857505050670de0b6b3a764000090565b670de0b6b3a7640000831461425757670de0b6b3a76400008211156142025750613920916141f86141fd92614536565b614f32565b614657565b61424157614227916141f86141fd926ec097ce7bc90715b34b9f100000000004614536565b8015614241576ec097ce7bc90715b34b9f10000000000490565b634e487b7160e01b600052601260045260246000fd5b50905090565b505050670de0b6b3a764000090565b906107b282106143fc577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2810181811360011661240b57600c9005916112c081019060006112c08312911290801582169115161761240b57826142ce91614fe3565b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe820191821360011661240b57600c810290808205600c149015171561240b5761431891615012565b9161432282614fff565b918361016f029361016f85050361240b576064810190600060648312911290801582169115161761240b5760649005918260030292600384050361240b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82b5820191821360011661240b576143b593600c6143a5600494856143ad950590614fe3565b910590614fe3565b910590615012565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdac274810190811360011661240b576201518081029080820462015180149015171561240b5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f596561722063616e6e6f74206265206561726c696572207468616e20313937306044820152fd5b600019670de0b6b3a7640000820991670de0b6b3a764000082029182808510940393808503941461452957818410156144ed57670de0b6b3a764000082910960018219018216809204600281600302188082026002030280820260020302808202600203028082026002030280820260020302809102600203029360018380600003040190848311900302920304170290565b7f63a0577800000000000000000000000000000000000000000000000000000000600052600452670de0b6b3a764000060245260445260646000fd5b5091508115614241570490565b670de0b6b3a7640000811061462a57670de0b6b3a764000081046fffffffffffffffffffffffffffffffff811160071b90811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c9060ff821160031b91821c92600f841160021b93841c94600160038711811b96871c11961717171717171790670de0b6b3a76400008202911c670de0b6b3a76400008114614626576706f05b59d3b2000090815b6145ef57505090565b80670de0b6b3a764000091020490671bc16d674ec80000821015614618575b60011c90816145e6565b809192019160011c9061460e565b5090565b7f36d32ef00000000000000000000000000000000000000000000000000000000060005260045260246000fd5b680a688906bd8affffff8111614f0557670de0b6b3a76400009060401b047780000000000000000000000000000000000000000000000067ff000000000000008216614dd0575b670de0b6b3a76400009066ff0000000000008316614cc0575b65ff00000000008316614bb8575b64ff000000008316614ab8575b63ff00000083166149c0575b62ff000083166148d0575b61ff0083166147e8575b60ff8316614708575b029060401c60bf031c90565b608083166147d5575b604083166147c2575b602083166147af575b6010831661479c575b60088316614789575b60048316614776575b60028316614763575b60018316156146fc57680100000000000000010260401c6146fc565b680100000000000000010260401c614747565b680100000000000000030260401c61473e565b680100000000000000060260401c614735565b6801000000000000000b0260401c61472c565b680100000000000000160260401c614723565b6801000000000000002c0260401c61471a565b680100000000000000590260401c614711565b61800083166148bd575b61400083166148aa575b6120008316614897575b6110008316614884575b6108008316614871575b610400831661485e575b610200831661484b575b6101008316156146f357680100000000000000b10260401c6146f3565b680100000000000001630260401c61482e565b680100000000000002c60260401c614824565b6801000000000000058c0260401c61481a565b68010000000000000b170260401c614810565b6801000000000000162e0260401c614806565b68010000000000002c5d0260401c6147fc565b680100000000000058b90260401c6147f2565b6280000083166149ad575b62400000831661499a575b622000008316614987575b621000008316614974575b620800008316614961575b62040000831661494e575b62020000831661493b575b620100008316156146e9576801000000000000b1720260401c6146e9565b680100000000000162e40260401c61491d565b6801000000000002c5c80260401c614912565b68010000000000058b910260401c614907565b680100000000000b17210260401c6148fc565b68010000000000162e430260401c6148f1565b680100000000002c5c860260401c6148e6565b6801000000000058b90c0260401c6148db565b63800000008316614aa5575b63400000008316614a92575b63200000008316614a7f575b63100000008316614a6c575b63080000008316614a59575b63040000008316614a46575b63020000008316614a33575b63010000008316156146de5768010000000000b172180260401c6146de565b6801000000000162e4300260401c614a14565b68010000000002c5c8600260401c614a08565b680100000000058b90c00260401c6149fc565b6801000000000b17217f0260401c6149f0565b680100000000162e42ff0260401c6149e4565b6801000000002c5c85fe0260401c6149d8565b68010000000058b90bfc0260401c6149cc565b6480000000008316614ba5575b6440000000008316614b92575b6420000000008316614b7f575b6410000000008316614b6c575b6408000000008316614b59575b6404000000008316614b46575b6402000000008316614b33575b6401000000008316156146d257680100000000b17217f80260401c6146d2565b68010000000162e42ff10260401c614b13565b680100000002c5c85fe30260401c614b06565b6801000000058b90bfce0260401c614af9565b68010000000b17217fbb0260401c614aec565b6801000000162e42fff00260401c614adf565b68010000002c5c8601cc0260401c614ad2565b680100000058b90c0b490260401c614ac5565b658000000000008316614cad575b654000000000008316614c9a575b652000000000008316614c87575b651000000000008316614c74575b650800000000008316614c61575b650400000000008316614c4e575b650200000000008316614c3b575b650100000000008316156146c5576801000000b1721835510260401c6146c5565b680100000162e430e5a20260401c614c1a565b6801000002c5c863b73f0260401c614c0c565b68010000058b90cf1e6e0260401c614bfe565b680100000b1721bcfc9a0260401c614bf0565b68010000162e43f4f8310260401c614be2565b680100002c5c89d5ec6d0260401c614bd4565b6801000058b91b5bc9ae0260401c614bc6565b66800000000000008316614dbd575b66400000000000008316614daa575b66200000000000008316614d97575b66100000000000008316614d84575b66080000000000008316614d71575b66040000000000008316614d5e575b66020000000000008316614d4b575b66010000000000008316156146b75768010000b17255775c040260401c6146b7565b6801000162e525ee05470260401c614d29565b68010002c5cc37da94920260401c614d1a565b680100058ba01fb9f96d0260401c614d0b565b6801000b175effdc76ba0260401c614cfc565b680100162f3904051fa10260401c614ced565b6801002c605e2e8cec500260401c614cde565b68010058c86da1c09ea20260401c614ccf565b6780000000000000008216614ee6575b670de0b6b3a7640000906740000000000000008316614ed3575b6720000000000000008316614ec0575b6710000000000000008316614ead575b6708000000000000008316614e9a575b6704000000000000008316614e87575b6702000000000000008316614e74575b6701000000000000008316614e61575b905061469e565b680100b1afa5abcbed610260401c614e5a565b68010163da9fb33356d80260401c614e4a565b680102c9a3e778060ee70260401c614e3a565b6801059b0d31585743ae0260401c614e2a565b68010b5586cf9890f62a0260401c614e1a565b6801172b83c7d517adce0260401c614e0a565b6801306fe0a31b7152df0260401c614dfa565b5077b504f333f9de648480000000000000000000000000000000614de0565b7fb3b6ba1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b91909160001983820983820291828083109203918083039214614fd257670de0b6b3a7640000821015614fa0577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106699394670de0b6b3a7640000910990828211900360ee1b910360121c170290565b84907f5173648d0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b5050670de0b6b3a764000090049150565b9190916000838201938412911290801582169115161761240b57565b90816105b502916105b583050361240b57565b8181039291600013801582851316918412161761240b5756fea2646970667358221220733c105e2d00b57a6dea1117d0a657fb8a2f23ac291fb2d83c09e2a06dfb468164736f6c634300081b0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}

declare module "@nomicfoundation/hardhat-viem/types" {
  export function deployContract(
    contractName: "BondFacet",
    constructorArgs?: [],
    config?: DeployContractConfig
  ): Promise<GetContractReturnType<BondFacet$Type["abi"]>>;
  export function deployContract(
    contractName: "contracts/facets/BondFacet.sol:BondFacet",
    constructorArgs?: [],
    config?: DeployContractConfig
  ): Promise<GetContractReturnType<BondFacet$Type["abi"]>>;

  export function sendDeploymentTransaction(
    contractName: "BondFacet",
    constructorArgs?: [],
    config?: SendDeploymentTransactionConfig
  ): Promise<{
    contract: GetContractReturnType<BondFacet$Type["abi"]>;
    deploymentTransaction: GetTransactionReturnType;
  }>;
  export function sendDeploymentTransaction(
    contractName: "contracts/facets/BondFacet.sol:BondFacet",
    constructorArgs?: [],
    config?: SendDeploymentTransactionConfig
  ): Promise<{
    contract: GetContractReturnType<BondFacet$Type["abi"]>;
    deploymentTransaction: GetTransactionReturnType;
  }>;

  export function getContractAt(
    contractName: "BondFacet",
    address: Address,
    config?: GetContractAtConfig
  ): Promise<GetContractReturnType<BondFacet$Type["abi"]>>;
  export function getContractAt(
    contractName: "contracts/facets/BondFacet.sol:BondFacet",
    address: Address,
    config?: GetContractAtConfig
  ): Promise<GetContractReturnType<BondFacet$Type["abi"]>>;
}
