{
  "_format": "hh-sol-artifact-1",
  "contractName": "Matchings",
  "sourceName": "src/v0.8/module/matching/Matchings.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "matchingId",
          "type": "uint64"
        },
        {
          "internalType": "address",
          "name": "expectedInitiator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "actualInitiator",
          "type": "address"
        }
      ],
      "name": "NotMatchingInitiator",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        },
        {
          "internalType": "address",
          "name": "actualAddress",
          "type": "address"
        }
      ],
      "name": "NotMatchingsTarget",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "previousAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "AdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "beacon",
          "type": "address"
        }
      ],
      "name": "BeaconUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "MatchingCancelled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "MatchingClosed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_winner",
          "type": "address"
        }
      ],
      "name": "MatchingHasWinner",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "MatchingNoWinner",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "MatchingPaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "MatchingResumed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        },
        {
          "internalType": "enum MatchingType.BidSelectionRule",
          "name": "_bidSelectionRule",
          "type": "uint8"
        },
        {
          "internalType": "uint64",
          "name": "_biddingDelayBlockCount",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "_biddingPeriodBlockCount",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "_storageCompletionPeriodBlocks",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_biddingThreshold",
          "type": "uint256"
        },
        {
          "internalType": "uint16",
          "name": "_replicaIndex",
          "type": "uint16"
        },
        {
          "internalType": "string",
          "name": "_additionalInfo",
          "type": "string"
        }
      ],
      "name": "createMatching",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "datasetsRequirement",
      "outputs": [
        {
          "internalType": "contract IDatasetsRequirement",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "getBidSelectionRule",
      "outputs": [
        {
          "internalType": "enum MatchingType.BidSelectionRule",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "getBiddingAfterPauseHeight",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "getBiddingEndHeight",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "getBiddingStartHeight",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "getBiddingThreshold",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getImplementation",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "getMatchingCreatedHeight",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "getMatchingInitiator",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "getMatchingState",
      "outputs": [
        {
          "internalType": "enum MatchingType.State",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "getMatchingStorageCompletionHeight",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_matchingsTarget",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_matchingsBids",
          "type": "address"
        }
      ],
      "name": "initDependencies",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governanceAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_roles",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_datasetsRequirement",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "matchingsBids",
      "outputs": [
        {
          "internalType": "contract IMatchingsBids",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "matchingsCount",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "matchingsTarget",
      "outputs": [
        {
          "internalType": "contract IMatchingsTarget",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "pauseMatching",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "reportCancelMatching",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "reportCloseMatching",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        },
        {
          "internalType": "address",
          "name": "_winner",
          "type": "address"
        }
      ],
      "name": "reportMatchingHasWinner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "reportMatchingNoWinner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "reportPublishMatching",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_matchingId",
          "type": "uint64"
        }
      ],
      "name": "resumeMatching",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        }
      ],
      "name": "upgradeTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b50608051612ec661004c60003960008181610a9801528181610ad801528181610b9701528181610bd70152610c530152612ec66000f3fe60806040526004361061013c5760003560e01c806308916197146101415780630e635d7e146101775780631ed25163146101995780632620333e146101b95780632b34cbc5146101e65780632de966b01461020657806330e3dd251461024c57806334ad3b4a1461028c5780633659cfe6146102b957806338d51ea7146102d957806341f0ebb8146102f95780634f1ef2861461033557806352d1902d1461034857806352ffae6b1461035d57806392191e6c1461037d5780639247e80f1461039d5780639aa023d1146103bd5780639e5a53e5146103dd5780639f6c8a47146103fd578063aaf10f421461041d578063b1fa766c1461043f578063b6c917831461045f578063bbf83674146104a5578063c0c53b8b146104c5578063d7606cf6146104e5578063dd8fff9714610505578063e19edda114610525575b600080fd5b34801561014d57600080fd5b50606554610161906001600160401b031681565b60405161016e9190611de1565b60405180910390f35b34801561018357600080fd5b50610197610192366004611e39565b610567565b005b3480156101a557600080fd5b506101976101b4366004611e76565b610608565b3480156101c557600080fd5b50606a546101d9906001600160a01b031681565b60405161016e9190611ecf565b3480156101f257600080fd5b50610161610201366004612020565b610700565b34801561021257600080fd5b5061023f610221366004611e76565b6001600160401b031660009081526066602052604090206001015490565b60405161016e91906120f3565b34801561025857600080fd5b50610161610267366004611e76565b6001600160401b03908116600090815260666020526040902054600160881b90041690565b34801561029857600080fd5b506102ac6102a7366004611e76565b610a5f565b60405161016e9190612145565b3480156102c557600080fd5b506101976102d4366004612153565b610a8e565b3480156102e557600080fd5b506101616102f4366004611e76565b610b56565b34801561030557600080fd5b50610161610314366004611e76565b6001600160401b039081166000908152606660205260409020600201541690565b610197610343366004612174565b610b8d565b34801561035457600080fd5b5061023f610c46565b34801561036957600080fd5b50610197610378366004611e76565b610ca3565b34801561038957600080fd5b50610197610398366004611e76565b610cfb565b3480156103a957600080fd5b506101976103b8366004611e76565b610df3565b3480156103c957600080fd5b506069546101d9906001600160a01b031681565b3480156103e957600080fd5b506101616103f8366004611e76565b610e7f565b34801561040957600080fd5b50610161610418366004611e76565b610ed0565b34801561042957600080fd5b50610432610f2a565b60405161016e91906121ca565b34801561044b57600080fd5b5061019761045a366004611e76565b610f39565b34801561046b57600080fd5b5061049861047a366004611e76565b6001600160401b031660009081526066602052604090205460ff1690565b60405161016e9190612206565b3480156104b157600080fd5b506101976104c0366004612214565b610fc5565b3480156104d157600080fd5b506101976104e0366004612236565b611089565b3480156104f157600080fd5b50610197610500366004611e76565b61119e565b34801561051157600080fd5b50606b546101d9906001600160a01b031681565b34801561053157600080fd5b50610432610540366004611e76565b6001600160401b03166000908152606660205260409020600401546001600160a01b031690565b606b546001600160a01b0316823382146105a1578033604051636355073560e01b8152600401610598929190612286565b60405180910390fd5b6001600160401b03841660009081526066602052604090206105c28161122a565b6040516001600160a01b038516906001600160401b038716907f821b2f08eee92e612e3d5f8a0f9249514abb4bcb60d2c9a815c55ec2288e36c990600090a35050505050565b60405163e19edda160e01b815230908290600090839063e19edda190610632908590600401611de1565b602060405180830381865afa15801561064f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067391906122ac565b90506001600160a01b03811633146106a45781813360405163bb5a686560e01b8152600401610598939291906122cd565b6001600160401b03841660009081526066602052604090206106c581611273565b6040516001600160401b038616907fdcc3f18bbb54786ec327b109e3597e1adc0e10856ba975001e5ec6f2922aee4090600090a25050505050565b606854604051632474521560e21b81526000916001600160a01b0316907f2e7a99dcc48463ba57667732f1d19d96afa51e11db099e5c9c708076a0a080409082906391d148549061075790849033906004016122f5565b602060405180830381865afa158015610774573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107989190612316565b6107b45760405162461bcd60e51b81526004016105989061236b565b606580546001600160401b03169060006107cd83612391565b82546101009290920a6001600160401b03818102199093169183160217909155606554166000908152606660205260409081902060695491516314a41d8560e01b81529092506001600160a01b03909116906314a41d8590610833908f90600401611de1565b602060405180830381865afa158015610850573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087491906123c6565b61ffff168661ffff161061089a5760405162461bcd60e51b815260040161059890612416565b6000606960009054906101000a90046001600160a01b03166001600160a01b031663146846a88e896040518363ffffffff1660e01b81526004016108df92919061243e565b600060405180830381865afa1580156108fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109249190810190612587565b50505050905060008151111561095a5761093e813361133d565b61095a5760405162461bcd60e51b815260040161059890612677565b81548c90839060ff1916600183600381111561097857610978612101565b02179055508a8260000160016101000a8154816001600160401b0302191690836001600160401b03160217905550898260000160096101000a8154816001600160401b0302191690836001600160401b03160217905550888260000160116101000a8154816001600160401b0302191690836001600160401b0316021790555087826001018190555085826003019081610a12919061278d565b50506004810180546001600160a01b0319163317905560020180546001600160401b034381166001600160401b031990921691909117909155606554169250505098975050505050505050565b6001600160401b03811660009081526066602052604081206004810154600160e01b900460ff165b9392505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ad65760405162461bcd60e51b815260040161059890612885565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b086113a4565b6001600160a01b031614610b2e5760405162461bcd60e51b8152600401610598906128cc565b610b37816113c0565b60408051600080825260208201909252610b5391839190611459565b50565b6001600160401b0380821660009081526066602052604081208054600282015492939192610a8792610100909204821691166128dc565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610bd55760405162461bcd60e51b815260040161059890612885565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c076113a4565b6001600160a01b031614610c2d5760405162461bcd60e51b8152600401610598906128cc565b610c36826113c0565b610c4282826001611459565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c905760405162461bcd60e51b815260040161059890612964565b50600080516020612e4a83398151915290565b606a546001600160a01b031681338214610cd4578033604051636355073560e01b8152600401610598929190612286565b6001600160401b0383166000908152606660205260409020610cf58161153b565b50505050565b60405163e19edda160e01b815230908290600090839063e19edda190610d25908590600401611de1565b602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6691906122ac565b90506001600160a01b0381163314610d975781813360405163bb5a686560e01b8152600401610598939291906122cd565b6001600160401b0384166000908152606660205260409020610db881611590565b6040516001600160401b038616907f626d41b3e003b5c1801aaa2831a8ba5e6f1b5d68d30196e9bf22fc928792d89890600090a25050505050565b606b546001600160a01b031681338214610e24578033604051636355073560e01b8152600401610598929190612286565b6001600160401b0383166000908152606660205260409020610e4581611684565b6040516001600160401b038516907fe76447b03fa89f6733afb0da8c385e7ffae3a3a92a26544a29f1de4e5982b97090600090a250505050565b6001600160401b03808216600090815260666020526040812060048101548154600283015493949293600160a01b909204831692610ec692610100909204811691166128dc565b610a8791906128dc565b6001600160401b03808216600090815260666020526040812060048101548154600283015493949293600160a01b909204831692600160481b8204811692610f20926101009004821691166128dc565b610ec691906128dc565b6000610f346113a4565b905090565b606b546001600160a01b031681338214610f6a578033604051636355073560e01b8152600401610598929190612286565b6001600160401b0383166000908152606660205260409020610f8b816116cd565b6040516001600160401b038516907f225fdadf186a0d9a44c06a05f50a5bdede5791bab4fdb67c98246934eb67ccea90600090a250505050565b606854604051632474521560e21b81526001600160a01b039091169060009082906391d1485490610ffc90849033906004016122f5565b602060405180830381865afa158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d9190612316565b6110595760405162461bcd60e51b81526004016105989061236b565b5050606a80546001600160a01b039384166001600160a01b031991821617909155606b8054929093169116179055565b600054610100900460ff16158080156110a95750600054600160ff909116105b806110ca57506110b8306117bd565b1580156110ca575060005460ff166001145b6110e65760405162461bcd60e51b8152600401610598906129bf565b6000805460ff191660011790558015611109576000805461ff0019166101001790555b606780546001600160a01b038087166001600160a01b03199283161790925560688054868416908316179055606980549285169290911691909117905561114e6117cc565b8015610cf5576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890611190906001906129e3565b60405180910390a150505050565b606b546001600160a01b0316813382146111cf578033604051636355073560e01b8152600401610598929190612286565b6001600160401b03831660009081526066602052604090206111f0816117f5565b6040516001600160401b038516907f913823578c5ee3be58d2695ff6571ebfb455231c3d35eb1660cff0faacadd83790600090a250505050565b600480820154600160e01b900460ff16600781111561124b5761124b612101565b146112685760405162461bcd60e51b815260040161059890612a15565b610b53816008611959565b60036004820154600160e01b900460ff16600781111561129557611295612101565b146112b25760405162461bcd60e51b815260040161059890612a15565b6004810154600160a01b90046001600160401b03166000036112e65760405162461bcd60e51b815260040161059890612a54565b600481015461130590600160a01b90046001600160401b031643612a64565b6004820180546001600160401b0392909216600160a01b02600160a01b600160e01b0319909216919091179055610b53816005611959565b6000805b835181101561139857826001600160a01b031684828151811061136657611366612a97565b60200260200101516001600160a01b03160361138657600191505061139e565b8061139081612aad565b915050611341565b50600090505b92915050565b600080516020612e4a833981519152546001600160a01b031690565b606854604051632474521560e21b81526001600160a01b039091169060009082906391d14854906113f790849033906004016122f5565b602060405180830381865afa158015611414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114389190612316565b6114545760405162461bcd60e51b81526004016105989061236b565b505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561148c5761145483611bfc565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114e6575060408051601f3d908101601f191682019092526114e391810190612acb565b60015b6115025760405162461bcd60e51b815260040161059890612b37565b600080516020612e4a833981519152811461152f5760405162461bcd60e51b815260040161059890612b8d565b50611454838383611c50565b60006004820154600160e01b900460ff16600781111561155d5761155d612101565b1461157a5760405162461bcd60e51b815260040161059890612a15565b611585816000611959565b610b53816001611959565b60026004820154600160e01b900460ff1660078111156115b2576115b2612101565b146115cf5760405162461bcd60e51b815260040161059890612a15565b6004810154600160a01b90046001600160401b0316156116015760405162461bcd60e51b815260040161059890612a54565b80546002820154611623916001600160401b03610100909104811691166128dc565b6001600160401b0316436001600160401b0316106116535760405162461bcd60e51b815260040161059890612bcf565b600481018054600160a01b600160e01b031916600160a01b436001600160401b031602179055610b53816003611959565b600480820154600160e01b900460ff1660078111156116a5576116a5612101565b146116c25760405162461bcd60e51b815260040161059890612a15565b610b53816009611959565b60016004820154600160e01b900460ff1660078111156116ef576116ef612101565b148061171a575060026004820154600160e01b900460ff16600781111561171857611718612101565b145b80611744575060036004820154600160e01b900460ff16600781111561174257611742612101565b145b6117605760405162461bcd60e51b815260040161059890612a15565b80546002820154611782916001600160401b03610100909104811691166128dc565b6001600160401b0316436001600160401b0316106117b25760405162461bcd60e51b815260040161059890612c13565b610b53816006611959565b6001600160a01b03163b151590565b600054610100900460ff166117f35760405162461bcd60e51b815260040161059890612c6b565b565b60026004820154600160e01b900460ff16600781111561181757611817612101565b146118345760405162461bcd60e51b815260040161059890612a15565b6002815460ff16600381111561184c5761184c612101565b148061186d57506003815460ff16600381111561186b5761186b612101565b145b156118da576004810154815460028301546001600160401b03600160a01b9093048316926118a3926101009004811691166128dc565b6118ad91906128dc565b6001600160401b03164310156118d55760405162461bcd60e51b815260040161059890612ca3565b611952565b6004810154815460028301546001600160401b03600160a01b909304831692600160481b830481169261191692610100909104821691166128dc565b61192091906128dc565b61192a91906128dc565b6001600160401b03164310156119525760405162461bcd60e51b815260040161059890612ce4565b610b538160075b6004820154600160e01b900460ff1660008083600981111561197d5761197d612101565b036119a457600082600781111561199657611996612101565b0361199f575060015b611bb1565b60018360098111156119b8576119b8612101565b036119df5760015b8260078111156119d2576119d2612101565b0361199f57506002611bb1565b60028360098111156119f3576119f3612101565b03611a1a5760015b826007811115611a0d57611a0d612101565b0361199f57506007611bb1565b6003836009811115611a2e57611a2e612101565b03611a54576002826007811115611a4757611a47612101565b0361199f57506003611bb1565b6005836009811115611a6857611a68612101565b03611a745760036119c0565b6004836009811115611a8857611a88612101565b03611a945760036119fb565b6006836009811115611aa857611aa8612101565b03611b07576001826007811115611ac157611ac1612101565b1480611ade57506003826007811115611adc57611adc612101565b145b80611afa57506002826007811115611af857611af8612101565b145b1561199f57506006611bb1565b6007836009811115611b1b57611b1b612101565b03611b41576002826007811115611b3457611b34612101565b0361199f57506004611bb1565b6008836009811115611b5557611b55612101565b03611b7b576004826007811115611b6e57611b6e612101565b0361199f57506005611bb1565b6009836009811115611b8f57611b8f612101565b03611bb1576004826007811115611ba857611ba8612101565b03611bb1575060075b6000816007811115611bc557611bc5612101565b14610cf55760048401805482919060ff60e01b1916600160e01b836007811115611bf157611bf1612101565b021790555050505050565b611c05816117bd565b611c215760405162461bcd60e51b815260040161059890612d3e565b600080516020612e4a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611c5983611c75565b600082511180611c665750805b1561145457610cf58383611cb5565b611c7e81611bfc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610a878383604051806060016040528060278152602001612e6a602791396060600080856001600160a01b031685604051611cf29190612d94565b600060405180830381855af49150503d8060008114611d2d576040519150601f19603f3d011682016040523d82523d6000602084013e611d32565b606091505b5091509150611d4386838387611d4d565b9695505050505050565b60608315611d8a578251600003611d8357611d67856117bd565b611d835760405162461bcd60e51b815260040161059890612dd4565b5081611d94565b611d948383611d9c565b949350505050565b815115611dac5781518083602001fd5b8060405162461bcd60e51b81526004016105989190612e18565b6001600160401b031690565b611ddb81611dc6565b82525050565b6020810161139e8284611dd2565b611df881611dc6565b8114610b5357600080fd5b803561139e81611def565b6001600160a01b031690565b600061139e82611e0e565b611df881611e1a565b803561139e81611e25565b60008060408385031215611e4f57611e4f600080fd5b6000611e5b8585611e03565b9250506020611e6c85828601611e2e565b9150509250929050565b600060208284031215611e8b57611e8b600080fd5b6000611d948484611e03565b600061139e611eab611ea884611e0e565b90565b611e0e565b600061139e82611e97565b600061139e82611eb0565b611ddb81611ebb565b6020810161139e8284611ec6565b60048110610b5357600080fd5b803561139e81611edd565b80611df8565b803561139e81611ef5565b61ffff8116611df8565b803561139e81611f06565b601f01601f191690565b634e487b7160e01b600052604160045260246000fd5b611f4482611f1b565b81018181106001600160401b0382111715611f6157611f61611f25565b6040525050565b6000611f7360405190565b9050611f7f8282611f3b565b919050565b60006001600160401b03821115611f9d57611f9d611f25565b611fa682611f1b565b60200192915050565b82818337506000910152565b6000611fce611fc984611f84565b611f68565b905082815260208101848484011115611fe957611fe9600080fd5b611ff4848285611faf565b509392505050565b600082601f83011261201057612010600080fd5b8135611d94848260208601611fbb565b600080600080600080600080610100898b03121561204057612040600080fd5b600061204c8b8b611e03565b985050602061205d8b828c01611eea565b975050604061206e8b828c01611e03565b965050606061207f8b828c01611e03565b95505060806120908b828c01611e03565b94505060a06120a18b828c01611efb565b93505060c06120b28b828c01611f10565b92505060e08901356001600160401b038111156120d1576120d1600080fd5b6120dd8b828c01611ffc565b9150509295985092959890939650565b80611ddb565b6020810161139e82846120ed565b634e487b7160e01b600052602160045260246000fd5b60088110610b5357610b53612101565b80611f7f81612117565b600061139e82612127565b611ddb81612131565b6020810161139e828461213c565b60006020828403121561216857612168600080fd5b6000611d948484611e2e565b6000806040838503121561218a5761218a600080fd5b60006121968585611e2e565b92505060208301356001600160401b038111156121b5576121b5600080fd5b611e6c85828601611ffc565b611ddb81611e1a565b6020810161139e82846121c1565b60048110610b5357610b53612101565b80611f7f816121d8565b600061139e826121e8565b611ddb816121f2565b6020810161139e82846121fd565b6000806040838503121561222a5761222a600080fd5b6000611e5b8585611e2e565b60008060006060848603121561224e5761224e600080fd5b600061225a8686611e2e565b935050602061226b86828701611e2e565b925050604061227c86828701611e2e565b9150509250925092565b604081016122948285611dd2565b610a8760208301846121c1565b805161139e81611e25565b6000602082840312156122c1576122c1600080fd5b6000611d9484846122a1565b606081016122db8286611dd2565b6122e860208301856121c1565b611d9460408301846121c1565b6040810161229482856120ed565b801515611df8565b805161139e81612303565b60006020828403121561232b5761232b600080fd5b6000611d94848461230b565b601a81526000602082017913db9b1e48185b1b1bddd959081c9bdb194818d85b8818d85b1b60321b815291505b5060200190565b6020808252810161139e81612337565b634e487b7160e01b600052601160045260246000fd5b600061239c82611dc6565b91506001600160401b0382036123b4576123b461237b565b5060010190565b805161139e81611f06565b6000602082840312156123db576123db600080fd5b6000611d9484846123bb565b6018815260006020820177496e76616c6964206d61746368696e67207265706c69636160401b81529150612364565b6020808252810161139e816123e7565b600061139e61ffff8316611dc6565b611ddb81612426565b6040810161244c8285611dd2565b610a876020830184612435565b60006001600160401b0382111561247257612472611f25565b5060209081020190565b600061248a611fc984612459565b838152905060208082019084028301858111156124a9576124a9600080fd5b835b818110156124cd57806124be88826122a1565b845250602092830192016124ab565b5050509392505050565b600082601f8301126124eb576124eb600080fd5b8151611d9484826020860161247c565b63ffffffff8116611df8565b805161139e816124fb565b6000612520611fc984612459565b8381529050602080820190840283018581111561253f5761253f600080fd5b835b818110156124cd57806125548882612507565b84525060209283019201612541565b600082601f83011261257757612577600080fd5b8151611d94848260208601612512565b600080600080600060a086880312156125a2576125a2600080fd5b85516001600160401b038111156125bb576125bb600080fd5b6125c7888289016124d7565b95505060208601516001600160401b038111156125e6576125e6600080fd5b6125f2888289016124d7565b9450506040612603888289016123bb565b9350506060612614888289016123bb565b92505060808601516001600160401b0381111561263357612633600080fd5b61263f88828901612563565b9150509295509295909350565b601481526000602082017324b73b30b634b21022281039bab136b4ba3a32b960611b81529150612364565b6020808252810161139e8161264c565b634e487b7160e01b600052602260045260246000fd5b6002810460018216806126b157607f821691505b6020821081036126c3576126c3612687565b50919050565b600061139e611ea88381565b6126de836126c9565b815460001960089490940293841b1916921b91909117905550565b60006114548184846126d5565b81811015610c42576127196000826126f9565b600101612706565b601f821115611454576000818152602090206020601f850104810160208510156127485750805b61275a6020601f860104830182612706565b5050505050565b6000196008929092029190911c191690565b600061277f8383612761565b600290930290921792915050565b81516001600160401b038111156127a6576127a6611f25565b6127b0825461269d565b6127bb828285612721565b6020601f8311600181146127e957600084156127d75750858201515b6127e18582612773565b865550612843565b600085815260208120601f198616915b8281101561281957888501518255602094850194600190920191016127f9565b868310156128365784890151612832601f891682612761565b8355505b6001600288020188555050505b505050505050565b602c8152600060208201600080516020612e2a83398151915281526b19195b1959d85d1958d85b1b60a21b602082015291505b5060400190565b6020808252810161139e8161284b565b602c8152600060208201600080516020612e2a83398151915281526b6163746976652070726f787960a01b6020820152915061287e565b6020808252810161139e81612895565b60006128e782611dc6565b91506128f283611dc6565b9250508082016001600160401b0381111561139e5761139e61237b565b603881526000602082017f555550535570677261646561626c653a206d757374206e6f742062652063616c8152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6020820152915061287e565b6020808252810161139e8161290f565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b6020820152915061287e565b6020808252810161139e81612974565b600060ff821661139e565b611ddb816129cf565b6020810161139e82846129da565b600d81526000602082016c496e76616c696420737461746560981b81529150612364565b6020808252810161139e816129f1565b60188152600060208201776f6e6c792063616e20706175736564206f6e652074696d6560401b81529150612364565b6020808252810161139e81612a25565b6000612a6f82611dc6565b9150612a7a83611dc6565b9250508181036001600160401b0381111561139e5761139e61237b565b634e487b7160e01b600052603260045260246000fd5b600060001982036123b4576123b461237b565b805161139e81611ef5565b600060208284031215612ae057612ae0600080fd5b6000611d948484612ac0565b602e81526000602082017f45524331393637557067726164653a206e657720696d706c656d656e7461746981526d6f6e206973206e6f74205555505360901b6020820152915061287e565b6020808252810161139e81612aec565b602981526000602082017f45524331393637557067726164653a20756e737570706f727465642070726f788152681a58589b195555525160ba1b6020820152915061287e565b6020808252810161139e81612b47565b601b81526000602082017a30b63932b0bc903134b23234b7339631b0b713ba103830bab9b29760291b81529150612364565b6020808252810161139e81612b9d565b601d81526000602082017f62696420616c726561792073746172742c63616e27742063616e63656c00000081529150612364565b6020808252810161139e81612bdf565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b6020820152915061287e565b6020808252810161139e81612c23565b601181526000602082017042696464696e6720746f6f206561726c7960781b81529150612364565b6020808252810161139e81612c7b565b601a815260006020820179109a59191a5b99c81c195c9a5bd9081b9bdd08195e1c1a5c995960321b81529150612364565b6020808252810161139e81612cb3565b602d81526000602082017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b6020820152915061287e565b6020808252810161139e81612cf4565b60005b83811015612d69578181015183820152602001612d51565b50506000910152565b6000612d7c825190565b612d8a818560208601612d4e565b9290920192915050565b6000610a878284612d72565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529150612364565b6020808252810161139e81612da0565b6000612dee825190565b808452602084019350612e05818560208601612d4e565b612e0e81611f1b565b9093019392505050565b60208082528101610a878184612de456fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122078cc9414d6d44bdbe4038de557f5ddc013fe275e9a1b0efe87e6eb5d86d656d464736f6c63430008150033",
  "deployedBytecode": "0x60806040526004361061013c5760003560e01c806308916197146101415780630e635d7e146101775780631ed25163146101995780632620333e146101b95780632b34cbc5146101e65780632de966b01461020657806330e3dd251461024c57806334ad3b4a1461028c5780633659cfe6146102b957806338d51ea7146102d957806341f0ebb8146102f95780634f1ef2861461033557806352d1902d1461034857806352ffae6b1461035d57806392191e6c1461037d5780639247e80f1461039d5780639aa023d1146103bd5780639e5a53e5146103dd5780639f6c8a47146103fd578063aaf10f421461041d578063b1fa766c1461043f578063b6c917831461045f578063bbf83674146104a5578063c0c53b8b146104c5578063d7606cf6146104e5578063dd8fff9714610505578063e19edda114610525575b600080fd5b34801561014d57600080fd5b50606554610161906001600160401b031681565b60405161016e9190611de1565b60405180910390f35b34801561018357600080fd5b50610197610192366004611e39565b610567565b005b3480156101a557600080fd5b506101976101b4366004611e76565b610608565b3480156101c557600080fd5b50606a546101d9906001600160a01b031681565b60405161016e9190611ecf565b3480156101f257600080fd5b50610161610201366004612020565b610700565b34801561021257600080fd5b5061023f610221366004611e76565b6001600160401b031660009081526066602052604090206001015490565b60405161016e91906120f3565b34801561025857600080fd5b50610161610267366004611e76565b6001600160401b03908116600090815260666020526040902054600160881b90041690565b34801561029857600080fd5b506102ac6102a7366004611e76565b610a5f565b60405161016e9190612145565b3480156102c557600080fd5b506101976102d4366004612153565b610a8e565b3480156102e557600080fd5b506101616102f4366004611e76565b610b56565b34801561030557600080fd5b50610161610314366004611e76565b6001600160401b039081166000908152606660205260409020600201541690565b610197610343366004612174565b610b8d565b34801561035457600080fd5b5061023f610c46565b34801561036957600080fd5b50610197610378366004611e76565b610ca3565b34801561038957600080fd5b50610197610398366004611e76565b610cfb565b3480156103a957600080fd5b506101976103b8366004611e76565b610df3565b3480156103c957600080fd5b506069546101d9906001600160a01b031681565b3480156103e957600080fd5b506101616103f8366004611e76565b610e7f565b34801561040957600080fd5b50610161610418366004611e76565b610ed0565b34801561042957600080fd5b50610432610f2a565b60405161016e91906121ca565b34801561044b57600080fd5b5061019761045a366004611e76565b610f39565b34801561046b57600080fd5b5061049861047a366004611e76565b6001600160401b031660009081526066602052604090205460ff1690565b60405161016e9190612206565b3480156104b157600080fd5b506101976104c0366004612214565b610fc5565b3480156104d157600080fd5b506101976104e0366004612236565b611089565b3480156104f157600080fd5b50610197610500366004611e76565b61119e565b34801561051157600080fd5b50606b546101d9906001600160a01b031681565b34801561053157600080fd5b50610432610540366004611e76565b6001600160401b03166000908152606660205260409020600401546001600160a01b031690565b606b546001600160a01b0316823382146105a1578033604051636355073560e01b8152600401610598929190612286565b60405180910390fd5b6001600160401b03841660009081526066602052604090206105c28161122a565b6040516001600160a01b038516906001600160401b038716907f821b2f08eee92e612e3d5f8a0f9249514abb4bcb60d2c9a815c55ec2288e36c990600090a35050505050565b60405163e19edda160e01b815230908290600090839063e19edda190610632908590600401611de1565b602060405180830381865afa15801561064f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067391906122ac565b90506001600160a01b03811633146106a45781813360405163bb5a686560e01b8152600401610598939291906122cd565b6001600160401b03841660009081526066602052604090206106c581611273565b6040516001600160401b038616907fdcc3f18bbb54786ec327b109e3597e1adc0e10856ba975001e5ec6f2922aee4090600090a25050505050565b606854604051632474521560e21b81526000916001600160a01b0316907f2e7a99dcc48463ba57667732f1d19d96afa51e11db099e5c9c708076a0a080409082906391d148549061075790849033906004016122f5565b602060405180830381865afa158015610774573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107989190612316565b6107b45760405162461bcd60e51b81526004016105989061236b565b606580546001600160401b03169060006107cd83612391565b82546101009290920a6001600160401b03818102199093169183160217909155606554166000908152606660205260409081902060695491516314a41d8560e01b81529092506001600160a01b03909116906314a41d8590610833908f90600401611de1565b602060405180830381865afa158015610850573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087491906123c6565b61ffff168661ffff161061089a5760405162461bcd60e51b815260040161059890612416565b6000606960009054906101000a90046001600160a01b03166001600160a01b031663146846a88e896040518363ffffffff1660e01b81526004016108df92919061243e565b600060405180830381865afa1580156108fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109249190810190612587565b50505050905060008151111561095a5761093e813361133d565b61095a5760405162461bcd60e51b815260040161059890612677565b81548c90839060ff1916600183600381111561097857610978612101565b02179055508a8260000160016101000a8154816001600160401b0302191690836001600160401b03160217905550898260000160096101000a8154816001600160401b0302191690836001600160401b03160217905550888260000160116101000a8154816001600160401b0302191690836001600160401b0316021790555087826001018190555085826003019081610a12919061278d565b50506004810180546001600160a01b0319163317905560020180546001600160401b034381166001600160401b031990921691909117909155606554169250505098975050505050505050565b6001600160401b03811660009081526066602052604081206004810154600160e01b900460ff165b9392505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ad65760405162461bcd60e51b815260040161059890612885565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b086113a4565b6001600160a01b031614610b2e5760405162461bcd60e51b8152600401610598906128cc565b610b37816113c0565b60408051600080825260208201909252610b5391839190611459565b50565b6001600160401b0380821660009081526066602052604081208054600282015492939192610a8792610100909204821691166128dc565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610bd55760405162461bcd60e51b815260040161059890612885565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c076113a4565b6001600160a01b031614610c2d5760405162461bcd60e51b8152600401610598906128cc565b610c36826113c0565b610c4282826001611459565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c905760405162461bcd60e51b815260040161059890612964565b50600080516020612e4a83398151915290565b606a546001600160a01b031681338214610cd4578033604051636355073560e01b8152600401610598929190612286565b6001600160401b0383166000908152606660205260409020610cf58161153b565b50505050565b60405163e19edda160e01b815230908290600090839063e19edda190610d25908590600401611de1565b602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6691906122ac565b90506001600160a01b0381163314610d975781813360405163bb5a686560e01b8152600401610598939291906122cd565b6001600160401b0384166000908152606660205260409020610db881611590565b6040516001600160401b038616907f626d41b3e003b5c1801aaa2831a8ba5e6f1b5d68d30196e9bf22fc928792d89890600090a25050505050565b606b546001600160a01b031681338214610e24578033604051636355073560e01b8152600401610598929190612286565b6001600160401b0383166000908152606660205260409020610e4581611684565b6040516001600160401b038516907fe76447b03fa89f6733afb0da8c385e7ffae3a3a92a26544a29f1de4e5982b97090600090a250505050565b6001600160401b03808216600090815260666020526040812060048101548154600283015493949293600160a01b909204831692610ec692610100909204811691166128dc565b610a8791906128dc565b6001600160401b03808216600090815260666020526040812060048101548154600283015493949293600160a01b909204831692600160481b8204811692610f20926101009004821691166128dc565b610ec691906128dc565b6000610f346113a4565b905090565b606b546001600160a01b031681338214610f6a578033604051636355073560e01b8152600401610598929190612286565b6001600160401b0383166000908152606660205260409020610f8b816116cd565b6040516001600160401b038516907f225fdadf186a0d9a44c06a05f50a5bdede5791bab4fdb67c98246934eb67ccea90600090a250505050565b606854604051632474521560e21b81526001600160a01b039091169060009082906391d1485490610ffc90849033906004016122f5565b602060405180830381865afa158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d9190612316565b6110595760405162461bcd60e51b81526004016105989061236b565b5050606a80546001600160a01b039384166001600160a01b031991821617909155606b8054929093169116179055565b600054610100900460ff16158080156110a95750600054600160ff909116105b806110ca57506110b8306117bd565b1580156110ca575060005460ff166001145b6110e65760405162461bcd60e51b8152600401610598906129bf565b6000805460ff191660011790558015611109576000805461ff0019166101001790555b606780546001600160a01b038087166001600160a01b03199283161790925560688054868416908316179055606980549285169290911691909117905561114e6117cc565b8015610cf5576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890611190906001906129e3565b60405180910390a150505050565b606b546001600160a01b0316813382146111cf578033604051636355073560e01b8152600401610598929190612286565b6001600160401b03831660009081526066602052604090206111f0816117f5565b6040516001600160401b038516907f913823578c5ee3be58d2695ff6571ebfb455231c3d35eb1660cff0faacadd83790600090a250505050565b600480820154600160e01b900460ff16600781111561124b5761124b612101565b146112685760405162461bcd60e51b815260040161059890612a15565b610b53816008611959565b60036004820154600160e01b900460ff16600781111561129557611295612101565b146112b25760405162461bcd60e51b815260040161059890612a15565b6004810154600160a01b90046001600160401b03166000036112e65760405162461bcd60e51b815260040161059890612a54565b600481015461130590600160a01b90046001600160401b031643612a64565b6004820180546001600160401b0392909216600160a01b02600160a01b600160e01b0319909216919091179055610b53816005611959565b6000805b835181101561139857826001600160a01b031684828151811061136657611366612a97565b60200260200101516001600160a01b03160361138657600191505061139e565b8061139081612aad565b915050611341565b50600090505b92915050565b600080516020612e4a833981519152546001600160a01b031690565b606854604051632474521560e21b81526001600160a01b039091169060009082906391d14854906113f790849033906004016122f5565b602060405180830381865afa158015611414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114389190612316565b6114545760405162461bcd60e51b81526004016105989061236b565b505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561148c5761145483611bfc565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114e6575060408051601f3d908101601f191682019092526114e391810190612acb565b60015b6115025760405162461bcd60e51b815260040161059890612b37565b600080516020612e4a833981519152811461152f5760405162461bcd60e51b815260040161059890612b8d565b50611454838383611c50565b60006004820154600160e01b900460ff16600781111561155d5761155d612101565b1461157a5760405162461bcd60e51b815260040161059890612a15565b611585816000611959565b610b53816001611959565b60026004820154600160e01b900460ff1660078111156115b2576115b2612101565b146115cf5760405162461bcd60e51b815260040161059890612a15565b6004810154600160a01b90046001600160401b0316156116015760405162461bcd60e51b815260040161059890612a54565b80546002820154611623916001600160401b03610100909104811691166128dc565b6001600160401b0316436001600160401b0316106116535760405162461bcd60e51b815260040161059890612bcf565b600481018054600160a01b600160e01b031916600160a01b436001600160401b031602179055610b53816003611959565b600480820154600160e01b900460ff1660078111156116a5576116a5612101565b146116c25760405162461bcd60e51b815260040161059890612a15565b610b53816009611959565b60016004820154600160e01b900460ff1660078111156116ef576116ef612101565b148061171a575060026004820154600160e01b900460ff16600781111561171857611718612101565b145b80611744575060036004820154600160e01b900460ff16600781111561174257611742612101565b145b6117605760405162461bcd60e51b815260040161059890612a15565b80546002820154611782916001600160401b03610100909104811691166128dc565b6001600160401b0316436001600160401b0316106117b25760405162461bcd60e51b815260040161059890612c13565b610b53816006611959565b6001600160a01b03163b151590565b600054610100900460ff166117f35760405162461bcd60e51b815260040161059890612c6b565b565b60026004820154600160e01b900460ff16600781111561181757611817612101565b146118345760405162461bcd60e51b815260040161059890612a15565b6002815460ff16600381111561184c5761184c612101565b148061186d57506003815460ff16600381111561186b5761186b612101565b145b156118da576004810154815460028301546001600160401b03600160a01b9093048316926118a3926101009004811691166128dc565b6118ad91906128dc565b6001600160401b03164310156118d55760405162461bcd60e51b815260040161059890612ca3565b611952565b6004810154815460028301546001600160401b03600160a01b909304831692600160481b830481169261191692610100909104821691166128dc565b61192091906128dc565b61192a91906128dc565b6001600160401b03164310156119525760405162461bcd60e51b815260040161059890612ce4565b610b538160075b6004820154600160e01b900460ff1660008083600981111561197d5761197d612101565b036119a457600082600781111561199657611996612101565b0361199f575060015b611bb1565b60018360098111156119b8576119b8612101565b036119df5760015b8260078111156119d2576119d2612101565b0361199f57506002611bb1565b60028360098111156119f3576119f3612101565b03611a1a5760015b826007811115611a0d57611a0d612101565b0361199f57506007611bb1565b6003836009811115611a2e57611a2e612101565b03611a54576002826007811115611a4757611a47612101565b0361199f57506003611bb1565b6005836009811115611a6857611a68612101565b03611a745760036119c0565b6004836009811115611a8857611a88612101565b03611a945760036119fb565b6006836009811115611aa857611aa8612101565b03611b07576001826007811115611ac157611ac1612101565b1480611ade57506003826007811115611adc57611adc612101565b145b80611afa57506002826007811115611af857611af8612101565b145b1561199f57506006611bb1565b6007836009811115611b1b57611b1b612101565b03611b41576002826007811115611b3457611b34612101565b0361199f57506004611bb1565b6008836009811115611b5557611b55612101565b03611b7b576004826007811115611b6e57611b6e612101565b0361199f57506005611bb1565b6009836009811115611b8f57611b8f612101565b03611bb1576004826007811115611ba857611ba8612101565b03611bb1575060075b6000816007811115611bc557611bc5612101565b14610cf55760048401805482919060ff60e01b1916600160e01b836007811115611bf157611bf1612101565b021790555050505050565b611c05816117bd565b611c215760405162461bcd60e51b815260040161059890612d3e565b600080516020612e4a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611c5983611c75565b600082511180611c665750805b1561145457610cf58383611cb5565b611c7e81611bfc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610a878383604051806060016040528060278152602001612e6a602791396060600080856001600160a01b031685604051611cf29190612d94565b600060405180830381855af49150503d8060008114611d2d576040519150601f19603f3d011682016040523d82523d6000602084013e611d32565b606091505b5091509150611d4386838387611d4d565b9695505050505050565b60608315611d8a578251600003611d8357611d67856117bd565b611d835760405162461bcd60e51b815260040161059890612dd4565b5081611d94565b611d948383611d9c565b949350505050565b815115611dac5781518083602001fd5b8060405162461bcd60e51b81526004016105989190612e18565b6001600160401b031690565b611ddb81611dc6565b82525050565b6020810161139e8284611dd2565b611df881611dc6565b8114610b5357600080fd5b803561139e81611def565b6001600160a01b031690565b600061139e82611e0e565b611df881611e1a565b803561139e81611e25565b60008060408385031215611e4f57611e4f600080fd5b6000611e5b8585611e03565b9250506020611e6c85828601611e2e565b9150509250929050565b600060208284031215611e8b57611e8b600080fd5b6000611d948484611e03565b600061139e611eab611ea884611e0e565b90565b611e0e565b600061139e82611e97565b600061139e82611eb0565b611ddb81611ebb565b6020810161139e8284611ec6565b60048110610b5357600080fd5b803561139e81611edd565b80611df8565b803561139e81611ef5565b61ffff8116611df8565b803561139e81611f06565b601f01601f191690565b634e487b7160e01b600052604160045260246000fd5b611f4482611f1b565b81018181106001600160401b0382111715611f6157611f61611f25565b6040525050565b6000611f7360405190565b9050611f7f8282611f3b565b919050565b60006001600160401b03821115611f9d57611f9d611f25565b611fa682611f1b565b60200192915050565b82818337506000910152565b6000611fce611fc984611f84565b611f68565b905082815260208101848484011115611fe957611fe9600080fd5b611ff4848285611faf565b509392505050565b600082601f83011261201057612010600080fd5b8135611d94848260208601611fbb565b600080600080600080600080610100898b03121561204057612040600080fd5b600061204c8b8b611e03565b985050602061205d8b828c01611eea565b975050604061206e8b828c01611e03565b965050606061207f8b828c01611e03565b95505060806120908b828c01611e03565b94505060a06120a18b828c01611efb565b93505060c06120b28b828c01611f10565b92505060e08901356001600160401b038111156120d1576120d1600080fd5b6120dd8b828c01611ffc565b9150509295985092959890939650565b80611ddb565b6020810161139e82846120ed565b634e487b7160e01b600052602160045260246000fd5b60088110610b5357610b53612101565b80611f7f81612117565b600061139e82612127565b611ddb81612131565b6020810161139e828461213c565b60006020828403121561216857612168600080fd5b6000611d948484611e2e565b6000806040838503121561218a5761218a600080fd5b60006121968585611e2e565b92505060208301356001600160401b038111156121b5576121b5600080fd5b611e6c85828601611ffc565b611ddb81611e1a565b6020810161139e82846121c1565b60048110610b5357610b53612101565b80611f7f816121d8565b600061139e826121e8565b611ddb816121f2565b6020810161139e82846121fd565b6000806040838503121561222a5761222a600080fd5b6000611e5b8585611e2e565b60008060006060848603121561224e5761224e600080fd5b600061225a8686611e2e565b935050602061226b86828701611e2e565b925050604061227c86828701611e2e565b9150509250925092565b604081016122948285611dd2565b610a8760208301846121c1565b805161139e81611e25565b6000602082840312156122c1576122c1600080fd5b6000611d9484846122a1565b606081016122db8286611dd2565b6122e860208301856121c1565b611d9460408301846121c1565b6040810161229482856120ed565b801515611df8565b805161139e81612303565b60006020828403121561232b5761232b600080fd5b6000611d94848461230b565b601a81526000602082017913db9b1e48185b1b1bddd959081c9bdb194818d85b8818d85b1b60321b815291505b5060200190565b6020808252810161139e81612337565b634e487b7160e01b600052601160045260246000fd5b600061239c82611dc6565b91506001600160401b0382036123b4576123b461237b565b5060010190565b805161139e81611f06565b6000602082840312156123db576123db600080fd5b6000611d9484846123bb565b6018815260006020820177496e76616c6964206d61746368696e67207265706c69636160401b81529150612364565b6020808252810161139e816123e7565b600061139e61ffff8316611dc6565b611ddb81612426565b6040810161244c8285611dd2565b610a876020830184612435565b60006001600160401b0382111561247257612472611f25565b5060209081020190565b600061248a611fc984612459565b838152905060208082019084028301858111156124a9576124a9600080fd5b835b818110156124cd57806124be88826122a1565b845250602092830192016124ab565b5050509392505050565b600082601f8301126124eb576124eb600080fd5b8151611d9484826020860161247c565b63ffffffff8116611df8565b805161139e816124fb565b6000612520611fc984612459565b8381529050602080820190840283018581111561253f5761253f600080fd5b835b818110156124cd57806125548882612507565b84525060209283019201612541565b600082601f83011261257757612577600080fd5b8151611d94848260208601612512565b600080600080600060a086880312156125a2576125a2600080fd5b85516001600160401b038111156125bb576125bb600080fd5b6125c7888289016124d7565b95505060208601516001600160401b038111156125e6576125e6600080fd5b6125f2888289016124d7565b9450506040612603888289016123bb565b9350506060612614888289016123bb565b92505060808601516001600160401b0381111561263357612633600080fd5b61263f88828901612563565b9150509295509295909350565b601481526000602082017324b73b30b634b21022281039bab136b4ba3a32b960611b81529150612364565b6020808252810161139e8161264c565b634e487b7160e01b600052602260045260246000fd5b6002810460018216806126b157607f821691505b6020821081036126c3576126c3612687565b50919050565b600061139e611ea88381565b6126de836126c9565b815460001960089490940293841b1916921b91909117905550565b60006114548184846126d5565b81811015610c42576127196000826126f9565b600101612706565b601f821115611454576000818152602090206020601f850104810160208510156127485750805b61275a6020601f860104830182612706565b5050505050565b6000196008929092029190911c191690565b600061277f8383612761565b600290930290921792915050565b81516001600160401b038111156127a6576127a6611f25565b6127b0825461269d565b6127bb828285612721565b6020601f8311600181146127e957600084156127d75750858201515b6127e18582612773565b865550612843565b600085815260208120601f198616915b8281101561281957888501518255602094850194600190920191016127f9565b868310156128365784890151612832601f891682612761565b8355505b6001600288020188555050505b505050505050565b602c8152600060208201600080516020612e2a83398151915281526b19195b1959d85d1958d85b1b60a21b602082015291505b5060400190565b6020808252810161139e8161284b565b602c8152600060208201600080516020612e2a83398151915281526b6163746976652070726f787960a01b6020820152915061287e565b6020808252810161139e81612895565b60006128e782611dc6565b91506128f283611dc6565b9250508082016001600160401b0381111561139e5761139e61237b565b603881526000602082017f555550535570677261646561626c653a206d757374206e6f742062652063616c8152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6020820152915061287e565b6020808252810161139e8161290f565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b6020820152915061287e565b6020808252810161139e81612974565b600060ff821661139e565b611ddb816129cf565b6020810161139e82846129da565b600d81526000602082016c496e76616c696420737461746560981b81529150612364565b6020808252810161139e816129f1565b60188152600060208201776f6e6c792063616e20706175736564206f6e652074696d6560401b81529150612364565b6020808252810161139e81612a25565b6000612a6f82611dc6565b9150612a7a83611dc6565b9250508181036001600160401b0381111561139e5761139e61237b565b634e487b7160e01b600052603260045260246000fd5b600060001982036123b4576123b461237b565b805161139e81611ef5565b600060208284031215612ae057612ae0600080fd5b6000611d948484612ac0565b602e81526000602082017f45524331393637557067726164653a206e657720696d706c656d656e7461746981526d6f6e206973206e6f74205555505360901b6020820152915061287e565b6020808252810161139e81612aec565b602981526000602082017f45524331393637557067726164653a20756e737570706f727465642070726f788152681a58589b195555525160ba1b6020820152915061287e565b6020808252810161139e81612b47565b601b81526000602082017a30b63932b0bc903134b23234b7339631b0b713ba103830bab9b29760291b81529150612364565b6020808252810161139e81612b9d565b601d81526000602082017f62696420616c726561792073746172742c63616e27742063616e63656c00000081529150612364565b6020808252810161139e81612bdf565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b6020820152915061287e565b6020808252810161139e81612c23565b601181526000602082017042696464696e6720746f6f206561726c7960781b81529150612364565b6020808252810161139e81612c7b565b601a815260006020820179109a59191a5b99c81c195c9a5bd9081b9bdd08195e1c1a5c995960321b81529150612364565b6020808252810161139e81612cb3565b602d81526000602082017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b6020820152915061287e565b6020808252810161139e81612cf4565b60005b83811015612d69578181015183820152602001612d51565b50506000910152565b6000612d7c825190565b612d8a818560208601612d4e565b9290920192915050565b6000610a878284612d72565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529150612364565b6020808252810161139e81612da0565b6000612dee825190565b808452602084019350612e05818560208601612d4e565b612e0e81611f1b565b9093019392505050565b60208082528101610a878184612de456fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122078cc9414d6d44bdbe4038de557f5ddc013fe275e9a1b0efe87e6eb5d86d656d464736f6c63430008150033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
