{
    "_format": "hh-sol-artifact-1",
    "contractName": "QueueModule",
    "sourceName": "contracts/OperatorTokenomics/OperatorPolicies/QueueModule.sol",
    "abi": [
        {
            "inputs": [],
            "name": "AccessDenied",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "AccessDeniedDATATokenOnly",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "AccessDeniedNodesOnly",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "AccessDeniedOperatorOnly",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "AccessDeniedStreamrSponsorshipOnly",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "operatorTokenBalanceWei",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "minimumDelegationWei",
                    "type": "uint256"
                }
            ],
            "name": "DelegationBelowMinimum",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "DidNotReceiveReward",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "FirstEmptyQueueThenStake",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newOperatorsCutFraction",
                    "type": "uint256"
                }
            ],
            "name": "InvalidOperatorsCut",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "module",
                    "type": "address"
                },
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "ModuleCallError",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "ModuleGetError",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "NoEarnings",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "NotMyStakedSponsorship",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "operatorBalanceWei",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "minimumSelfDelegationWei",
                    "type": "uint256"
                }
            ],
            "name": "SelfDelegationTooLow",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "StakedInSponsorships",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "ZeroUndelegation",
            "type": "error"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Approval",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "delegator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "balanceWei",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "totalSupplyWei",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "dataValueWithoutEarnings",
                    "type": "uint256"
                }
            ],
            "name": "BalanceUpdate",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "delegator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amountDataWei",
                    "type": "uint256"
                }
            ],
            "name": "Delegated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "nodeAddress",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "jsonData",
                    "type": "string"
                }
            ],
            "name": "Heartbeat",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint8",
                    "name": "version",
                    "type": "uint8"
                }
            ],
            "name": "Initialized",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "valueDecreaseWei",
                    "type": "uint256"
                }
            ],
            "name": "Loss",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "metadataJsonString",
                    "type": "string"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operatorAddress",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "operatorsCutFraction",
                    "type": "uint256"
                }
            ],
            "name": "MetadataUpdated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address[]",
                    "name": "nodes",
                    "type": "address[]"
                }
            ],
            "name": "NodesSet",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "slashingAmountDataWei",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "slashingAmountInOperatorTokensWei",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "actuallySlashedInOperatorTokensWei",
                    "type": "uint256"
                }
            ],
            "name": "OperatorSlashed",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "totalStakeInSponsorshipsWei",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "dataTokenBalanceWei",
                    "type": "uint256"
                }
            ],
            "name": "OperatorValueUpdate",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "valueIncreaseWei",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "operatorsCutDataWei",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "protocolFeeDataWei",
                    "type": "uint256"
                }
            ],
            "name": "Profit",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "delegator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amountWei",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "queueIndex",
                    "type": "uint256"
                }
            ],
            "name": "QueueUpdated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "delegator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amountWei",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "queueIndex",
                    "type": "uint256"
                }
            ],
            "name": "QueuedDataPayout",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "contract Sponsorship",
                    "name": "sponsorship",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "targetOperator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "voteStartTimestamp",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "voteEndTimestamp",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "flagMetadata",
                    "type": "string"
                }
            ],
            "name": "ReviewRequest",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "previousAdminRole",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "newAdminRole",
                    "type": "bytes32"
                }
            ],
            "name": "RoleAdminChanged",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "sender",
                    "type": "address"
                }
            ],
            "name": "RoleGranted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "sender",
                    "type": "address"
                }
            ],
            "name": "RoleRevoked",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "contract Sponsorship",
                    "name": "sponsorship",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "stakedWei",
                    "type": "uint256"
                }
            ],
            "name": "StakeUpdate",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "contract Sponsorship",
                    "name": "sponsorship",
                    "type": "address"
                }
            ],
            "name": "Staked",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Transfer",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "delegator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amountDataWei",
                    "type": "uint256"
                }
            ],
            "name": "Undelegated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "contract Sponsorship",
                    "name": "sponsorship",
                    "type": "address"
                }
            ],
            "name": "Unstaked",
            "type": "event"
        },
        {
            "stateMutability": "nonpayable",
            "type": "fallback"
        },
        {
            "inputs": [],
            "name": "CONTROLLER_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "DEFAULT_ADMIN_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "OWNER_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "_payOutFirstInQueue",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "payoutComplete",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "maxIterations",
                    "type": "uint256"
                }
            ],
            "name": "_payOutQueue",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "otherOperatorAddress",
                    "type": "address"
                },
                {
                    "internalType": "contract Sponsorship[]",
                    "name": "sponsorshipAddresses",
                    "type": "address[]"
                }
            ],
            "name": "_triggerAnotherOperatorWithdraw",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "amountDataWei",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "undelegator",
                    "type": "address"
                }
            ],
            "name": "_undelegate",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                }
            ],
            "name": "allowance",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "approve",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "delegator",
                    "type": "address"
                }
            ],
            "name": "balanceInData",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "amountDataWei",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "balanceOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "decimals",
            "outputs": [
                {
                    "internalType": "uint8",
                    "name": "",
                    "type": "uint8"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "subtractedValue",
                    "type": "uint256"
                }
            ],
            "name": "decreaseAllowance",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "amountWei",
                    "type": "uint256"
                }
            ],
            "name": "delegate",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "delegationPolicy",
            "outputs": [
                {
                    "internalType": "contract IDelegationPolicy",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "exchangeRatePolicy",
            "outputs": [
                {
                    "internalType": "contract IExchangeRatePolicy",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract Sponsorship",
                    "name": "sponsorship",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "targetOperator",
                    "type": "address"
                },
                {
                    "internalType": "string",
                    "name": "flagMetadata",
                    "type": "string"
                }
            ],
            "name": "flag",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract Sponsorship",
                    "name": "sponsorship",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "maxQueuePayoutIterations",
                    "type": "uint256"
                }
            ],
            "name": "forceUnstake",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getNodeAddresses",
            "outputs": [
                {
                    "internalType": "address[]",
                    "name": "",
                    "type": "address[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                }
            ],
            "name": "getRoleAdmin",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getSponsorshipsAndEarnings",
            "outputs": [
                {
                    "internalType": "address[]",
                    "name": "addresses",
                    "type": "address[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "earnings",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint256",
                    "name": "maxAllowedEarnings",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getStreamMetadata",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "grantRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "hasRole",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "jsonData",
                    "type": "string"
                }
            ],
            "name": "heartbeat",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "addedValue",
                    "type": "uint256"
                }
            ],
            "name": "increaseAllowance",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract Sponsorship",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "indexOfSponsorships",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "tokenAddress",
                    "type": "address"
                },
                {
                    "internalType": "contract StreamrConfig",
                    "name": "config",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "ownerAddress",
                    "type": "address"
                },
                {
                    "internalType": "string",
                    "name": "operatorTokenName",
                    "type": "string"
                },
                {
                    "internalType": "string",
                    "name": "operatorMetadataJson",
                    "type": "string"
                },
                {
                    "internalType": "uint256",
                    "name": "operatorsCut",
                    "type": "uint256"
                },
                {
                    "internalType": "address[3]",
                    "name": "modules",
                    "type": "address[3]"
                }
            ],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "latestDelegationTimestamp",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "metadata",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "name",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "nodeIndex",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "nodeModule",
            "outputs": [
                {
                    "internalType": "contract INodeModule",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "nodes",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "amountSlashedDataWei",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "receivedPayoutWei",
                    "type": "uint256"
                }
            ],
            "name": "onKick",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "targetOperator",
                    "type": "address"
                }
            ],
            "name": "onReviewRequest",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "amountSlashed",
                    "type": "uint256"
                }
            ],
            "name": "onSlash",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "sender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "onTokenTransfer",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "operatorsCutFraction",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "owner",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "payOutFirstInQueue",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "payoutComplete",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "maxIterations",
                    "type": "uint256"
                }
            ],
            "name": "payOutQueue",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "queueCurrentIndex",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "queueEntryAt",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "delegator",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amountWei",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "timestamp",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "queueIsEmpty",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "queueLastIndex",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "queueModule",
            "outputs": [
                {
                    "internalType": "contract IQueueModule",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract Sponsorship",
                    "name": "sponsorship",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "targetStakeWei",
                    "type": "uint256"
                }
            ],
            "name": "reduceStakeTo",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract Sponsorship",
                    "name": "sponsorship",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "targetStakeWei",
                    "type": "uint256"
                }
            ],
            "name": "reduceStakeWithoutQueue",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "renounceRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "revokeRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract IDelegationPolicy",
                    "name": "policy",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "param",
                    "type": "uint256"
                }
            ],
            "name": "setDelegationPolicy",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract IExchangeRatePolicy",
                    "name": "policy",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "param",
                    "type": "uint256"
                }
            ],
            "name": "setExchangeRatePolicy",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address[]",
                    "name": "newNodes",
                    "type": "address[]"
                }
            ],
            "name": "setNodeAddresses",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract IUndelegationPolicy",
                    "name": "policy",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "param",
                    "type": "uint256"
                }
            ],
            "name": "setUndelegationPolicy",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract Sponsorship",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "slashedIn",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "sponsorships",
            "outputs": [
                {
                    "internalType": "contract Sponsorship",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract Sponsorship",
                    "name": "sponsorship",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amountWei",
                    "type": "uint256"
                }
            ],
            "name": "stake",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "stakeModule",
            "outputs": [
                {
                    "internalType": "contract IStakeModule",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract Sponsorship",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "stakedInto",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "streamId",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "streamRegistry",
            "outputs": [
                {
                    "internalType": "contract IStreamRegistryV4",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "streamrConfig",
            "outputs": [
                {
                    "internalType": "contract StreamrConfig",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes4",
                    "name": "interfaceId",
                    "type": "bytes4"
                }
            ],
            "name": "supportsInterface",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "symbol",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "token",
            "outputs": [
                {
                    "internalType": "contract IERC677",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "totalSlashedInSponsorshipsWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "totalStakedIntoSponsorshipsWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "totalSupply",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "transfer",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "transferFrom",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract Operator",
                    "name": "other",
                    "type": "address"
                },
                {
                    "internalType": "contract Sponsorship[]",
                    "name": "sponsorshipAddresses",
                    "type": "address[]"
                }
            ],
            "name": "triggerAnotherOperatorWithdraw",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "amountDataWei",
                    "type": "uint256"
                }
            ],
            "name": "undelegate",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "undelegationPolicy",
            "outputs": [
                {
                    "internalType": "contract IUndelegationPolicy",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "undelegationQueue",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "delegator",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "amountWei",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "timestamp",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct Operator.UndelegationQueueEntry[]",
                    "name": "queue",
                    "type": "tuple[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract Sponsorship",
                    "name": "sponsorship",
                    "type": "address"
                }
            ],
            "name": "unstake",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract Sponsorship",
                    "name": "sponsorship",
                    "type": "address"
                }
            ],
            "name": "unstakeWithoutQueue",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "metadataJsonString",
                    "type": "string"
                }
            ],
            "name": "updateMetadata",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address[]",
                    "name": "addNodes",
                    "type": "address[]"
                },
                {
                    "internalType": "address[]",
                    "name": "removeNodes",
                    "type": "address[]"
                }
            ],
            "name": "updateNodeAddresses",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newOperatorsCutFraction",
                    "type": "uint256"
                }
            ],
            "name": "updateOperatorsCutFraction",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "metadataJsonString",
                    "type": "string"
                }
            ],
            "name": "updateStreamMetadata",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "valueWithoutEarnings",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "version",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract Sponsorship",
                    "name": "sponsorship",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "targetOperator",
                    "type": "address"
                },
                {
                    "internalType": "bytes32",
                    "name": "voteData",
                    "type": "bytes32"
                }
            ],
            "name": "voteOnFlag",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract Sponsorship[]",
                    "name": "sponsorshipAddresses",
                    "type": "address[]"
                }
            ],
            "name": "withdrawEarningsFromSponsorships",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract Sponsorship[]",
                    "name": "sponsorshipAddresses",
                    "type": "address[]"
                }
            ],
            "name": "withdrawEarningsFromSponsorshipsWithoutQueue",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "withdrawnEarningsDataWei",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "bytecode": "0x608060405234801561001057600080fd5b50615228806100206000396000f3fe608060405234801561001057600080fd5b50600436106104c25760003560e01c80638473334411610278578063adc9772e1161015c578063dd62ed3e116100ce578063f2888dbb11610092578063f2888dbb14610c0d578063f3aea65014610c20578063f4350c2414610c33578063f4408e4b14610c46578063fc0c546a14610c4e578063ffff59a614610c61576104c2565b8063dd62ed3e14610bb7578063e364215314610bca578063e4d1098614610bdd578063e58378bb14610be5578063e8e658b414610bfa576104c2565b8063bc9b30c811610120578063bc9b30c814610b43578063bed6ff0914610b56578063c229918e14610b69578063d1b6861114610b71578063d547741f14610b84578063d673de4614610b97576104c2565b8063adc9772e14610a8c578063b07f3c4714610a9f578063b72cd7a814610afd578063ba2bfc0a14610b10578063bc697ec514610b30576104c2565b8063a217fddf116101f5578063a74194af116101b9578063a74194af14610a2f578063a9059cbb14610a42578063a93a019f14610a55578063a99fa31a14610a68578063aa5703ad14610a7b578063aa77fd5514610a83576104c2565b8063a217fddf146109db578063a457c2d7146109e3578063a48dca18146109f6578063a4c0ed3614610a09578063a63ed2c814610a1c576104c2565b806391d148541161023c57806391d14854146109915780639413462c146109a457806395d89b41146109ad57806398833130146109b55780639fa6dd35146109c8576104c2565b8063847333441461093c578063870ffde21461094f57806387396e3b146109585780638da5cb5b1461096b578063918b5be11461097e576104c2565b8063313ce567116103aa5780635dff6e9f1161031c57806370a08231116102e057806370a08231146108bb578063799e2590146108ce5780637a227c9f146108e15780637bf713b6146108f45780637d429385146109075780637e82fd6f14610927576104c2565b80635dff6e9f146108635780635e61bb871461087657806363d1ecf21461088257806364f1abb7146108955780636c68c0e1146108a8576104c2565b80634a178fe41161036e5780634a178fe4146107fa5780634b095c031461080d57806350d3ba9e1461082057806354fd4d5014610833578063558a15681461083a57806358fc614a14610843576104c2565b8063313ce5671461079d57806336568abe146107ac578063392f37e9146107bf57806339509351146107c7578063430457e1146107da576104c2565b80631c53c2801161044357806323b872dd1161040757806323b872dd14610715578063248a9ca31461072857806325c335491461074b5780632e9498241461075e5780632ebd89d1146107735780632f2ff15d1461078a576104c2565b80631c53c280146106a95780631d104c8c146106c957806320fed94f146106dc57806321194bd7146106ef57806321a7690714610702576104c2565b80630fd6ff491161048a5780630fd6ff491461065e57806311606010146106735780631401f70b1461067b57806314797daa1461068e57806318160ddd146106a1576104c2565b806301ffc9a7146105e257806304cbab8b1461060a57806306fdde0314610621578063092c5b3b14610636578063095ea7b31461064b575b60003660603330146104e757604051634ca8886760e01b815260040160405180910390fd5b81600084826104f7601482614412565b61050392859290614429565b61050c91614453565b60601c90506000858186610521602087614412565b9261052e93929190614429565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604051949550938493506001600160a01b0387169250610580915085906144b4565b600060405180830381855af49150503d80600081146105bb576040519150601f19603f3d011682016040523d82523d6000602084013e6105c0565b606091505b5091509150816105d257805181602001fd5b8051975060200195505050505050f35b6105f56105f03660046144d0565b610c74565b60405190151581526020015b60405180910390f35b61061360c95481565b604051908152602001610601565b610629610cab565b6040516106019190614526565b61061360008051602061515383398151915281565b6105f561065936600461454e565b610d3d565b61067161066c3660046145c2565b610d55565b005b6105f5610dcb565b610671610689366004614603565b610e16565b61067161069c366004614664565b610eb1565b609954610613565b6106bc6106b73660046146cf565b610f1e565b60405161060191906146e8565b6106716106d73660046146fc565b610f48565b6106716106ea36600461472c565b61105d565b6106716106fd3660046145c2565b6110fe565b60d0546106bc906001600160a01b031681565b6105f561072336600461474e565b61119e565b6106136107363660046146cf565b60009081526065602052604090206001015490565b61067161075936600461478f565b6111c2565b610766611228565b6040516106019190614808565b61077b611289565b6040516106019392919061481b565b6106716107983660046146fc565b6114b8565b60405160128152602001610601565b6106716107ba3660046146fc565b6114dd565b61062961155c565b6105f56107d536600461454e565b6115ea565b6106136107e8366004614603565b60d96020526000908152604090205481565b610671610808366004614966565b61160c565b61067161081b36600461454e565b6116a0565b61061361082e366004614a4f565b611702565b6003610613565b61061360d45481565b610613610851366004614603565b60d66020526000908152604090205481565b6106716108713660046146cf565b611731565b60db5460dc54146105f5565b60ce546106bc906001600160a01b031681565b6106716108a3366004614603565b611772565b6106716108b63660046146cf565b611a3e565b6106136108c9366004614603565b611a70565b60cb546106bc906001600160a01b031681565b6106716108ef366004614a8b565b611a8b565b6106716109023660046146cf565b611c19565b610613610915366004614603565b60d76020526000908152604090205481565b61092f611da4565b6040516106019190614ada565b61067161094a3660046146cf565b611ec3565b61061360ca5481565b6106716109663660046146cf565b611f02565b60d2546106bc906001600160a01b031681565b61067161098c3660046145c2565b611f2e565b6105f561099f3660046146fc565b611fc0565b61061360db5481565b610629611feb565b60d1546106bc906001600160a01b031681565b6106716109d63660046146cf565b611ffa565b610613600081565b6105f56109f136600461454e565b612098565b60cf546106bc906001600160a01b031681565b610671610a17366004614b3c565b612113565b610613610a2a366004614603565b61219a565b6106bc610a3d3660046146cf565b61221e565b6105f5610a5036600461454e565b61222e565b610671610a6336600461454e565b61223c565b610671610a76366004614b8b565b612351565b6106296125b7565b61061360dc5481565b610671610a9a36600461454e565b612633565b610ad8610aad3660046146cf565b60da602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610601565b60cc546106bc906001600160a01b031681565b610613610b1e366004614603565b60d86020526000908152604090205481565b610671610b3e36600461454e565b612695565b60cd546106bc906001600160a01b031681565b610671610b6436600461474e565b6126de565b61061361273b565b610671610b7f36600461454e565b6127c9565b610671610b923660046146fc565b612812565b610613610ba5366004614603565b60de6020526000908152604090205481565b610613610bc5366004614c8b565b612837565b60e0546106bc906001600160a01b031681565b610613612862565b61061360008051602061513383398151915281565b610671610c08366004614a4f565b612e9a565b610671610c1b366004614603565b613161565b610671610c2e36600461454e565b61319f565b610671610c41366004614a8b565b6131e8565b610629613215565b60d3546106bc906001600160a01b031681565b610671610c6f36600461454e565b613222565b60006001600160e01b03198216637965db0b60e01b1480610ca557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060609a8054610cba90614cb9565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce690614cb9565b8015610d335780601f10610d0857610100808354040283529160200191610d33565b820191906000526020600020905b815481529060010190602001808311610d1657829003601f168201915b5050505050905090565b600033610d4b81858561326b565b5060019392505050565b33600090815260de60205260408120549003610d8457604051634f1cec5f60e11b815260040160405180910390fd5b336001600160a01b03167f7432bbcdcf6009b3131a7b65f7af1fdbf79c27db5c115c1cdbcf9210298bc5f48383604051610dbf929190614d1c565b60405180910390a25050565b60cf546040805160048152602481019091526020810180516001600160e01b031663726884c360e11b179052600091610e0f916001600160a01b039091169061338f565b1515919050565b610e2e60008051602061515383398151915233611fc0565b610e4b57604051631a76708960e21b815260040160405180910390fd5b60d054604051610ead916001600160a01b03169063af9ee81d60e01b90610e769085906024016146e8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261338f565b5050565b610ec960008051602061515383398151915233611fc0565b610ee657604051631a76708960e21b815260040160405180910390fd5b60ce54604051610f17916001600160a01b031690635e2cb23f60e11b90610e76908890889088908890602401614d6e565b5050505050565b60dd8181548110610f2e57600080fd5b6000918252602090912001546001600160a01b0316905081565b81600003610f6957604051633029841360e21b815260040160405180910390fd5b60cd546001600160a01b031615610fa95760cd54604051610fa7916001600160a01b031690633608993560e21b90610e769085908790602401614d95565b505b604080516060810182526001600160a01b0383811680835260208084018781524285870190815260db8054600090815260da8552889020965187546001600160a01b031916961695909517865590516001860155516002909401939093559054835186815292830152917f8a228768f3ff659f1949219559062a5847e296af390cb8d3a02ad7ee8f2a3575910160405180910390a260db805490600061104e83614dae565b9190505550610ead6000611ec3565b33600081815260d66020526040812054900361108c5760405163012d886f60e51b815260040160405180910390fd5b82156110cb578160ca60008282546110a49190614dc7565b909155506110b3905083613430565b8160ca60008282546110c59190614412565b90915550505b60d0546040516110f8916001600160a01b031690631644f38560e31b90610e769085908790602401614d95565b50505050565b61111660008051602061515383398151915233611fc0565b61113357604051631a76708960e21b815260040160405180910390fd5b60e0546040516342617fe760e01b81526001600160a01b03909116906342617fe7906111689060df9086908690600401614e7e565b600060405180830381600087803b15801561118257600080fd5b505af1158015611196573d6000803e3d6000fd5b505050505050565b6000336111ac858285613542565b6111b78585856135b6565b506001949350505050565b6111da60008051602061515383398151915233611fc0565b6111f757604051631a76708960e21b815260040160405180910390fd5b60ce54604051611223916001600160a01b03169062b08f2560e61b90610e769086908690602401614eae565b505050565b606060dd805480602002602001604051908101604052809291908181526020018280548015610d3357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611262575050505050905090565b606080600060d5805490506001600160401b038111156112ab576112ab61487b565b6040519080825280602002602001820160405280156112d4578160200160208202803683370190505b5060d5549093506001600160401b038111156112f2576112f261487b565b60405190808252806020026020018201604052801561131b578160200160208202803683370190505b50915060005b60d55481101561141f57600060d5828154811061134057611340614ec2565b9060005260206000200160009054906101000a90046001600160a01b031690508085838151811061137357611373614ec2565b6001600160a01b0392831660209182029290920101526040516304c6e70160e21b81529082169063131b9c04906113ae9030906004016146e8565b602060405180830381865afa1580156113cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ef9190614ed8565b84838151811061140157611401614ec2565b6020908102919091010152508061141781614dae565b915050611321565b5060d154604080516315d94f8f60e31b81529051670de0b6b3a7640000926001600160a01b03169163aeca7c789160048083019260209291908290030181865afa158015611471573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114959190614ed8565b61149d61273b565b6114a79190614ef1565b6114b19190614f10565b9050909192565b6000828152606560205260409020600101546114d3816137d1565b61122383836137db565b6001600160a01b03811633146115525760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610ead8282613861565b60e1805461156990614cb9565b80601f016020809104026020016040519081016040528092919081815260200182805461159590614cb9565b80156115e25780601f106115b7576101008083540402835291602001916115e2565b820191906000526020600020905b8154815290600101906020018083116115c557829003601f168201915b505050505081565b600033610d4b8185856115fd8383612837565b6116079190614dc7565b61326b565b33600090815260de6020526040812054900361163b57604051634f1cec5f60e11b815260040160405180910390fd5b604051633f08e8e360e11b81526001600160a01b03841690637e11d1c6906116699085908590600401614f32565b600060405180830381600087803b15801561168357600080fd5b505af1158015611697573d6000803e3d6000fd5b50505050505050565b6116b860008051602061515383398151915233611fc0565b6116d557604051631a76708960e21b815260040160405180910390fd5b60d054604051611223916001600160a01b03169063d572a9cd60e01b90610e769086908690602401614d95565b60d054604051600091610ca5916001600160a01b039091169062d8aad560e51b90610e76908690602401614808565b61174960008051602061515383398151915233611fc0565b61176657604051631a76708960e21b815260040160405180910390fd5b61176f816138c8565b50565b60d160009054906101000a90046001600160a01b03166001600160a01b0316635efca0a96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e99190614f56565b6001600160a01b0316634703e001336040518263ffffffff1660e01b815260040161181491906146e8565b602060405180830381865afa158015611831573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118559190614ed8565b600003611875576040516359e9fbbf60e11b815260040160405180910390fd5b60d154604080516358c6e66160e11b8152905133926000926001600160a01b039091169163b18dccc2916004808201926020929091908290030181865afa1580156118c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e89190614ed8565b6118f29042614dc7565b9050600060d160009054906101000a90046001600160a01b03166001600160a01b031663cb85fe356040518163ffffffff1660e01b8152600401602060405180830381865afa158015611949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196d9190614ed8565b6119779083614dc7565b9050836001600160a01b0316836001600160a01b03167fe89a7bfa490a911e4a2981566a4710a51b0057109370b86784fe0764904d036f8484876001600160a01b0316637db188078a6040518263ffffffff1660e01b81526004016119dc91906146e8565b600060405180830381865afa1580156119f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a219190810190614f73565b604051611a3093929190614fe9565b60405180910390a350505050565b60cf5460405160248101839052336044820152610ead916001600160a01b031690630744132360e21b90606401610e76565b6001600160a01b031660009081526097602052604090205490565b60d3546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611abc9030906004016146e8565b602060405180830381865afa158015611ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611afd9190614ed8565b604051633a39962d60e21b81529091506001600160a01b0384169063e8e658b490611b2c908590600401614808565b600060405180830381600087803b158015611b4657600080fd5b505af1158015611b5a573d6000803e3d6000fd5b505060d3546040516370a0823160e01b8152600093506001600160a01b0390911691506370a0823190611b919030906004016146e8565b602060405180830381865afa158015611bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd29190614ed8565b90506000611be08383614412565b905080600003611c035760405163b1c5c78760e01b815260040160405180910390fd5b60d254610f17906001600160a01b031682613965565b33600081815260d660205260408120549003611c485760405163012d886f60e51b815260040160405180910390fd5b611c5182613430565b6001600160a01b038116600090815260d8602052604081208054849290611c79908490614dc7565b925050819055508160ca6000828254611c929190614dc7565b90915550506001600160a01b038116600081815260d8602090815260408083205460d7909252909120547f89dbe872fd688c751e8c5df10849155d89d1467fd56ddb92b0d0024cda2ccd7891611ce791614412565b60405190815260200160405180910390a26000805160206151d383398151915260ca5460c954611d179190614412565b60d3546040516370a0823160e01b81526001600160a01b03909116906370a0823190611d479030906004016146e8565b602060405180830381865afa158015611d64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d889190614ed8565b6040805192835260208301919091520160405180910390a15050565b6060600060dc5460db54611db89190614412565b9050806001600160401b03811115611dd257611dd261487b565b604051908082528060200260200182016040528015611e3057816020015b611e1d604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b815260200190600190039081611df05790505b50915060005b81811015611ebe5760da60008260dc54611e509190614dc7565b81526020808201929092526040908101600020815160608101835281546001600160a01b0316815260018201549381019390935260020154908201528351849083908110611ea057611ea0614ec2565b60200260200101819052508080611eb690614dae565b915050611e36565b505090565b80600003611ed65750670de0b6b3a76400005b60005b81811015610ead57611ee9612862565b600114610ead5780611efa81614dae565b915050611ed9565b60cf5460405160248101839052610ead916001600160a01b03169063211cccd160e21b90604401610e76565b611f4660008051602061515383398151915233611fc0565b611f6357604051631a76708960e21b815260040160405180910390fd5b611f6f60e183836142ef565b5060d45460d2546040516001600160a01b03909116907f4e51a007a3ec0f4dbfd0901ad752077940f47293197538644ffc302b534527d090611fb49086908690614d1c565b60405180910390a35050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060609b8054610cba90614cb9565b60d3546001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018490526064016020604051808303816000875af115801561205f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120839190615008565b5061208e3382613965565b61176f6000611f02565b600033816120a68286612837565b9050838110156121065760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401611549565b6111b7828686840361326b565b60d3546001600160a01b0316331461213e5760405163118d9d7160e11b815260040160405180910390fd5b6001600160a01b038416600090815260d6602052604090205484901561216457506110f8565b8460148390036121795750823560601c612186565b6020839003612186575082355b6121908186613965565b6111966000611f02565b60006121a582611a70565b6000036121b457506000919050565b610ca5630de731f360e31b6121c884611a70565b60cc5460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613bd4565b60d58181548110610f2e57600080fd5b600033610d4b8185856135b6565b60db5460dc5414806122e2575060d160009054906101000a90046001600160a01b03166001600160a01b031663e2e8bcd86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561229c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c09190614ed8565b60dc54600090815260da60205260409020600201546122df9190614dc7565b42105b1561231c576122ff60008051602061515383398151915233611fc0565b61231c57604051631a76708960e21b815260040160405180910390fd5b60d054604051612347916001600160a01b031690633d16f42d60e01b90610e769086906024016146e8565b50610ead81611f02565b600054610100900460ff16158080156123715750600054600160ff909116105b8061238b5750303b15801561238b575060005460ff166001145b6123ee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611549565b6000805460ff191660011790558015612411576000805461ff0019166101001790555b60d180546001600160a01b0319166001600160a01b038916179055612434613c6a565b61244c60008051602061513383398151915287613c93565b61246460008051602061515383398151915287613c93565b61248a600080516020615153833981519152600080516020615133833981519152613c9d565b60d380546001600160a01b03199081166001600160a01b038b811691909117909255835160ce80548316918416919091179055602084015160cf80548316918416919091179055604084015160d08054831691841691909117905560d280549091169188169190911790556124ff8580613ce8565b61250a600033613c93565b835161251d9060e1906020870190614373565b50612527836138c8565b60ce546040805160048152602481019091526020810180516001600160e01b031663377f1ecb60e01b179052612566916001600160a01b03169061338f565b5080156125ad576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b60e0546040516331ca7de960e11b81526060916001600160a01b031690636394fbd2906125e99060df9060040161502a565b600060405180830381865afa158015612606573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261262e9190810190614f73565b905090565b61264b60008051602061515383398151915233611fc0565b61266857604051631a76708960e21b815260040160405180910390fd5b60d054604051611223916001600160a01b03169063aa0d97b360e01b90610e769086908690602401614d95565b60006126a0816137d1565b60cc80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526110f89190632522e97360e11b90604401610e76565b33600090815260de6020526040812054900361270d57604051634f1cec5f60e11b815260040160405180910390fd5b60405163296e0f3960e21b81526001600160a01b0384169063a5b83ce4906116699085908590600401614d95565b60ca5460c95460d3546040516370a0823160e01b815260009392916001600160a01b0316906370a08231906127749030906004016146e8565b602060405180830381865afa158015612791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b59190614ed8565b6127bf9190614dc7565b61262e9190614412565b6127e160008051602061515383398151915233611fc0565b6127fe57604051631a76708960e21b815260040160405180910390fd5b61280882826116a0565b610ead6000611f02565b60008281526065602052604090206001015461282d816137d1565b6112238383613861565b6001600160a01b03918216600090815260986020908152604080832093909416825291909152205490565b60d3546040516370a0823160e01b815260009182916001600160a01b03909116906370a08231906128979030906004016146e8565b602060405180830381865afa1580156128b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d89190614ed8565b90508015806128ea575060db5460dc54145b156128f757600191505090565b60dc54600090815260da6020526040812080546001909101546001600160a01b03909116919061292e9061292961273b565b613d19565b60cc5460405160248101839052919250600091612960916001600160a01b031690632b911c0960e21b90604401610e76565b905060d160009054906101000a90046001600160a01b03166001600160a01b031663afbd6c6c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d99190614ed8565b6129e39082614dc7565b6129ec84611a70565b1015612a2f576129fb83611a70565b60cc5460405160248101839052919250612a2c916001600160a01b0390911690630de731f360e31b90604401610e76565b91505b811580612a3a575080155b15612abe5760dc8054600090815260da6020908152604080832080546001600160a01b03191681556001810184905560020183905592548351928352908201526001600160a01b03851691600080516020615193833981519152910160405180910390a260dc8054906000612aae83614dae565b9190505550600094505050505090565b818410612b3e5760dc8054600090815260da6020908152604080832080546001600160a01b03191681556001810184905560020183905592548351928352908201526001600160a01b03851691600080516020615193833981519152910160405180910390a260dc8054906000612b3483614dae565b9190505550612c4a565b60cc5460405160248101869052859350612b6d916001600160a01b031690632b911c0960e21b90604401610e76565b60dc54600090815260da60209081526040808320815160608101835281546001600160a01b03168152600182015493810184905260029091015491810191909152929350612bbc908590614412565b6040805160608101825284516001600160a01b03908116825260208083018581528785015184860190815260dc8054600090815260da8552879020955186546001600160a01b0319169086161786559151600186015551600290940193909355915483518581529283015292935091871691600080516020615193833981519152910160405180910390a250505b612c548382613d31565b60d35460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90612c869086908690600401614d95565b6020604051808303816000875af1158015612ca5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc99190615008565b50826001600160a01b03167f4ae68879209bc4b489a38251122202a3653305e3d95a27baf7a5681410c90b3883604051612d0591815260200190565b60405180910390a2826001600160a01b0316600080516020615173833981519152612d2f85611a70565b609954612d3a61273b565b6040805193845260208401929092529082015260600160405180910390a26000805160206151d383398151915260ca5460c954612d779190614412565b60d3546040516370a0823160e01b81526001600160a01b03909116906370a0823190612da79030906004016146e8565b602060405180830381865afa158015612dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de89190614ed8565b6040805192835260208301919091520160405180910390a160d3546040516370a0823160e01b81526001600160a01b03909116906370a0823190612e309030906004016146e8565b602060405180830381865afa158015612e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e719190614ed8565b1580612e80575060db5460dc54145b612e8b576000612e8e565b60015b60ff1694505050505090565b6000612ea461273b565b90506000612eb183611702565b905033612ecc60008051602061515383398151915282611fc0565b158015612eef57506001600160a01b038116600090815260de6020526040902054155b15613157576000670de0b6b3a764000060d160009054906101000a90046001600160a01b03166001600160a01b031663aeca7c786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f769190614ed8565b612f809086614ef1565b612f8a9190614f10565b905080831115613155576000670de0b6b3a764000060d160009054906101000a90046001600160a01b03166001600160a01b0316636c29b3b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ff2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130169190614ed8565b6130209086614ef1565b61302a9190614f10565b905061303581613430565b60d35460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906130679086908590600401614d95565b6020604051808303816000875af1158015613086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130aa9190615008565b506000805160206151d383398151915260ca5460c9546130ca9190614412565b60d3546040516370a0823160e01b81526001600160a01b03909116906370a08231906130fa9030906004016146e8565b602060405180830381865afa158015613117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313b9190614ed8565b6040805192835260208301919091520160405180910390a1505b505b6110f86000611f02565b61317960008051602061515383398151915233611fc0565b61319657604051631a76708960e21b815260040160405180910390fd5b61208e81610e16565b60006131aa816137d1565b60cb80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526110f89190632522e97360e11b90604401610e76565b60cf54604051611223916001600160a01b031690637a227c9f60e01b90610e76908690869060240161503d565b60df805461156990614cb9565b600061322d816137d1565b60cd80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526110f89190632522e97360e11b90604401610e76565b6001600160a01b0383166132cd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611549565b6001600160a01b03821661332e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611549565b6001600160a01b0383811660008181526098602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000806000846001600160a01b0316846040516133ac91906144b4565b600060405180830381855af49150503d80600081146133e7576040519150601f19603f3d011682016040523d82523d6000602084013e6133ec565b606091505b50915091508161342457805160000361341c57848460405163918623b760e01b8152600401611549929190614f32565b805181602001fd5b60200151949350505050565b60d254600090613448906001600160a01b0316611a70565b905080600003613456575050565b60cc5460405160248101849052600091613487916001600160a01b0390911690632b911c0960e21b90604401610e76565b905060006134958383613d19565b60d2549091506134ae906001600160a01b031682613d31565b60408051858152602081018490529081018290527ff22a8c26ad08bc6548cdae55fec4c309e15e9d2290ad7e1f9186fc20189e7a159060600160405180910390a160d2546001600160a01b031660008051602061517383398151915261351382611a70565b60995461351e61273b565b6040805193845260208401929092529082015260600160405180910390a250505050565b600061354e8484612837565b905060001981146110f857818110156135a95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401611549565b6110f8848484840361326b565b60006135c183611a70565b1590506135cf848484613e53565b60d15460408051632bef5b1b60e21b815290516000926001600160a01b03169163afbd6c6c9160048083019260209291908290030181865afa158015613619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363d9190614ed8565b90508061364986611a70565b10801561365e5750600061365c86611a70565b115b156136905761366c85611a70565b6040516324c6940760e01b8152600481019190915260248101829052604401611549565b8061369a85611a70565b10156136a95761366c84611a70565b81156136ed5760cb546001600160a01b0316156136ed5760cb546040516136eb916001600160a01b03169063217fb33b60e01b90610e769088906024016146e8565b505b60cd546001600160a01b0316156137345760cd546040516001600160a01b03878116602483015260006044830152613732921690633608993560e21b90606401610e76565b505b846001600160a01b031660008051602061517383398151915261375687611a70565b60995461376161273b565b6040805193845260208401929092529082015260600160405180910390a2836001600160a01b03166000805160206151738339815191526137a186611a70565b6099546137ac61273b565b6040805193845260208401929092529082015260600160405180910390a25050505050565b61176f8133613fec565b6137e58282611fc0565b610ead5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561381d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61386b8282611fc0565b15610ead5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60c954156138e9576040516301039eff60e71b815260040160405180910390fd5b670de0b6b3a764000081111561391557604051631e6f460160e31b815260048101829052602401611549565b60d481905560d25460405182916001600160a01b0316907f4e51a007a3ec0f4dbfd0901ad752077940f47293197538644ffc302b534527d09061395a9060e19061502a565b60405180910390a350565b60cc54604051602481018390526044810183905260009161399d916001600160a01b0390911690633a49b55760e21b90606401610e76565b90506139a98382614045565b60d2546001600160a01b03848116911614613a875760d15460408051632bef5b1b60e21b815290516000926001600160a01b03169163afbd6c6c9160048083019260209291908290030181865afa158015613a08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2c9190614ed8565b905080613a3885611a70565b1015613a475761366c84611a70565b60cb546001600160a01b031615613a855760cb54604051613a83916001600160a01b03169063217fb33b60e01b90610e769088906024016146e8565b505b505b6001600160a01b038316600081815260d9602052604090819020429055517f83b3f5ce88736f0128f880f5cac19836da52ea5c5ca7704c7b38f3b06fffd7ab90613ad49085815260200190565b60405180910390a2826001600160a01b0316600080516020615173833981519152613afe85611a70565b609954613b0961273b565b6040805193845260208401929092529082015260600160405180910390a26000805160206151d383398151915260ca5460c954613b469190614412565b60d3546040516370a0823160e01b81526001600160a01b03909116906370a0823190613b769030906004016146e8565b602060405180830381865afa158015613b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb79190614ed8565b6040805192835260208301919091520160405180910390a1505050565b6000806000306001600160a01b031684604051613bf191906144b4565b600060405180830381855afa9150503d8060008114613c2c576040519150601f19603f3d011682016040523d82523d6000602084013e613c31565b606091505b509150915081613c5f57805160000361341c578360405163029801d760e41b81526004016115499190614526565b602001519392505050565b600054610100900460ff16613c915760405162461bcd60e51b815260040161154990615061565b565b610ead82826137db565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b600054610100900460ff16613d0f5760405162461bcd60e51b815260040161154990615061565b610ead82826140f4565b6000818310613d285781613d2a565b825b9392505050565b6001600160a01b038216613d915760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401611549565b6001600160a01b03821660009081526097602052604090205481811015613e055760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401611549565b6001600160a01b03831660008181526097602090815260408083208686039055609980548790039055518581529192916000805160206151b3833981519152910160405180910390a3505050565b6001600160a01b038316613eb75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401611549565b6001600160a01b038216613f195760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401611549565b6001600160a01b03831660009081526097602052604090205481811015613f915760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401611549565b6001600160a01b0380851660008181526097602052604080822086860390559286168082529083902080548601905591516000805160206151b383398151915290613fdf9086815260200190565b60405180910390a36110f8565b613ff68282611fc0565b610ead5761400381614142565b61400e836020614154565b60405160200161401f9291906150ac565b60408051601f198184030181529082905262461bcd60e51b825261154991600401614526565b6001600160a01b03821661409b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401611549565b80609960008282546140ad9190614dc7565b90915550506001600160a01b0382166000818152609760209081526040808320805486019055518481526000805160206151b3833981519152910160405180910390a35050565b600054610100900460ff1661411b5760405162461bcd60e51b815260040161154990615061565b815161412e90609a906020850190614373565b50805161122390609b906020840190614373565b6060610ca56001600160a01b03831660145b60606000614163836002614ef1565b61416e906002614dc7565b6001600160401b038111156141855761418561487b565b6040519080825280601f01601f1916602001820160405280156141af576020820181803683370190505b509050600360fc1b816000815181106141ca576141ca614ec2565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106141f9576141f9614ec2565b60200101906001600160f81b031916908160001a905350600061421d846002614ef1565b614228906001614dc7565b90505b60018111156142a0576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061425c5761425c614ec2565b1a60f81b82828151811061427257614272614ec2565b60200101906001600160f81b031916908160001a90535060049490941c936142998161511b565b905061422b565b508315613d2a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611549565b8280546142fb90614cb9565b90600052602060002090601f01602090048101928261431d5760008555614363565b82601f106143365782800160ff19823516178555614363565b82800160010185558215614363579182015b82811115614363578235825591602001919060010190614348565b5061436f9291506143e7565b5090565b82805461437f90614cb9565b90600052602060002090601f0160209004810192826143a15760008555614363565b82601f106143ba57805160ff1916838001178555614363565b82800160010185558215614363579182015b828111156143635782518255916020019190600101906143cc565b5b8082111561436f57600081556001016143e8565b634e487b7160e01b600052601160045260246000fd5b600082821015614424576144246143fc565b500390565b6000808585111561443957600080fd5b8386111561444657600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156144805780818660140360031b1b83161692505b505092915050565b60005b838110156144a357818101518382015260200161448b565b838111156110f85750506000910152565b600082516144c6818460208701614488565b9190910192915050565b6000602082840312156144e257600080fd5b81356001600160e01b031981168114613d2a57600080fd5b60008151808452614512816020860160208601614488565b601f01601f19169290920160200192915050565b602081526000613d2a60208301846144fa565b6001600160a01b038116811461176f57600080fd5b6000806040838503121561456157600080fd5b823561456c81614539565b946020939093013593505050565b60008083601f84011261458c57600080fd5b5081356001600160401b038111156145a357600080fd5b6020830191508360208285010111156145bb57600080fd5b9250929050565b600080602083850312156145d557600080fd5b82356001600160401b038111156145eb57600080fd5b6145f78582860161457a565b90969095509350505050565b60006020828403121561461557600080fd5b8135613d2a81614539565b60008083601f84011261463257600080fd5b5081356001600160401b0381111561464957600080fd5b6020830191508360208260051b85010111156145bb57600080fd5b6000806000806040858703121561467a57600080fd5b84356001600160401b038082111561469157600080fd5b61469d88838901614620565b909650945060208701359150808211156146b657600080fd5b506146c387828801614620565b95989497509550505050565b6000602082840312156146e157600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806040838503121561470f57600080fd5b82359150602083013561472181614539565b809150509250929050565b6000806040838503121561473f57600080fd5b50508035926020909101359150565b60008060006060848603121561476357600080fd5b833561476e81614539565b9250602084013561477e81614539565b929592945050506040919091013590565b600080602083850312156147a257600080fd5b82356001600160401b038111156147b857600080fd5b6145f785828601614620565b600081518084526020808501945080840160005b838110156147fd5781516001600160a01b0316875295820195908201906001016147d8565b509495945050505050565b602081526000613d2a60208301846147c4565b60608152600061482e60608301866147c4565b82810360208481019190915285518083528682019282019060005b8181101561486557845183529383019391830191600101614849565b5050809350505050826040830152949350505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156148b3576148b361487b565b60405290565b604051601f8201601f191681016001600160401b03811182821017156148e1576148e161487b565b604052919050565b60006001600160401b038211156149025761490261487b565b50601f01601f191660200190565b600082601f83011261492157600080fd5b813561493461492f826148e9565b6148b9565b81815284602083860101111561494957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561497b57600080fd5b833561498681614539565b9250602084013561499681614539565b915060408401356001600160401b038111156149b157600080fd5b6149bd86828701614910565b9150509250925092565b600082601f8301126149d857600080fd5b813560206001600160401b038211156149f3576149f361487b565b8160051b614a028282016148b9565b9283528481018201928281019087851115614a1c57600080fd5b83870192505b84831015614a44578235614a3581614539565b82529183019190830190614a22565b979650505050505050565b600060208284031215614a6157600080fd5b81356001600160401b03811115614a7757600080fd5b614a83848285016149c7565b949350505050565b60008060408385031215614a9e57600080fd5b8235614aa981614539565b915060208301356001600160401b03811115614ac457600080fd5b614ad0858286016149c7565b9150509250929050565b602080825282518282018190526000919060409081850190868401855b82811015614b2f57815180516001600160a01b0316855286810151878601528501518585015260609093019290850190600101614af7565b5091979650505050505050565b60008060008060608587031215614b5257600080fd5b8435614b5d81614539565b93506020850135925060408501356001600160401b03811115614b7f57600080fd5b6146c38782880161457a565b600080600080600080600061012080898b031215614ba857600080fd5b8835614bb381614539565b9750602089810135614bc481614539565b975060408a0135614bd481614539565b965060608a01356001600160401b0380821115614bf057600080fd5b614bfc8d838e01614910565b975060808c0135915080821115614c1257600080fd5b50614c1f8c828d01614910565b95505060a08a013593508a60df8b0112614c3857600080fd5b614c40614891565b918a0191808c841115614c5257600080fd5b60c08c015b84811015614c77578035614c6a81614539565b8352918301918301614c57565b508094505050505092959891949750929550565b60008060408385031215614c9e57600080fd5b8235614ca981614539565b9150602083013561472181614539565b600181811c90821680614ccd57607f821691505b602082108103614ced57634e487b7160e01b600052602260045260246000fd5b50919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000614a83602083018486614cf3565b8183526000602080850194508260005b858110156147fd578135614d5381614539565b6001600160a01b031687529582019590820190600101614d40565b604081526000614d82604083018688614d30565b8281036020840152614a44818587614d30565b6001600160a01b03929092168252602082015260400190565b600060018201614dc057614dc06143fc565b5060010190565b60008219821115614dda57614dda6143fc565b500190565b8054600090600181811c9080831680614df957607f831692505b60208084108203614e1a57634e487b7160e01b600052602260045260246000fd5b83885260208801828015614e355760018114614e4657614e71565b60ff19871682528282019750614e71565b60008981526020902060005b87811015614e6b57815484820152908601908401614e52565b83019850505b5050505050505092915050565b604081526000614e916040830186614ddf565b8281036020840152614ea4818587614cf3565b9695505050505050565b602081526000614a83602083018486614d30565b634e487b7160e01b600052603260045260246000fd5b600060208284031215614eea57600080fd5b5051919050565b6000816000190483118215151615614f0b57614f0b6143fc565b500290565b600082614f2d57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b0383168152604060208201819052600090614a83908301846144fa565b600060208284031215614f6857600080fd5b8151613d2a81614539565b600060208284031215614f8557600080fd5b81516001600160401b03811115614f9b57600080fd5b8201601f81018413614fac57600080fd5b8051614fba61492f826148e9565b818152856020838501011115614fcf57600080fd5b614fe0826020830160208601614488565b95945050505050565b838152826020820152606060408201526000614fe060608301846144fa565b60006020828403121561501a57600080fd5b81518015158114613d2a57600080fd5b602081526000613d2a6020830184614ddf565b6001600160a01b0383168152604060208201819052600090614a83908301846147c4565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516150de816017850160208801614488565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161510f816028840160208801614488565b01602801949350505050565b60008161512a5761512a6143fc565b50600019019056feb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e7b765e0e932d348852a6f810bfa1ab891e259123f02db8cdcde614c570223357861514f61b5b3fcfb87564eec25aa9bdfcf29e63af898e1fd66ba0f88ef518393aba5f85865b18cdf0791e165e7ab854e1601844fe7f2439485f7951a621bf20ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef41c23f1b303a0c4396ea09a7fb42b216cd382ec1ea27c71c3e89e314be197a03a2646970667358221220157802bbbd9c1168ba4cfc69096971cabc5a8a089fb9f3c52236ac5b8d35b4ff64736f6c634300080d0033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104c25760003560e01c80638473334411610278578063adc9772e1161015c578063dd62ed3e116100ce578063f2888dbb11610092578063f2888dbb14610c0d578063f3aea65014610c20578063f4350c2414610c33578063f4408e4b14610c46578063fc0c546a14610c4e578063ffff59a614610c61576104c2565b8063dd62ed3e14610bb7578063e364215314610bca578063e4d1098614610bdd578063e58378bb14610be5578063e8e658b414610bfa576104c2565b8063bc9b30c811610120578063bc9b30c814610b43578063bed6ff0914610b56578063c229918e14610b69578063d1b6861114610b71578063d547741f14610b84578063d673de4614610b97576104c2565b8063adc9772e14610a8c578063b07f3c4714610a9f578063b72cd7a814610afd578063ba2bfc0a14610b10578063bc697ec514610b30576104c2565b8063a217fddf116101f5578063a74194af116101b9578063a74194af14610a2f578063a9059cbb14610a42578063a93a019f14610a55578063a99fa31a14610a68578063aa5703ad14610a7b578063aa77fd5514610a83576104c2565b8063a217fddf146109db578063a457c2d7146109e3578063a48dca18146109f6578063a4c0ed3614610a09578063a63ed2c814610a1c576104c2565b806391d148541161023c57806391d14854146109915780639413462c146109a457806395d89b41146109ad57806398833130146109b55780639fa6dd35146109c8576104c2565b8063847333441461093c578063870ffde21461094f57806387396e3b146109585780638da5cb5b1461096b578063918b5be11461097e576104c2565b8063313ce567116103aa5780635dff6e9f1161031c57806370a08231116102e057806370a08231146108bb578063799e2590146108ce5780637a227c9f146108e15780637bf713b6146108f45780637d429385146109075780637e82fd6f14610927576104c2565b80635dff6e9f146108635780635e61bb871461087657806363d1ecf21461088257806364f1abb7146108955780636c68c0e1146108a8576104c2565b80634a178fe41161036e5780634a178fe4146107fa5780634b095c031461080d57806350d3ba9e1461082057806354fd4d5014610833578063558a15681461083a57806358fc614a14610843576104c2565b8063313ce5671461079d57806336568abe146107ac578063392f37e9146107bf57806339509351146107c7578063430457e1146107da576104c2565b80631c53c2801161044357806323b872dd1161040757806323b872dd14610715578063248a9ca31461072857806325c335491461074b5780632e9498241461075e5780632ebd89d1146107735780632f2ff15d1461078a576104c2565b80631c53c280146106a95780631d104c8c146106c957806320fed94f146106dc57806321194bd7146106ef57806321a7690714610702576104c2565b80630fd6ff491161048a5780630fd6ff491461065e57806311606010146106735780631401f70b1461067b57806314797daa1461068e57806318160ddd146106a1576104c2565b806301ffc9a7146105e257806304cbab8b1461060a57806306fdde0314610621578063092c5b3b14610636578063095ea7b31461064b575b60003660603330146104e757604051634ca8886760e01b815260040160405180910390fd5b81600084826104f7601482614412565b61050392859290614429565b61050c91614453565b60601c90506000858186610521602087614412565b9261052e93929190614429565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604051949550938493506001600160a01b0387169250610580915085906144b4565b600060405180830381855af49150503d80600081146105bb576040519150601f19603f3d011682016040523d82523d6000602084013e6105c0565b606091505b5091509150816105d257805181602001fd5b8051975060200195505050505050f35b6105f56105f03660046144d0565b610c74565b60405190151581526020015b60405180910390f35b61061360c95481565b604051908152602001610601565b610629610cab565b6040516106019190614526565b61061360008051602061515383398151915281565b6105f561065936600461454e565b610d3d565b61067161066c3660046145c2565b610d55565b005b6105f5610dcb565b610671610689366004614603565b610e16565b61067161069c366004614664565b610eb1565b609954610613565b6106bc6106b73660046146cf565b610f1e565b60405161060191906146e8565b6106716106d73660046146fc565b610f48565b6106716106ea36600461472c565b61105d565b6106716106fd3660046145c2565b6110fe565b60d0546106bc906001600160a01b031681565b6105f561072336600461474e565b61119e565b6106136107363660046146cf565b60009081526065602052604090206001015490565b61067161075936600461478f565b6111c2565b610766611228565b6040516106019190614808565b61077b611289565b6040516106019392919061481b565b6106716107983660046146fc565b6114b8565b60405160128152602001610601565b6106716107ba3660046146fc565b6114dd565b61062961155c565b6105f56107d536600461454e565b6115ea565b6106136107e8366004614603565b60d96020526000908152604090205481565b610671610808366004614966565b61160c565b61067161081b36600461454e565b6116a0565b61061361082e366004614a4f565b611702565b6003610613565b61061360d45481565b610613610851366004614603565b60d66020526000908152604090205481565b6106716108713660046146cf565b611731565b60db5460dc54146105f5565b60ce546106bc906001600160a01b031681565b6106716108a3366004614603565b611772565b6106716108b63660046146cf565b611a3e565b6106136108c9366004614603565b611a70565b60cb546106bc906001600160a01b031681565b6106716108ef366004614a8b565b611a8b565b6106716109023660046146cf565b611c19565b610613610915366004614603565b60d76020526000908152604090205481565b61092f611da4565b6040516106019190614ada565b61067161094a3660046146cf565b611ec3565b61061360ca5481565b6106716109663660046146cf565b611f02565b60d2546106bc906001600160a01b031681565b61067161098c3660046145c2565b611f2e565b6105f561099f3660046146fc565b611fc0565b61061360db5481565b610629611feb565b60d1546106bc906001600160a01b031681565b6106716109d63660046146cf565b611ffa565b610613600081565b6105f56109f136600461454e565b612098565b60cf546106bc906001600160a01b031681565b610671610a17366004614b3c565b612113565b610613610a2a366004614603565b61219a565b6106bc610a3d3660046146cf565b61221e565b6105f5610a5036600461454e565b61222e565b610671610a6336600461454e565b61223c565b610671610a76366004614b8b565b612351565b6106296125b7565b61061360dc5481565b610671610a9a36600461454e565b612633565b610ad8610aad3660046146cf565b60da602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610601565b60cc546106bc906001600160a01b031681565b610613610b1e366004614603565b60d86020526000908152604090205481565b610671610b3e36600461454e565b612695565b60cd546106bc906001600160a01b031681565b610671610b6436600461474e565b6126de565b61061361273b565b610671610b7f36600461454e565b6127c9565b610671610b923660046146fc565b612812565b610613610ba5366004614603565b60de6020526000908152604090205481565b610613610bc5366004614c8b565b612837565b60e0546106bc906001600160a01b031681565b610613612862565b61061360008051602061513383398151915281565b610671610c08366004614a4f565b612e9a565b610671610c1b366004614603565b613161565b610671610c2e36600461454e565b61319f565b610671610c41366004614a8b565b6131e8565b610629613215565b60d3546106bc906001600160a01b031681565b610671610c6f36600461454e565b613222565b60006001600160e01b03198216637965db0b60e01b1480610ca557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060609a8054610cba90614cb9565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce690614cb9565b8015610d335780601f10610d0857610100808354040283529160200191610d33565b820191906000526020600020905b815481529060010190602001808311610d1657829003601f168201915b5050505050905090565b600033610d4b81858561326b565b5060019392505050565b33600090815260de60205260408120549003610d8457604051634f1cec5f60e11b815260040160405180910390fd5b336001600160a01b03167f7432bbcdcf6009b3131a7b65f7af1fdbf79c27db5c115c1cdbcf9210298bc5f48383604051610dbf929190614d1c565b60405180910390a25050565b60cf546040805160048152602481019091526020810180516001600160e01b031663726884c360e11b179052600091610e0f916001600160a01b039091169061338f565b1515919050565b610e2e60008051602061515383398151915233611fc0565b610e4b57604051631a76708960e21b815260040160405180910390fd5b60d054604051610ead916001600160a01b03169063af9ee81d60e01b90610e769085906024016146e8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261338f565b5050565b610ec960008051602061515383398151915233611fc0565b610ee657604051631a76708960e21b815260040160405180910390fd5b60ce54604051610f17916001600160a01b031690635e2cb23f60e11b90610e76908890889088908890602401614d6e565b5050505050565b60dd8181548110610f2e57600080fd5b6000918252602090912001546001600160a01b0316905081565b81600003610f6957604051633029841360e21b815260040160405180910390fd5b60cd546001600160a01b031615610fa95760cd54604051610fa7916001600160a01b031690633608993560e21b90610e769085908790602401614d95565b505b604080516060810182526001600160a01b0383811680835260208084018781524285870190815260db8054600090815260da8552889020965187546001600160a01b031916961695909517865590516001860155516002909401939093559054835186815292830152917f8a228768f3ff659f1949219559062a5847e296af390cb8d3a02ad7ee8f2a3575910160405180910390a260db805490600061104e83614dae565b9190505550610ead6000611ec3565b33600081815260d66020526040812054900361108c5760405163012d886f60e51b815260040160405180910390fd5b82156110cb578160ca60008282546110a49190614dc7565b909155506110b3905083613430565b8160ca60008282546110c59190614412565b90915550505b60d0546040516110f8916001600160a01b031690631644f38560e31b90610e769085908790602401614d95565b50505050565b61111660008051602061515383398151915233611fc0565b61113357604051631a76708960e21b815260040160405180910390fd5b60e0546040516342617fe760e01b81526001600160a01b03909116906342617fe7906111689060df9086908690600401614e7e565b600060405180830381600087803b15801561118257600080fd5b505af1158015611196573d6000803e3d6000fd5b505050505050565b6000336111ac858285613542565b6111b78585856135b6565b506001949350505050565b6111da60008051602061515383398151915233611fc0565b6111f757604051631a76708960e21b815260040160405180910390fd5b60ce54604051611223916001600160a01b03169062b08f2560e61b90610e769086908690602401614eae565b505050565b606060dd805480602002602001604051908101604052809291908181526020018280548015610d3357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611262575050505050905090565b606080600060d5805490506001600160401b038111156112ab576112ab61487b565b6040519080825280602002602001820160405280156112d4578160200160208202803683370190505b5060d5549093506001600160401b038111156112f2576112f261487b565b60405190808252806020026020018201604052801561131b578160200160208202803683370190505b50915060005b60d55481101561141f57600060d5828154811061134057611340614ec2565b9060005260206000200160009054906101000a90046001600160a01b031690508085838151811061137357611373614ec2565b6001600160a01b0392831660209182029290920101526040516304c6e70160e21b81529082169063131b9c04906113ae9030906004016146e8565b602060405180830381865afa1580156113cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ef9190614ed8565b84838151811061140157611401614ec2565b6020908102919091010152508061141781614dae565b915050611321565b5060d154604080516315d94f8f60e31b81529051670de0b6b3a7640000926001600160a01b03169163aeca7c789160048083019260209291908290030181865afa158015611471573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114959190614ed8565b61149d61273b565b6114a79190614ef1565b6114b19190614f10565b9050909192565b6000828152606560205260409020600101546114d3816137d1565b61122383836137db565b6001600160a01b03811633146115525760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610ead8282613861565b60e1805461156990614cb9565b80601f016020809104026020016040519081016040528092919081815260200182805461159590614cb9565b80156115e25780601f106115b7576101008083540402835291602001916115e2565b820191906000526020600020905b8154815290600101906020018083116115c557829003601f168201915b505050505081565b600033610d4b8185856115fd8383612837565b6116079190614dc7565b61326b565b33600090815260de6020526040812054900361163b57604051634f1cec5f60e11b815260040160405180910390fd5b604051633f08e8e360e11b81526001600160a01b03841690637e11d1c6906116699085908590600401614f32565b600060405180830381600087803b15801561168357600080fd5b505af1158015611697573d6000803e3d6000fd5b50505050505050565b6116b860008051602061515383398151915233611fc0565b6116d557604051631a76708960e21b815260040160405180910390fd5b60d054604051611223916001600160a01b03169063d572a9cd60e01b90610e769086908690602401614d95565b60d054604051600091610ca5916001600160a01b039091169062d8aad560e51b90610e76908690602401614808565b61174960008051602061515383398151915233611fc0565b61176657604051631a76708960e21b815260040160405180910390fd5b61176f816138c8565b50565b60d160009054906101000a90046001600160a01b03166001600160a01b0316635efca0a96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e99190614f56565b6001600160a01b0316634703e001336040518263ffffffff1660e01b815260040161181491906146e8565b602060405180830381865afa158015611831573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118559190614ed8565b600003611875576040516359e9fbbf60e11b815260040160405180910390fd5b60d154604080516358c6e66160e11b8152905133926000926001600160a01b039091169163b18dccc2916004808201926020929091908290030181865afa1580156118c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e89190614ed8565b6118f29042614dc7565b9050600060d160009054906101000a90046001600160a01b03166001600160a01b031663cb85fe356040518163ffffffff1660e01b8152600401602060405180830381865afa158015611949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196d9190614ed8565b6119779083614dc7565b9050836001600160a01b0316836001600160a01b03167fe89a7bfa490a911e4a2981566a4710a51b0057109370b86784fe0764904d036f8484876001600160a01b0316637db188078a6040518263ffffffff1660e01b81526004016119dc91906146e8565b600060405180830381865afa1580156119f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a219190810190614f73565b604051611a3093929190614fe9565b60405180910390a350505050565b60cf5460405160248101839052336044820152610ead916001600160a01b031690630744132360e21b90606401610e76565b6001600160a01b031660009081526097602052604090205490565b60d3546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611abc9030906004016146e8565b602060405180830381865afa158015611ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611afd9190614ed8565b604051633a39962d60e21b81529091506001600160a01b0384169063e8e658b490611b2c908590600401614808565b600060405180830381600087803b158015611b4657600080fd5b505af1158015611b5a573d6000803e3d6000fd5b505060d3546040516370a0823160e01b8152600093506001600160a01b0390911691506370a0823190611b919030906004016146e8565b602060405180830381865afa158015611bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd29190614ed8565b90506000611be08383614412565b905080600003611c035760405163b1c5c78760e01b815260040160405180910390fd5b60d254610f17906001600160a01b031682613965565b33600081815260d660205260408120549003611c485760405163012d886f60e51b815260040160405180910390fd5b611c5182613430565b6001600160a01b038116600090815260d8602052604081208054849290611c79908490614dc7565b925050819055508160ca6000828254611c929190614dc7565b90915550506001600160a01b038116600081815260d8602090815260408083205460d7909252909120547f89dbe872fd688c751e8c5df10849155d89d1467fd56ddb92b0d0024cda2ccd7891611ce791614412565b60405190815260200160405180910390a26000805160206151d383398151915260ca5460c954611d179190614412565b60d3546040516370a0823160e01b81526001600160a01b03909116906370a0823190611d479030906004016146e8565b602060405180830381865afa158015611d64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d889190614ed8565b6040805192835260208301919091520160405180910390a15050565b6060600060dc5460db54611db89190614412565b9050806001600160401b03811115611dd257611dd261487b565b604051908082528060200260200182016040528015611e3057816020015b611e1d604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b815260200190600190039081611df05790505b50915060005b81811015611ebe5760da60008260dc54611e509190614dc7565b81526020808201929092526040908101600020815160608101835281546001600160a01b0316815260018201549381019390935260020154908201528351849083908110611ea057611ea0614ec2565b60200260200101819052508080611eb690614dae565b915050611e36565b505090565b80600003611ed65750670de0b6b3a76400005b60005b81811015610ead57611ee9612862565b600114610ead5780611efa81614dae565b915050611ed9565b60cf5460405160248101839052610ead916001600160a01b03169063211cccd160e21b90604401610e76565b611f4660008051602061515383398151915233611fc0565b611f6357604051631a76708960e21b815260040160405180910390fd5b611f6f60e183836142ef565b5060d45460d2546040516001600160a01b03909116907f4e51a007a3ec0f4dbfd0901ad752077940f47293197538644ffc302b534527d090611fb49086908690614d1c565b60405180910390a35050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060609b8054610cba90614cb9565b60d3546001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018490526064016020604051808303816000875af115801561205f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120839190615008565b5061208e3382613965565b61176f6000611f02565b600033816120a68286612837565b9050838110156121065760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401611549565b6111b7828686840361326b565b60d3546001600160a01b0316331461213e5760405163118d9d7160e11b815260040160405180910390fd5b6001600160a01b038416600090815260d6602052604090205484901561216457506110f8565b8460148390036121795750823560601c612186565b6020839003612186575082355b6121908186613965565b6111966000611f02565b60006121a582611a70565b6000036121b457506000919050565b610ca5630de731f360e31b6121c884611a70565b60cc5460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613bd4565b60d58181548110610f2e57600080fd5b600033610d4b8185856135b6565b60db5460dc5414806122e2575060d160009054906101000a90046001600160a01b03166001600160a01b031663e2e8bcd86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561229c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c09190614ed8565b60dc54600090815260da60205260409020600201546122df9190614dc7565b42105b1561231c576122ff60008051602061515383398151915233611fc0565b61231c57604051631a76708960e21b815260040160405180910390fd5b60d054604051612347916001600160a01b031690633d16f42d60e01b90610e769086906024016146e8565b50610ead81611f02565b600054610100900460ff16158080156123715750600054600160ff909116105b8061238b5750303b15801561238b575060005460ff166001145b6123ee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611549565b6000805460ff191660011790558015612411576000805461ff0019166101001790555b60d180546001600160a01b0319166001600160a01b038916179055612434613c6a565b61244c60008051602061513383398151915287613c93565b61246460008051602061515383398151915287613c93565b61248a600080516020615153833981519152600080516020615133833981519152613c9d565b60d380546001600160a01b03199081166001600160a01b038b811691909117909255835160ce80548316918416919091179055602084015160cf80548316918416919091179055604084015160d08054831691841691909117905560d280549091169188169190911790556124ff8580613ce8565b61250a600033613c93565b835161251d9060e1906020870190614373565b50612527836138c8565b60ce546040805160048152602481019091526020810180516001600160e01b031663377f1ecb60e01b179052612566916001600160a01b03169061338f565b5080156125ad576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b60e0546040516331ca7de960e11b81526060916001600160a01b031690636394fbd2906125e99060df9060040161502a565b600060405180830381865afa158015612606573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261262e9190810190614f73565b905090565b61264b60008051602061515383398151915233611fc0565b61266857604051631a76708960e21b815260040160405180910390fd5b60d054604051611223916001600160a01b03169063aa0d97b360e01b90610e769086908690602401614d95565b60006126a0816137d1565b60cc80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526110f89190632522e97360e11b90604401610e76565b33600090815260de6020526040812054900361270d57604051634f1cec5f60e11b815260040160405180910390fd5b60405163296e0f3960e21b81526001600160a01b0384169063a5b83ce4906116699085908590600401614d95565b60ca5460c95460d3546040516370a0823160e01b815260009392916001600160a01b0316906370a08231906127749030906004016146e8565b602060405180830381865afa158015612791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b59190614ed8565b6127bf9190614dc7565b61262e9190614412565b6127e160008051602061515383398151915233611fc0565b6127fe57604051631a76708960e21b815260040160405180910390fd5b61280882826116a0565b610ead6000611f02565b60008281526065602052604090206001015461282d816137d1565b6112238383613861565b6001600160a01b03918216600090815260986020908152604080832093909416825291909152205490565b60d3546040516370a0823160e01b815260009182916001600160a01b03909116906370a08231906128979030906004016146e8565b602060405180830381865afa1580156128b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d89190614ed8565b90508015806128ea575060db5460dc54145b156128f757600191505090565b60dc54600090815260da6020526040812080546001909101546001600160a01b03909116919061292e9061292961273b565b613d19565b60cc5460405160248101839052919250600091612960916001600160a01b031690632b911c0960e21b90604401610e76565b905060d160009054906101000a90046001600160a01b03166001600160a01b031663afbd6c6c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d99190614ed8565b6129e39082614dc7565b6129ec84611a70565b1015612a2f576129fb83611a70565b60cc5460405160248101839052919250612a2c916001600160a01b0390911690630de731f360e31b90604401610e76565b91505b811580612a3a575080155b15612abe5760dc8054600090815260da6020908152604080832080546001600160a01b03191681556001810184905560020183905592548351928352908201526001600160a01b03851691600080516020615193833981519152910160405180910390a260dc8054906000612aae83614dae565b9190505550600094505050505090565b818410612b3e5760dc8054600090815260da6020908152604080832080546001600160a01b03191681556001810184905560020183905592548351928352908201526001600160a01b03851691600080516020615193833981519152910160405180910390a260dc8054906000612b3483614dae565b9190505550612c4a565b60cc5460405160248101869052859350612b6d916001600160a01b031690632b911c0960e21b90604401610e76565b60dc54600090815260da60209081526040808320815160608101835281546001600160a01b03168152600182015493810184905260029091015491810191909152929350612bbc908590614412565b6040805160608101825284516001600160a01b03908116825260208083018581528785015184860190815260dc8054600090815260da8552879020955186546001600160a01b0319169086161786559151600186015551600290940193909355915483518581529283015292935091871691600080516020615193833981519152910160405180910390a250505b612c548382613d31565b60d35460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90612c869086908690600401614d95565b6020604051808303816000875af1158015612ca5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc99190615008565b50826001600160a01b03167f4ae68879209bc4b489a38251122202a3653305e3d95a27baf7a5681410c90b3883604051612d0591815260200190565b60405180910390a2826001600160a01b0316600080516020615173833981519152612d2f85611a70565b609954612d3a61273b565b6040805193845260208401929092529082015260600160405180910390a26000805160206151d383398151915260ca5460c954612d779190614412565b60d3546040516370a0823160e01b81526001600160a01b03909116906370a0823190612da79030906004016146e8565b602060405180830381865afa158015612dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de89190614ed8565b6040805192835260208301919091520160405180910390a160d3546040516370a0823160e01b81526001600160a01b03909116906370a0823190612e309030906004016146e8565b602060405180830381865afa158015612e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e719190614ed8565b1580612e80575060db5460dc54145b612e8b576000612e8e565b60015b60ff1694505050505090565b6000612ea461273b565b90506000612eb183611702565b905033612ecc60008051602061515383398151915282611fc0565b158015612eef57506001600160a01b038116600090815260de6020526040902054155b15613157576000670de0b6b3a764000060d160009054906101000a90046001600160a01b03166001600160a01b031663aeca7c786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f769190614ed8565b612f809086614ef1565b612f8a9190614f10565b905080831115613155576000670de0b6b3a764000060d160009054906101000a90046001600160a01b03166001600160a01b0316636c29b3b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ff2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130169190614ed8565b6130209086614ef1565b61302a9190614f10565b905061303581613430565b60d35460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906130679086908590600401614d95565b6020604051808303816000875af1158015613086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130aa9190615008565b506000805160206151d383398151915260ca5460c9546130ca9190614412565b60d3546040516370a0823160e01b81526001600160a01b03909116906370a08231906130fa9030906004016146e8565b602060405180830381865afa158015613117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313b9190614ed8565b6040805192835260208301919091520160405180910390a1505b505b6110f86000611f02565b61317960008051602061515383398151915233611fc0565b61319657604051631a76708960e21b815260040160405180910390fd5b61208e81610e16565b60006131aa816137d1565b60cb80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526110f89190632522e97360e11b90604401610e76565b60cf54604051611223916001600160a01b031690637a227c9f60e01b90610e76908690869060240161503d565b60df805461156990614cb9565b600061322d816137d1565b60cd80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526110f89190632522e97360e11b90604401610e76565b6001600160a01b0383166132cd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611549565b6001600160a01b03821661332e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611549565b6001600160a01b0383811660008181526098602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000806000846001600160a01b0316846040516133ac91906144b4565b600060405180830381855af49150503d80600081146133e7576040519150601f19603f3d011682016040523d82523d6000602084013e6133ec565b606091505b50915091508161342457805160000361341c57848460405163918623b760e01b8152600401611549929190614f32565b805181602001fd5b60200151949350505050565b60d254600090613448906001600160a01b0316611a70565b905080600003613456575050565b60cc5460405160248101849052600091613487916001600160a01b0390911690632b911c0960e21b90604401610e76565b905060006134958383613d19565b60d2549091506134ae906001600160a01b031682613d31565b60408051858152602081018490529081018290527ff22a8c26ad08bc6548cdae55fec4c309e15e9d2290ad7e1f9186fc20189e7a159060600160405180910390a160d2546001600160a01b031660008051602061517383398151915261351382611a70565b60995461351e61273b565b6040805193845260208401929092529082015260600160405180910390a250505050565b600061354e8484612837565b905060001981146110f857818110156135a95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401611549565b6110f8848484840361326b565b60006135c183611a70565b1590506135cf848484613e53565b60d15460408051632bef5b1b60e21b815290516000926001600160a01b03169163afbd6c6c9160048083019260209291908290030181865afa158015613619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363d9190614ed8565b90508061364986611a70565b10801561365e5750600061365c86611a70565b115b156136905761366c85611a70565b6040516324c6940760e01b8152600481019190915260248101829052604401611549565b8061369a85611a70565b10156136a95761366c84611a70565b81156136ed5760cb546001600160a01b0316156136ed5760cb546040516136eb916001600160a01b03169063217fb33b60e01b90610e769088906024016146e8565b505b60cd546001600160a01b0316156137345760cd546040516001600160a01b03878116602483015260006044830152613732921690633608993560e21b90606401610e76565b505b846001600160a01b031660008051602061517383398151915261375687611a70565b60995461376161273b565b6040805193845260208401929092529082015260600160405180910390a2836001600160a01b03166000805160206151738339815191526137a186611a70565b6099546137ac61273b565b6040805193845260208401929092529082015260600160405180910390a25050505050565b61176f8133613fec565b6137e58282611fc0565b610ead5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561381d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61386b8282611fc0565b15610ead5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60c954156138e9576040516301039eff60e71b815260040160405180910390fd5b670de0b6b3a764000081111561391557604051631e6f460160e31b815260048101829052602401611549565b60d481905560d25460405182916001600160a01b0316907f4e51a007a3ec0f4dbfd0901ad752077940f47293197538644ffc302b534527d09061395a9060e19061502a565b60405180910390a350565b60cc54604051602481018390526044810183905260009161399d916001600160a01b0390911690633a49b55760e21b90606401610e76565b90506139a98382614045565b60d2546001600160a01b03848116911614613a875760d15460408051632bef5b1b60e21b815290516000926001600160a01b03169163afbd6c6c9160048083019260209291908290030181865afa158015613a08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2c9190614ed8565b905080613a3885611a70565b1015613a475761366c84611a70565b60cb546001600160a01b031615613a855760cb54604051613a83916001600160a01b03169063217fb33b60e01b90610e769088906024016146e8565b505b505b6001600160a01b038316600081815260d9602052604090819020429055517f83b3f5ce88736f0128f880f5cac19836da52ea5c5ca7704c7b38f3b06fffd7ab90613ad49085815260200190565b60405180910390a2826001600160a01b0316600080516020615173833981519152613afe85611a70565b609954613b0961273b565b6040805193845260208401929092529082015260600160405180910390a26000805160206151d383398151915260ca5460c954613b469190614412565b60d3546040516370a0823160e01b81526001600160a01b03909116906370a0823190613b769030906004016146e8565b602060405180830381865afa158015613b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb79190614ed8565b6040805192835260208301919091520160405180910390a1505050565b6000806000306001600160a01b031684604051613bf191906144b4565b600060405180830381855afa9150503d8060008114613c2c576040519150601f19603f3d011682016040523d82523d6000602084013e613c31565b606091505b509150915081613c5f57805160000361341c578360405163029801d760e41b81526004016115499190614526565b602001519392505050565b600054610100900460ff16613c915760405162461bcd60e51b815260040161154990615061565b565b610ead82826137db565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b600054610100900460ff16613d0f5760405162461bcd60e51b815260040161154990615061565b610ead82826140f4565b6000818310613d285781613d2a565b825b9392505050565b6001600160a01b038216613d915760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401611549565b6001600160a01b03821660009081526097602052604090205481811015613e055760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401611549565b6001600160a01b03831660008181526097602090815260408083208686039055609980548790039055518581529192916000805160206151b3833981519152910160405180910390a3505050565b6001600160a01b038316613eb75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401611549565b6001600160a01b038216613f195760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401611549565b6001600160a01b03831660009081526097602052604090205481811015613f915760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401611549565b6001600160a01b0380851660008181526097602052604080822086860390559286168082529083902080548601905591516000805160206151b383398151915290613fdf9086815260200190565b60405180910390a36110f8565b613ff68282611fc0565b610ead5761400381614142565b61400e836020614154565b60405160200161401f9291906150ac565b60408051601f198184030181529082905262461bcd60e51b825261154991600401614526565b6001600160a01b03821661409b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401611549565b80609960008282546140ad9190614dc7565b90915550506001600160a01b0382166000818152609760209081526040808320805486019055518481526000805160206151b3833981519152910160405180910390a35050565b600054610100900460ff1661411b5760405162461bcd60e51b815260040161154990615061565b815161412e90609a906020850190614373565b50805161122390609b906020840190614373565b6060610ca56001600160a01b03831660145b60606000614163836002614ef1565b61416e906002614dc7565b6001600160401b038111156141855761418561487b565b6040519080825280601f01601f1916602001820160405280156141af576020820181803683370190505b509050600360fc1b816000815181106141ca576141ca614ec2565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106141f9576141f9614ec2565b60200101906001600160f81b031916908160001a905350600061421d846002614ef1565b614228906001614dc7565b90505b60018111156142a0576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061425c5761425c614ec2565b1a60f81b82828151811061427257614272614ec2565b60200101906001600160f81b031916908160001a90535060049490941c936142998161511b565b905061422b565b508315613d2a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611549565b8280546142fb90614cb9565b90600052602060002090601f01602090048101928261431d5760008555614363565b82601f106143365782800160ff19823516178555614363565b82800160010185558215614363579182015b82811115614363578235825591602001919060010190614348565b5061436f9291506143e7565b5090565b82805461437f90614cb9565b90600052602060002090601f0160209004810192826143a15760008555614363565b82601f106143ba57805160ff1916838001178555614363565b82800160010185558215614363579182015b828111156143635782518255916020019190600101906143cc565b5b8082111561436f57600081556001016143e8565b634e487b7160e01b600052601160045260246000fd5b600082821015614424576144246143fc565b500390565b6000808585111561443957600080fd5b8386111561444657600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156144805780818660140360031b1b83161692505b505092915050565b60005b838110156144a357818101518382015260200161448b565b838111156110f85750506000910152565b600082516144c6818460208701614488565b9190910192915050565b6000602082840312156144e257600080fd5b81356001600160e01b031981168114613d2a57600080fd5b60008151808452614512816020860160208601614488565b601f01601f19169290920160200192915050565b602081526000613d2a60208301846144fa565b6001600160a01b038116811461176f57600080fd5b6000806040838503121561456157600080fd5b823561456c81614539565b946020939093013593505050565b60008083601f84011261458c57600080fd5b5081356001600160401b038111156145a357600080fd5b6020830191508360208285010111156145bb57600080fd5b9250929050565b600080602083850312156145d557600080fd5b82356001600160401b038111156145eb57600080fd5b6145f78582860161457a565b90969095509350505050565b60006020828403121561461557600080fd5b8135613d2a81614539565b60008083601f84011261463257600080fd5b5081356001600160401b0381111561464957600080fd5b6020830191508360208260051b85010111156145bb57600080fd5b6000806000806040858703121561467a57600080fd5b84356001600160401b038082111561469157600080fd5b61469d88838901614620565b909650945060208701359150808211156146b657600080fd5b506146c387828801614620565b95989497509550505050565b6000602082840312156146e157600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806040838503121561470f57600080fd5b82359150602083013561472181614539565b809150509250929050565b6000806040838503121561473f57600080fd5b50508035926020909101359150565b60008060006060848603121561476357600080fd5b833561476e81614539565b9250602084013561477e81614539565b929592945050506040919091013590565b600080602083850312156147a257600080fd5b82356001600160401b038111156147b857600080fd5b6145f785828601614620565b600081518084526020808501945080840160005b838110156147fd5781516001600160a01b0316875295820195908201906001016147d8565b509495945050505050565b602081526000613d2a60208301846147c4565b60608152600061482e60608301866147c4565b82810360208481019190915285518083528682019282019060005b8181101561486557845183529383019391830191600101614849565b5050809350505050826040830152949350505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156148b3576148b361487b565b60405290565b604051601f8201601f191681016001600160401b03811182821017156148e1576148e161487b565b604052919050565b60006001600160401b038211156149025761490261487b565b50601f01601f191660200190565b600082601f83011261492157600080fd5b813561493461492f826148e9565b6148b9565b81815284602083860101111561494957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561497b57600080fd5b833561498681614539565b9250602084013561499681614539565b915060408401356001600160401b038111156149b157600080fd5b6149bd86828701614910565b9150509250925092565b600082601f8301126149d857600080fd5b813560206001600160401b038211156149f3576149f361487b565b8160051b614a028282016148b9565b9283528481018201928281019087851115614a1c57600080fd5b83870192505b84831015614a44578235614a3581614539565b82529183019190830190614a22565b979650505050505050565b600060208284031215614a6157600080fd5b81356001600160401b03811115614a7757600080fd5b614a83848285016149c7565b949350505050565b60008060408385031215614a9e57600080fd5b8235614aa981614539565b915060208301356001600160401b03811115614ac457600080fd5b614ad0858286016149c7565b9150509250929050565b602080825282518282018190526000919060409081850190868401855b82811015614b2f57815180516001600160a01b0316855286810151878601528501518585015260609093019290850190600101614af7565b5091979650505050505050565b60008060008060608587031215614b5257600080fd5b8435614b5d81614539565b93506020850135925060408501356001600160401b03811115614b7f57600080fd5b6146c38782880161457a565b600080600080600080600061012080898b031215614ba857600080fd5b8835614bb381614539565b9750602089810135614bc481614539565b975060408a0135614bd481614539565b965060608a01356001600160401b0380821115614bf057600080fd5b614bfc8d838e01614910565b975060808c0135915080821115614c1257600080fd5b50614c1f8c828d01614910565b95505060a08a013593508a60df8b0112614c3857600080fd5b614c40614891565b918a0191808c841115614c5257600080fd5b60c08c015b84811015614c77578035614c6a81614539565b8352918301918301614c57565b508094505050505092959891949750929550565b60008060408385031215614c9e57600080fd5b8235614ca981614539565b9150602083013561472181614539565b600181811c90821680614ccd57607f821691505b602082108103614ced57634e487b7160e01b600052602260045260246000fd5b50919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000614a83602083018486614cf3565b8183526000602080850194508260005b858110156147fd578135614d5381614539565b6001600160a01b031687529582019590820190600101614d40565b604081526000614d82604083018688614d30565b8281036020840152614a44818587614d30565b6001600160a01b03929092168252602082015260400190565b600060018201614dc057614dc06143fc565b5060010190565b60008219821115614dda57614dda6143fc565b500190565b8054600090600181811c9080831680614df957607f831692505b60208084108203614e1a57634e487b7160e01b600052602260045260246000fd5b83885260208801828015614e355760018114614e4657614e71565b60ff19871682528282019750614e71565b60008981526020902060005b87811015614e6b57815484820152908601908401614e52565b83019850505b5050505050505092915050565b604081526000614e916040830186614ddf565b8281036020840152614ea4818587614cf3565b9695505050505050565b602081526000614a83602083018486614d30565b634e487b7160e01b600052603260045260246000fd5b600060208284031215614eea57600080fd5b5051919050565b6000816000190483118215151615614f0b57614f0b6143fc565b500290565b600082614f2d57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b0383168152604060208201819052600090614a83908301846144fa565b600060208284031215614f6857600080fd5b8151613d2a81614539565b600060208284031215614f8557600080fd5b81516001600160401b03811115614f9b57600080fd5b8201601f81018413614fac57600080fd5b8051614fba61492f826148e9565b818152856020838501011115614fcf57600080fd5b614fe0826020830160208601614488565b95945050505050565b838152826020820152606060408201526000614fe060608301846144fa565b60006020828403121561501a57600080fd5b81518015158114613d2a57600080fd5b602081526000613d2a6020830184614ddf565b6001600160a01b0383168152604060208201819052600090614a83908301846147c4565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516150de816017850160208801614488565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161510f816028840160208801614488565b01602801949350505050565b60008161512a5761512a6143fc565b50600019019056feb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e7b765e0e932d348852a6f810bfa1ab891e259123f02db8cdcde614c570223357861514f61b5b3fcfb87564eec25aa9bdfcf29e63af898e1fd66ba0f88ef518393aba5f85865b18cdf0791e165e7ab854e1601844fe7f2439485f7951a621bf20ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef41c23f1b303a0c4396ea09a7fb42b216cd382ec1ea27c71c3e89e314be197a03a2646970667358221220157802bbbd9c1168ba4cfc69096971cabc5a8a089fb9f3c52236ac5b8d35b4ff64736f6c634300080d0033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
