{
  "_format": "hh-sol-artifact-1",
  "contractName": "ChugSplashManager",
  "sourceName": "contracts/ChugSplashManager.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IChugSplashRegistry",
          "name": "_registry",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_create3",
          "type": "address"
        },
        {
          "internalType": "contract IGasPriceCalculator",
          "name": "_gasPriceCalculator",
          "type": "address"
        },
        {
          "internalType": "contract IAccessControl",
          "name": "_managedService",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_executionLockTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_ownerBondAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_executorPaymentPercentage",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_protocolPaymentPercentage",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "major",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minor",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "patch",
              "type": "uint256"
            }
          ],
          "internalType": "struct Version",
          "name": "_version",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "_trustedForwarder",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "ActionAlreadyExecuted",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AmountMustBeGreaterThanZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AnotherDeploymentInProgress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CallerIsNotOwner",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CallerIsNotProposer",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CallerIsNotRemoteExecutor",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CallerIsNotSelectedExecutor",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ContractDoesNotExist",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "DeploymentAlreadyClaimed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "DeploymentIsNotApproved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "DeploymentIsNotProposed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "DeploymentStateIsNotProposable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "EmptyActionsArray",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedToFinalizeUpgrade",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedToGetAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedToInitiateUpgrade",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FinalizedUpgradeTooEarly",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IncorrectNumberOfTargets",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InitiatedUpgradeTooEarly",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InsufficientExecutorDebt",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InsufficientFunds",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InsufficientOwnerBond",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidActionType",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidContractKind",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidMerkleProof",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NoActiveDeployment",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlyProxiesAllowed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ProxiesAreNotInitiated",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ProxyExportFailed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RemoteExecutionDisabled",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "SetStorageFailed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "WithdrawalFailed",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "deploymentId",
          "type": "bytes32"
        }
      ],
      "name": "ChugSplashDeploymentApproved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "deploymentId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "actionsExecuted",
          "type": "uint256"
        }
      ],
      "name": "ChugSplashDeploymentCancelled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "deploymentId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "executor",
          "type": "address"
        }
      ],
      "name": "ChugSplashDeploymentClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "deploymentId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "executor",
          "type": "address"
        }
      ],
      "name": "ChugSplashDeploymentCompleted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "deploymentId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "actionRoot",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "targetRoot",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "numActions",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "numTargets",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "numImmutableContracts",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "configUri",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "remoteExecution",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "proposer",
          "type": "address"
        }
      ],
      "name": "ChugSplashDeploymentProposed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "string",
          "name": "referenceNameHash",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "deploymentId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "referenceName",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "contractKindHash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "creationCodeWithArgsHash",
          "type": "bytes32"
        }
      ],
      "name": "ContractDeployed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "string",
          "name": "referenceNameHash",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "deploymentId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "referenceName",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "actionIndex",
          "type": "uint256"
        }
      ],
      "name": "ContractDeploymentSkipped",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "string",
          "name": "referenceNameHash",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "expectedAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "deploymentId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "referenceName",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "actionIndex",
          "type": "uint256"
        }
      ],
      "name": "DeploymentFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "ETHDeposited",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "executor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "withdrawn",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "remaining",
          "type": "uint256"
        }
      ],
      "name": "ExecutorPaymentClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "OwnerWithdrewETH",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "proposer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bool",
          "name": "isProposer",
          "type": "bool"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ProposerSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "deploymentId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "executor",
          "type": "address"
        }
      ],
      "name": "ProxiesInitiated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "proxy",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "contractKindHash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "ProxyExported",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "deploymentId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "proxy",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "projectName",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "referenceName",
          "type": "string"
        }
      ],
      "name": "ProxyUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "deploymentId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "proxy",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "executor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "actionIndex",
          "type": "uint256"
        }
      ],
      "name": "SetProxyStorage",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isManaged",
          "type": "bool"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ToggledManagedProposals",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "activeDeploymentId",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "allowManagedProposals",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_deploymentId",
          "type": "bytes32"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cancelActiveChugSplashDeployment",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimDeployment",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "claimExecutorPayment",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "create3",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_deploymentId",
          "type": "bytes32"
        }
      ],
      "name": "deployments",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum DeploymentStatus",
              "name": "status",
              "type": "uint8"
            },
            {
              "internalType": "bool[]",
              "name": "actions",
              "type": "bool[]"
            },
            {
              "internalType": "uint256",
              "name": "targets",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "actionRoot",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "targetRoot",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "numImmutableContracts",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "actionsExecuted",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "timeClaimed",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "selectedExecutor",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "remoteExecution",
              "type": "bool"
            },
            {
              "internalType": "string",
              "name": "configUri",
              "type": "string"
            }
          ],
          "internalType": "struct DeploymentState",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum ChugSplashActionType",
              "name": "actionType",
              "type": "uint8"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "address payable",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "contractKindHash",
              "type": "bytes32"
            },
            {
              "internalType": "string",
              "name": "referenceName",
              "type": "string"
            }
          ],
          "internalType": "struct RawChugSplashAction[]",
          "name": "_actions",
          "type": "tuple[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_actionIndexes",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes32[][]",
          "name": "_proofs",
          "type": "bytes32[][]"
        }
      ],
      "name": "executeActions",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "projectName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "referenceName",
              "type": "string"
            },
            {
              "internalType": "address payable",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "implementation",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "contractKindHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct ChugSplashTarget[]",
          "name": "_targets",
          "type": "tuple[]"
        },
        {
          "internalType": "bytes32[][]",
          "name": "_targetProofs",
          "type": "bytes32[][]"
        },
        {
          "components": [
            {
              "internalType": "enum ChugSplashActionType",
              "name": "actionType",
              "type": "uint8"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "address payable",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "contractKindHash",
              "type": "bytes32"
            },
            {
              "internalType": "string",
              "name": "referenceName",
              "type": "string"
            }
          ],
          "internalType": "struct RawChugSplashAction[]",
          "name": "_actions",
          "type": "tuple[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_actionIndexes",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes32[][]",
          "name": "_actionProofs",
          "type": "bytes32[][]"
        }
      ],
      "name": "executeEntireUpgrade",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "executionLockTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "executorDebt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "executorPaymentPercentage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_proxy",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_contractKindHash",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "exportProxy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "projectName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "referenceName",
              "type": "string"
            },
            {
              "internalType": "address payable",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "implementation",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "contractKindHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct ChugSplashTarget[]",
          "name": "_targets",
          "type": "tuple[]"
        },
        {
          "internalType": "bytes32[][]",
          "name": "_proofs",
          "type": "bytes32[][]"
        }
      ],
      "name": "finalizeUpgrade",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gasPriceCalculator",
      "outputs": [
        {
          "internalType": "contract IGasPriceCalculator",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_actionRoot",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_targetRoot",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_numActions",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_numTargets",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_numImmutableContracts",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "_configUri",
          "type": "string"
        },
        {
          "internalType": "bool",
          "name": "_remoteExecution",
          "type": "bool"
        }
      ],
      "name": "gaslesslyPropose",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_deploymentId",
          "type": "bytes32"
        }
      ],
      "name": "getSelectedExecutor",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "initialize",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "projectName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "referenceName",
              "type": "string"
            },
            {
              "internalType": "address payable",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "implementation",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "contractKindHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct ChugSplashTarget[]",
          "name": "_targets",
          "type": "tuple[]"
        },
        {
          "internalType": "bytes32[][]",
          "name": "_proofs",
          "type": "bytes32[][]"
        }
      ],
      "name": "initiateUpgrade",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isExecuting",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_addr",
          "type": "address"
        }
      ],
      "name": "isProposer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "forwarder",
          "type": "address"
        }
      ],
      "name": "isTrustedForwarder",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "managedService",
      "outputs": [
        {
          "internalType": "contract IAccessControl",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "organizationID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ownerBondAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_actionRoot",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_targetRoot",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_numActions",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_numTargets",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_numImmutableContracts",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "_configUri",
          "type": "string"
        },
        {
          "internalType": "bool",
          "name": "_remoteExecution",
          "type": "bool"
        }
      ],
      "name": "propose",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "proposers",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "protocolPaymentPercentage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "registry",
      "outputs": [
        {
          "internalType": "contract IChugSplashRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_proposer",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isProposer",
          "type": "bool"
        }
      ],
      "name": "setProposer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "toggleAllowManagedProposals",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalDebt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalExecutorDebt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalProtocolDebt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "major",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minor",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "patch",
              "type": "uint256"
            }
          ],
          "internalType": "struct Version",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "withdrawOwnerETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x6102006040523480156200001257600080fd5b506040516200636b3803806200636b8339810160408190526200003591620000c9565b8151602083015160409093015160809190915260a09290925260c0919091526001600160a01b0390811660e05297881661010052958716610120529386166101405291909416610160526101a093909352610180929092526101c0919091526101e052620001da565b6001600160a01b0381168114620000b457600080fd5b50565b8051620000c4816200009e565b919050565b6000806000806000806000806000808a8c03610180811215620000eb57600080fd5b8b51620000f8816200009e565b60208d0151909b506200010b816200009e565b60408d0151909a506200011e816200009e565b60608d015190995062000131816200009e565b8098505060808c0151965060a08c0151955060c08c0151945060e08c01519350606060ff19820112156200016457600080fd5b50604051606081016001600160401b03811182821017156200019657634e487b7160e01b600052604160045260246000fd5b60409081526101008d015182526101208d015160208301526101408d0151908201529150620001c96101608c01620000b7565b90509295989b9194979a5092959850565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051615fe762000384600039600081816106340152613f4c01526000818161088c0152613f0101526000818161097e01528181610f29015261112c01526000818161044f01528181611164015281816111c70152818161296b0152818161454601526145a90152600081816108e001528181610d8601528181611432015281816118410152611be30152600081816103be0152818161372d0152613e370152600081816107af0152818161408901526142d8015260008181610345015281816106a80152818161105a015281816112a301528181611596015281816117d401528181611ccf01528181611ff701528181612254015281816123a601528181612adc01528181612d5a01528181612eab0152818161317c015281816133a4015281816136cc0152818161426a015281816144db0152818161463d01528181614789015281816148790152614b16015260008181610557015281816138250152614d7d01526000611389015260006113630152600061133d0152615fe76000f3fe6080604052600436106102bf5760003560e01c80639a20ba781161016e578063ef9fe8e4116100cb578063f2fde38b1161007f578063fc7b9c1811610064578063fc7b9c1814610937578063fd95a3be1461094c578063fff81d4c1461096c57600080fd5b8063f2fde38b14610902578063f40c7c4c1461092257600080fd5b8063f220aca9116100b0578063f220aca91461087a578063f23d6142146108ae578063f2a7208d146108ce57600080fd5b8063ef9fe8e41461084a578063f03171111461086457600080fd5b8063bd8bcd8911610122578063dfba66f011610107578063dfba66f0146107fd578063e8ea2d0814610813578063e9ed9b641461082a57600080fd5b8063bd8bcd89146107d1578063c6eb84e5146107e757600080fd5b8063a53a1adf11610153578063a53a1adf1461075d578063a7882f931461077d578063bae4b95f1461079d57600080fd5b80639a20ba7814610728578063a47d08011461073d57600080fd5b8063715018a61161021c57806379e6f49a116101d05780638da5cb5b116101b55780638da5cb5b146106ca57806391e219ae146106e85780639449a44f1461070857600080fd5b806379e6f49a146106765780637b1039991461069657600080fd5b806374ec29a01161020157806374ec29a0146106025780637521120f1461062257806375cd65e11461065657600080fd5b8063715018a6146105c057806373b4a738146105d557600080fd5b80634731d48c1161027357806354fd4d501161025857806354fd4d5014610503578063572b6c051461053a57806361f5499f1461058757600080fd5b80634731d48c146104d95780635229c975146104ee57600080fd5b80632e0a6960116102a45780632e0a69601461043d578063374040171461047f578063439fab91146104ac57600080fd5b80630523a04c146103ac57806318177497146103fd57600080fd5b366103a757346102cd6109a0565b6001600160a01b03167f6c703791f399558807424f489ccd811c72b4ff0b74af547264fad7c646776df060405160405180910390a360405163ea0a523760e01b815260206004820152600c60248201527f4554484465706f7369746564000000000000000000000000000000000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b15801561039157600080fd5b505af11580156103a5573d6000803e3d6000fd5b005b600080fd5b3480156103b857600080fd5b506103e07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561040957600080fd5b5061042d610418366004614e9e565b60ca6020526000908152604090205460ff1681565b60405190151581526020016103f4565b34801561044957600080fd5b506104717f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016103f4565b34801561048b57600080fd5b5061049f61049a366004614ebb565b6109af565b6040516103f49190614fac565b3480156104b857600080fd5b506104cc6104c736600461517b565b610bc6565b6040516103f491906151b8565b3480156104e557600080fd5b506103a5610d84565b3480156104fa57600080fd5b506103a56110c1565b34801561050f57600080fd5b5061051861130c565b60408051825181526020808401519082015291810151908201526060016103f4565b34801561054657600080fd5b5061042d610555366004614e9e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561059357600080fd5b506103e06105a2366004614ebb565b600090815260cb60205260409020600801546001600160a01b031690565b3480156105cc57600080fd5b506103a56113b0565b3480156105e157600080fd5b506104716105f0366004614e9e565b60c96020526000908152604090205481565b34801561060e57600080fd5b5061042d61061d366004614e9e565b6113c4565b34801561062e57600080fd5b506104717f000000000000000000000000000000000000000000000000000000000000000081565b34801561066257600080fd5b506103a56106713660046151db565b6114de565b34801561068257600080fd5b506103a5610691366004614ebb565b61183f565b3480156106a257600080fd5b506103e07f000000000000000000000000000000000000000000000000000000000000000081565b3480156106d657600080fd5b506033546001600160a01b03166103e0565b3480156106f457600080fd5b506103a56107033660046155b0565b611d38565b34801561071457600080fd5b506103a5610723366004615682565b611d5e565b34801561073457600080fd5b506103a56122e5565b34801561074957600080fd5b506103a56107583660046156e6565b61240d565b34801561076957600080fd5b506103a5610778366004614ebb565b61292b565b34801561078957600080fd5b506103a561079836600461577c565b612b13565b3480156107a957600080fd5b506103e07f000000000000000000000000000000000000000000000000000000000000000081565b3480156107dd57600080fd5b5061047160cf5481565b3480156107f357600080fd5b5061047160ce5481565b34801561080957600080fd5b5061047160cd5481565b34801561081f57600080fd5b5060cd54151561042d565b34801561083657600080fd5b506103a56108453660046157fe565b612e33565b34801561085657600080fd5b5060d05461042d9060ff1681565b34801561087057600080fd5b5061047160cc5481565b34801561088657600080fd5b506104717f000000000000000000000000000000000000000000000000000000000000000081565b3480156108ba57600080fd5b506103a56108c9366004615682565b612f1b565b3480156108da57600080fd5b506103e07f000000000000000000000000000000000000000000000000000000000000000081565b34801561090e57600080fd5b506103a561091d366004614e9e565b6134a7565b34801561092e57600080fd5b506103a5613537565b34801561094357600080fd5b50610471613703565b34801561095857600080fd5b506103a561096736600461577c565b613715565b34801561097857600080fd5b506104717f000000000000000000000000000000000000000000000000000000000000000081565b60006109aa613821565b905090565b604080516101608101825260008082526060602083018190529282018190528282018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820152610140810191909152600082815260cb602052604090819020815161016081019092528054829060ff166006811115610a3957610a39614ed4565b6006811115610a4a57610a4a614ed4565b815260200160018201805480602002602001604051908101604052809291908181526020018280548015610abd57602002820191906000526020600020906000905b825461010083900a900460ff161515815260206001928301818104948501949093039092029101808411610a8c5790505b505050918352505060028201546020820152600382015460408201526004820154606082015260058201546080820152600682015460a0820152600782015460c082015260088201546001600160a01b03811660e0830152600160a01b900460ff16151561010082015260098201805461012090920191610b3d90615837565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6990615837565b8015610bb65780601f10610b8b57610100808354040283529160200191610bb6565b820191906000526020600020905b815481529060010190602001808311610b9957829003601f168201915b5050505050815250509050919050565b600054606090610100900460ff1615808015610be95750600054600160ff909116105b80610c035750303b158015610c03575060005460ff166001145b610c7a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610cba57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b600080600085806020019051810190610cd39190615884565b60cc82905560d0805460ff191682151517905591945092509050610cf5613883565b610cfd613908565b610d068361398d565b6040518060200160405280600081525094505050508015610d7e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166391d148547f9e982efbc2164e40fcd14da9a0408a971e4224cb50a113d83b1c90cd8c1434dd610ddc6109a0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015610e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6291906158bc565b610e98576040517f6696fa8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cd54610ed1576040517f5f0825a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cd54600090815260cb602052604090206008810154600160a01b900460ff16610f27576040517f0bb3291200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008160070154610f579190615908565b4211610f8f576040517f7ea3c87d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b426007820155610f9d6109a0565b6008820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055610fdf6109a0565b6001600160a01b031660cd547fdef501073bf641ebc9528324e0366c9737f17823fa009980717ec55df3b05f2060405160405180910390a360405163ea0a523760e01b815260206004820152601b60248201527f4368756753706c6173684465706c6f796d656e74436c61696d6564000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b1580156110a657600080fd5b505af11580156110ba573d6000803e3d6000fd5b5050505050565b6110c96139f7565b60cd54611102576040517f5f0825a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cd54600090815260cb602052604090206008810154600160a01b900460ff16801561115d5750427f0000000000000000000000000000000000000000000000000000000000000000826007015461115a9190615908565b10155b156111fd577f000000000000000000000000000000000000000000000000000000000000000060c9600061118f6109a0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546111be9190615908565b925050819055507f000000000000000000000000000000000000000000000000000000000000000060ce60008282546111f79190615908565b90915550505b60cd80546000909155815460ff191660051782556112196109a0565b6001600160a01b0316817f6e376540abc69ea2aba618baf9970a40a410209797848ac685c0d5e321536c96846006015460405161125891815260200190565b60405180910390a360405163ea0a523760e01b815260206004820152601d60248201527f4368756753706c6173684465706c6f796d656e7443616e63656c6c656400000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a5237906064015b600060405180830381600087803b1580156112f057600080fd5b505af1158015611304573d6000803e3d6000fd5b505050505050565b61133060405180606001604052806000815260200160008152602001600081525090565b60405180606001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f0000000000000000000000000000000000000000000000000000000000000000815250905090565b6113b86139f7565b6113c2600061398d565b565b60d05460009060ff16801561149d57506040517f91d148540000000000000000000000000000000000000000000000000000000081527f1036d397acc4220751130e8fcc4ce6cb991a324073d229f09e751ac8624f19c060048201526001600160a01b0383811660248301527f000000000000000000000000000000000000000000000000000000000000000016906391d1485490604401602060405180830381865afa158015611479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149d91906158bc565b806114c057506001600160a01b038216600090815260ca602052604090205460ff165b806114d857506033546001600160a01b038381169116145b92915050565b6114e66139f7565b826001600160a01b03163b60000361152a576040517f58796ea800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cd5415611564576040517f318cf47900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f72c6838f000000000000000000000000000000000000000000000000000000008152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906372c6838f90602401602060405180830381865afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190615920565b90506001600160a01b03811661164b576040517f6602115a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b0383811682528491908616907f6828050ff1390d9c84304db69d7669bdc13a1df9715cedf6fe1eeb0bec3843ea9060200160405180910390a36040516001600160a01b03858116602483015283811660448301526000919083169060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7eff275e0000000000000000000000000000000000000000000000000000000017905251611716919061593d565b600060405180830381855af49150503d8060008114611751576040519150601f19603f3d011682016040523d82523d6000602084013e611756565b606091505b5050905080611791576040517fed9af69100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405163ea0a523760e01b815260206004820152600d60248201527f50726f78794578706f727465640000000000000000000000000000000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b15801561182057600080fd5b505af1158015611834573d6000803e3d6000fd5b505050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166391d148547f9e982efbc2164e40fcd14da9a0408a971e4224cb50a113d83b1c90cd8c1434dd6118976109a0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa1580156118f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191d91906158bc565b611953576040517f6696fa8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060000361198d576040517f5e85ae7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060c9600061199a6109a0565b6001600160a01b03166001600160a01b031681526020019081526020016000205410156119f3576040517fc70453ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4760cf5482611a029190615908565b1115611a3a576040517f356680b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060c96000611a476109a0565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254611a769190615959565b925050819055508060ce6000828254611a8f9190615959565b90915550611a9d90506109a0565b6001600160a01b03167fba98915499c19898a23f510deeaa915637d1b5d537df51dc105d01b8e69be7e28260c96000611ad46109a0565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051611b0c929190918252602082015260400190565b60405180910390a26000611b1e6109a0565b604080516000815260208101918290526001600160a01b0392909216918491611b47919061593d565b60006040518083038185875af1925050503d8060008114611b84576040519150601f19603f3d011682016040523d82523d6000602084013e611b89565b606091505b5050905080611bc4576040517f27fcd9d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cf546040805160008082526020820192839052926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929091611c0f9161593d565b60006040518083038185875af1925050503d8060008114611c4c576040519150601f19603f3d011682016040523d82523d6000602084013e611c51565b606091505b5050905080611c8c576040517f27fcd9d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405163ea0a523760e01b815260206004820152601660248201527f4578656375746f725061796d656e74436c61696d65640000000000000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b158015611d1b57600080fd5b505af1158015611d2f573d6000803e3d6000fd5b50505050505050565b611d428585611d5e565b825115611d5457611d5483838361240d565b6110ba8585612f1b565b611d66613a70565b60005a60cd54600090815260cb60205260409020600881015491925090611d9690600160a01b900460ff16613ac9565b8060050154816006015414611dd7576040517f415522d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002815460ff166006811115611def57611def614ed4565b14611e26576040517fcb6f6ae400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b835160028201548114611e65576040517f4f838f7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a081018252606080825260208201819052600092820183905281018290526080810191909152606060005b838110156121c557878181518110611eaf57611eaf615970565b60200260200101519250868181518110611ecb57611ecb615970565b602002602001015191507f1579d012ead512dcb248c91571fa46aaa0f3399f8d3e1098fac22575db2ed693836080015103611f32576040517fc0e6f38000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f89856004015484600001518560200151866040015187606001518860800151604051602001611f6795949392919061599f565b6040516020818303038152906040528051906020012083858960020154613bbd565b611fbf576040517fb05e92fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808301516040517f72c6838f0000000000000000000000000000000000000000000000000000000081526000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916372c6838f9161202e9160040190815260200190565b602060405180830381865afa15801561204b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206f9190615920565b90506001600160a01b0381166120b1576040517f6602115a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408085015190516001600160a01b03918216602482015260009183169060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f479aa9270000000000000000000000000000000000000000000000000000000017905251612135919061593d565b600060405180830381855af49150503d8060008114612170576040519150601f19603f3d011682016040523d82523d6000602084013e612175565b606091505b50509050806121b0576040517f3fb523ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505080806121bd906159e9565b915050611e95565b50835460ff191660031784556121d96109a0565b6001600160a01b031660cd547fbfea78bd2c6eb373d1bf039c60bc8b42be83b67fb39c2a2bc60b18d5883897d960405160405180910390a360405163ea0a523760e01b815260206004820152601060248201527f50726f78696573496e697469617465640000000000000000000000000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b1580156122a057600080fd5b505af11580156122b4573d6000803e3d6000fd5b5050505060088401546122d2908690600160a01b900460ff16613e2a565b50505050506122e16001606555565b5050565b6122ed6139f7565b60d0805460ff19811660ff909116151790556123076109a0565b60d05460405160ff909116151581526001600160a01b0391909116907fadea028b90fc36108cad0d47879e8f5e0efa35bc21ad2fcf625e4ce56aff3b4b9060200160405180910390a260d0546040805160ff909216151560f81b60208301528051600181840301815260218301918290527ff52cc7fd000000000000000000000000000000000000000000000000000000009091526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163f52cc7fd916123d991602501615a03565b600060405180830381600087803b1580156123f357600080fd5b505af1158015612407573d6000803e3d6000fd5b50505050565b612415613a70565b60005a60cd54600090815260cb6020526040902060088101549192509061244590600160a01b900460ff16613ac9565b84516000819003612482576040517f03250eda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a08101825260008082526060602083018190529282018190528282015260808101919091526000606060005b848110156128fb578981815181106124cd576124cd615970565b602002602001015193508881815181106124e9576124e9615970565b6020026020010151925087818151811061250557612505615970565b6020026020010151915085600101838154811061252457612524615970565b90600052602060002090602091828204019190069054906101000a900460ff161561257b576040517f6d41cd6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125d58660030154856080015186604001518760000151886060015189602001516040516020016125b0959493929190615a4a565b6040516020818303038152906040528051906020012085858a60010180549050613bbd565b61260b576040517fb05e92fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068601805490600061261d836159e9565b9190505550600186600101848154811061263957612639615970565b90600052602060002090602091828204019190066101000a81548160ff02191690831515021790555060018081111561267457612674614ed4565b8451600181111561268757612687614ed4565b036126e55761269786858561400d565b600186015460068701541480156126b057506002860154155b80156126d257506006865460ff1660068111156126cf576126cf614ed4565b14155b156126e0576126e0866146fb565b6128e9565b6000845160018111156126fa576126fa614ed4565b036128b75760408051610160810190915286546126e091908890829060ff16600681111561272a5761272a614ed4565b600681111561273b5761273b614ed4565b8152602001600182018054806020026020016040519081016040528092919081815260200182805480156127ae57602002820191906000526020600020906000905b825461010083900a900460ff16151581526020600192830181810494850194909303909202910180841161277d5790505b505050918352505060028201546020820152600382015460408201526004820154606082015260058201546080820152600682015460a0820152600782015460c082015260088201546001600160a01b03811660e0830152600160a01b900460ff1615156101008201526009820180546101209092019161282e90615837565b80601f016020809104026020016040519081016040528092919081815260200182805461285a90615837565b80156128a75780601f1061287c576101008083540402835291602001916128a7565b820191906000526020600020905b81548152906001019060200180831161288a57829003601f168201915b50505050508152505085856147f5565b6040517f88dd20d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806128f3816159e9565b9150506124b3565b506008850154612916908790600160a01b900460ff16613e2a565b5050505050506129266001606555565b505050565b6129336139f7565b600081815260cb602052604090206008810154600160a01b900460ff168015612962575061295f613703565b47115b801561299e57507f0000000000000000000000000000000000000000000000000000000000000000612992613703565b61299c9047615959565b105b156129d5576040517f69c00fad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001815460ff1660068111156129ed576129ed614ed4565b14612a24576040517f50feacf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cd5415612a5e576040517f318cf47900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cd829055805460ff1916600217815560405182907f78f2b31e40dca1f52e437b553603e30b4916085657201b5792894208d3e918c190600090a260405163ea0a523760e01b815260206004820152601c60248201527f4368756753706c6173684465706c6f796d656e74417070726f7665640000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a5237906064016112d6565b612b1e61061d6109a0565b612b54576040517f70f3b56f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000878787878787604051602001612b7196959493929190615aa6565b60408051601f198184030181529181528151602092830120600081815260cb90935290822080549193509160ff90911690816006811115612bb457612bb4614ed4565b14158015612bd457506004816006811115612bd157612bd1614ed4565b14155b8015612bf257506005816006811115612bef57612bef614ed4565b14155b8015612c1057506006816006811115612c0d57612c0d614ed4565b14155b15612c47576040517fb1c30cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815460ff19166001178255600382018a905560048201899055600582018690558767ffffffffffffffff811115612c8057612c80615074565b604051908082528060200260200182016040528015612ca9578160200160208202803683370190505b508051612cc0916001850191602090910190614dcf565b50600282018790556008820180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b8615150217905560098201612d0a8682615b1d565b50827f2efcc05790a2408b85fd4ac0d2eb6ff0b3a28c02913b5772b38206eeaf7e1aaa8b8b8b8b8b8b8b612d3c6109a0565b604051612d50989796959493929190615bdd565b60405180910390a27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f52cc7fd612d8f6109a0565b604051602001612dca919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401612df59190615c35565b600060405180830381600087803b158015612e0f57600080fd5b505af1158015612e23573d6000803e3d6000fd5b5050505050505050505050505050565b612e3b6139f7565b6001600160a01b038216600090815260ca60205260409020805460ff1916821515179055612e676109a0565b6001600160a01b0316811515836001600160a01b03167f0b9a24ac05b182ed15b84d4b2c08ef4a709487d65220beebcb8190410fff5a8460405160405180910390a47f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f52cc7fd82604051602001612ef091151560f81b815260010190565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016112d69190615c7c565b612f23613a70565b60005a60cd54600090815260cb60205260409020600881015491925090612f5390600160a01b900460ff16613ac9565b60cd54612f8c576040517f5f0825a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810154600682015414612fcd576040517ffbd9e67500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83516002820154811461300c576040517f4f838f7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a081018252606080825260208201819052600092820183905281018290526080810191909152606060005b838110156134835787818151811061305657613056615970565b6020026020010151925086818151811061307257613072615970565b602002602001015191507f1579d012ead512dcb248c91571fa46aaa0f3399f8d3e1098fac22575db2ed6938360800151036130d9576040517fc0e6f38000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61310e856004015484600001518560200151866040015187606001518860800151604051602001611f6795949392919061599f565b613144576040517fb05e92fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808301516040517f72c6838f0000000000000000000000000000000000000000000000000000000081526000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916372c6838f916131b39160040190815260200190565b602060405180830381865afa1580156131d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f49190615920565b90506001600160a01b038116613236576040517f6602115a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000816001600160a01b0316856040015186606001516040516024016132729291906001600160a01b0392831681529116602082015260400190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f192957c800000000000000000000000000000000000000000000000000000000179052516132d5919061593d565b600060405180830381855af49150503d8060008114613310576040519150601f19603f3d011682016040523d82523d6000602084013e613315565b606091505b5050905080613350576040517fd764f04e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84604001516001600160a01b031660cd547f7e1bc64dc0005c076de7c8597ca19cde8e68d0d0a28a32d75bc7934cffdafe888760000151886020015160405161339a929190615cc3565b60405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f52cc7fd8660400151604051602001613411919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161343c9190615cf1565b600060405180830381600087803b15801561345657600080fd5b505af115801561346a573d6000803e3d6000fd5b505050505050808061347b906159e9565b91505061303c565b5061348d846146fb565b60088401546122d2908690600160a01b900460ff16613e2a565b6134af6139f7565b6001600160a01b03811661352b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610c71565b6135348161398d565b50565b61353f6139f7565b60cd5415613579576040517f318cf47900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613583613703565b61358d9047615959565b90506135976109a0565b6001600160a01b03167f889d16c2f05ed249633dadc4c5c2aa8eeb677384800475aaf313cad7707e9e19826040516135d191815260200190565b60405180910390a260006135e36109a0565b604080516000815260208101918290526001600160a01b039290921691849161360c919061593d565b60006040518083038185875af1925050503d8060008114613649576040519150601f19603f3d011682016040523d82523d6000602084013e61364e565b606091505b5050905080613689576040517f27fcd9d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405163ea0a523760e01b815260206004820152601060248201527f4f776e657257697468647265774554480000000000000000000000000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a5237906064016112d6565b600060cf5460ce546109aa9190615908565b60005a905061372988888888888888612b13565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663455259cb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ad9190615d38565b905060006137b9614b76565b6137c591506010615d51565b905060005a846137d884620186a0615908565b6137e29190615908565b6137ec9190615959565b905060006137fa8285615d51565b90508060cf600082825461380e9190615908565b9091555050505050505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361387e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b503390565b600054610100900460ff166139005760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c71565b6113c2614b89565b600054610100900460ff166139855760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c71565b6113c2614c06565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6139ff6109a0565b6001600160a01b0316613a1a6033546001600160a01b031690565b6001600160a01b0316146113c25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c71565b600260655403613ac25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c71565b6002606555565b6001811515148015613b175750613ade6109a0565b6001600160a01b0316613b0b60cd54600090815260cb60205260409020600801546001600160a01b031690565b6001600160a01b031614155b15613b4e576040517f06ee429500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80158015613b865750613b5f6109a0565b6001600160a01b0316613b7a6033546001600160a01b031690565b6001600160a01b031614155b15613534576040517f6db2465f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808211613c345760405162461bcd60e51b815260206004820152603760248201527f4c69625f4d65726b6c65547265653a20546f74616c206c6561766573206d757360448201527f742062652067726561746572207468616e207a65726f2e0000000000000000006064820152608401610c71565b818410613ca85760405162461bcd60e51b8152602060048201526024808201527f4c69625f4d65726b6c65547265653a20496e646578206f7574206f6620626f7560448201527f6e64732e000000000000000000000000000000000000000000000000000000006064820152608401610c71565b613cb182614c93565b835114613d4c5760405162461bcd60e51b815260206004820152604d60248201527f4c69625f4d65726b6c65547265653a20546f74616c207369626c696e6773206460448201527f6f6573206e6f7420636f72726563746c7920636f72726573706f6e6420746f2060648201527f746f74616c206c65617665732e00000000000000000000000000000000000000608482015260a401610c71565b8460005b8451811015613e1d5785600116600103613db657848181518110613d7657613d76615970565b602002602001015182604051602001613d99929190918252602082015260400190565b604051602081830303815290604052805190602001209150613e04565b81858281518110613dc957613dc9615970565b6020026020010151604051602001613deb929190918252602082015260400190565b6040516020818303038152906040528051906020012091505b60019590951c9480613e15816159e9565b915050613d50565b5090951495945050505050565b80613e33575050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663455259cb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb79190615d38565b90506000613ec3614b76565b613ecf91506010615d51565b905060005a85613ee284620186a0615908565b613eec9190615908565b613ef69190615959565b905060006064613f267f000000000000000000000000000000000000000000000000000000000000000082615908565b613f308487615d51565b613f3a9190615d51565b613f449190615d70565b9050600060647f0000000000000000000000000000000000000000000000000000000000000000613f758588615d51565b613f7f9190615d51565b613f899190615d70565b90508160ce6000828254613f9d9190615908565b9091555082905060c96000613fb06109a0565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254613fdf9190615908565b925050819055508060cf6000828254613ff89190615908565b909155505050505050505050565b6001606555565b6002835460ff16600681111561402557614025614ed4565b1461405c576040517fcb6f6ae400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008083602001518060200190518101906140779190615df0565b915091506000846080015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856040516024016140c491815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f21f8a7210000000000000000000000000000000000000000000000000000000017905251614127919061593d565b600060405180830381855af49150503d8060008114614162576040519150601f19603f3d011682016040523d82523d6000602084013e614167565b606091505b5091509150816141a3576040517fda45f5f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818060200190518101906141b99190615920565b90506001600160a01b0381163b156142d35760cd54816001600160a01b0316856040516141e6919061593d565b60405180910390207fdc12392bc0b29f679ba6e7c5f560dd5735a9909ee29c4b345ef19df2c623b1b0878b60405161421f929190615e2d565b60405180910390a460405163ea0a523760e01b815260206004820152601960248201527f436f6e74726163744465706c6f796d656e74536b69707065640000000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b1580156142b657600080fd5b505af11580156142ca573d6000803e3d6000fd5b50505050611834565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168888600060405160240161431693929190615e4f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc7aeef0f0000000000000000000000000000000000000000000000000000000017905251614379919061593d565b600060405180830381855af49150503d80600081146143b4576040519150601f19603f3d011682016040523d82523d6000602084013e6143b9565b606091505b509150915081866040516020016143d09190615e78565b604051602081830303815290604052906143fd5760405162461bcd60e51b8152600401610c7191906151b8565b506000818060200190518101906144149190615920565b9050806001600160a01b0316846001600160a01b0316036145445760cd54816001600160a01b03168860405161444a919061593d565b60405180910390207fa5f92178a767e4250cb11280da2b868af52f7dbe6194258920d017e1d30cd7798a8f606001518d8051906020012060405161449093929190615ebd565b60405180910390a460405163ea0a523760e01b815260206004820152601060248201527f436f6e74726163744465706c6f7965640000000000000000000000000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b15801561452757600080fd5b505af115801561453b573d6000803e3d6000fd5b505050506146ed565b7f000000000000000000000000000000000000000000000000000000000000000060c960006145716109a0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546145a09190615908565b925050819055507f000000000000000000000000000000000000000000000000000000000000000060ce60008282546145d99190615908565b909155505060cd546040516001600160a01b038616906145fa908a9061593d565b60405180910390207fb56435b217b7b283698159b613df8b2b5d3c9eb8a9cf2abd2762d0b9d08c098b8a8e604051614633929190615e2d565b60405180910390a47f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f52cc7fd60cd5460405160200161467f91815260200190565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016146aa9190615ee2565b600060405180830381600087803b1580156146c457600080fd5b505af11580156146d8573d6000803e3d6000fd5b5050600060cd5550508b5460ff19166006178c555b505050505050505050505050565b805460ff1916600417815561470e6109a0565b6001600160a01b031660cd547f745f3f165a11892e95c826e15a0e3f1edebd0c600775d4e34e41d08f0c73ecf260405160405180910390a360405163ea0a523760e01b815260206004820152601d60248201527f4368756753706c6173684465706c6f796d656e74436f6d706c6574656400000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b1580156147d557600080fd5b505af11580156147e9573d6000803e3d6000fd5b5050600060cd55505050565b60038351600681111561480a5761480a614ed4565b14614841576040517fb38cba4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608201516040517f72c6838f0000000000000000000000000000000000000000000000000000000081526000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916372c6838f916148b09160040190815260200190565b602060405180830381865afa1580156148cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148f19190615920565b90507f1579d012ead512dcb248c91571fa46aaa0f3399f8d3e1098fac22575db2ed693836060015103614950576040517fc0e6f38000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000856020015180602001905181019061496d9190615f29565b9250925092506000846001600160a01b0316876040015185858560405160240161499a9493929190615f7f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9bc6ee9a00000000000000000000000000000000000000000000000000000000179052516149fd919061593d565b600060405180830381855af49150503d8060008114614a38576040519150601f19603f3d011682016040523d82523d6000602084013e614a3d565b606091505b5050905080614a78576040517fac5785a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614a806109a0565b6001600160a01b031687604001516001600160a01b031660cd547f572ca77d05d5995d2382e9e3b5f4819a396a2b7914dd3cb9a81070b9dbe1e2f589604051614acb91815260200190565b60405180910390a460405163ea0a523760e01b815260206004820152600f60248201527f53657450726f787953746f72616765000000000000000000000000000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b158015614b6257600080fd5b505af11580156146ed573d6000803e3d6000fd5b366000614b81614d78565b915091509091565b600054610100900460ff166140065760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c71565b600054610100900460ff16614c835760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c71565b6113c2614c8e6109a0565b61398d565b6000808211614d0a5760405162461bcd60e51b815260206004820152603060248201527f4c69625f4d65726b6c65547265653a2043616e6e6f7420636f6d70757465206360448201527f65696c286c6f675f3229206f6620302e000000000000000000000000000000006064820152608401610c71565b81600103614d1a57506000919050565b81600060805b60018110614d585780614d36600180831b615959565b901b831615614d5057614d498183615908565b92811c9291505b60011c614d20565b506001811b8414614d7157614d6e600182615908565b90505b9392505050565b3660007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303614dc75760008036614dba601482615959565b92614b8193929190615fb0565b600036614b81565b82805482825590600052602060002090601f01602090048101928215614e645791602002820160005b83821115614e3557835183826101000a81548160ff0219169083151502179055509260200192600101602081600001049283019260010302614df8565b8015614e625782816101000a81549060ff0219169055600101602081600001049283019260010302614e35565b505b50614e70929150614e74565b5090565b5b80821115614e705760008155600101614e75565b6001600160a01b038116811461353457600080fd5b600060208284031215614eb057600080fd5b8135614d7181614e89565b600060208284031215614ecd57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60078110614f1357614f13614ed4565b9052565b600081518084526020808501945080840160005b83811015614f49578151151587529582019590820190600101614f2b565b509495945050505050565b60005b83811015614f6f578181015183820152602001614f57565b838111156124075750506000910152565b60008151808452614f98816020860160208601614f54565b601f01601f19169290920160200192915050565b60208152614fbe602082018351614f03565b60006020830151610160806040850152614fdc610180850183614f17565b91506040850151606085015260608501516080850152608085015160a085015260a085015160c085015260c085015160e085015260e085015161010081818701528087015191505061012061503b818701836001600160a01b03169052565b86015190506101406150508682018315159052565b860151858403601f190183870152905061506a8382614f80565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff811182821017156150c6576150c6615074565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156150f5576150f5615074565b604052919050565b600067ffffffffffffffff82111561511757615117615074565b50601f01601f191660200190565b600082601f83011261513657600080fd5b8135615149615144826150fd565b6150cc565b81815284602083860101111561515e57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561518d57600080fd5b813567ffffffffffffffff8111156151a457600080fd5b6151b084828501615125565b949350505050565b602081526000614d716020830184614f80565b80356151d681614e89565b919050565b6000806000606084860312156151f057600080fd5b83356151fb81614e89565b925060208401359150604084013561521281614e89565b809150509250925092565b600067ffffffffffffffff82111561523757615237615074565b5060051b60200190565b600082601f83011261525257600080fd5b813560206152626151448361521d565b82815260059290921b8401810191818101908684111561528157600080fd5b8286015b8481101561535257803567ffffffffffffffff808211156152a65760008081fd5b818901915060a080601f19848d030112156152c15760008081fd5b6152c96150a3565b87840135838111156152db5760008081fd5b6152e98d8a83880101615125565b825250604080850135848111156153005760008081fd5b61530e8e8b83890101615125565b8a84015250606093508385013561532481614e89565b9082015260808481013561533781614e89565b93820193909352920135908201528352918301918301615285565b509695505050505050565b600082601f83011261536e57600080fd5b8135602061537e6151448361521d565b828152600592831b850182019282820191908785111561539d57600080fd5b8387015b8581101561543157803567ffffffffffffffff8111156153c15760008081fd5b8801603f81018a136153d35760008081fd5b8581013560406153e56151448361521d565b82815291851b8301810191888101908d8411156154025760008081fd5b938201935b8385101561542057843582529389019390890190615407565b8852505050938501935084016153a1565b5090979650505050505050565b600082601f83011261544f57600080fd5b8135602061545f6151448361521d565b82815260059290921b8401810191818101908684111561547e57600080fd5b8286015b8481101561535257803567ffffffffffffffff808211156154a35760008081fd5b818901915060a080601f19848d030112156154be5760008081fd5b6154c66150a3565b87840135600281106154d85760008081fd5b8152604084810135848111156154ee5760008081fd5b6154fc8e8b83890101615125565b8a84015250606061550e8187016151cb565b8284015260809150818601358184015250828501359250838311156155335760008081fd5b6155418d8a85880101615125565b908201528652505050918301918301615482565b600082601f83011261556657600080fd5b813560206155766151448361521d565b82815260059290921b8401810191818101908684111561559557600080fd5b8286015b848110156153525780358352918301918301615599565b600080600080600060a086880312156155c857600080fd5b853567ffffffffffffffff808211156155e057600080fd5b6155ec89838a01615241565b9650602088013591508082111561560257600080fd5b61560e89838a0161535d565b9550604088013591508082111561562457600080fd5b61563089838a0161543e565b9450606088013591508082111561564657600080fd5b61565289838a01615555565b9350608088013591508082111561566857600080fd5b506156758882890161535d565b9150509295509295909350565b6000806040838503121561569557600080fd5b823567ffffffffffffffff808211156156ad57600080fd5b6156b986838701615241565b935060208501359150808211156156cf57600080fd5b506156dc8582860161535d565b9150509250929050565b6000806000606084860312156156fb57600080fd5b833567ffffffffffffffff8082111561571357600080fd5b61571f8783880161543e565b9450602086013591508082111561573557600080fd5b61574187838801615555565b9350604086013591508082111561575757600080fd5b506157648682870161535d565b9150509250925092565b801515811461353457600080fd5b600080600080600080600060e0888a03121561579757600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156157d157600080fd5b6157dd8a828b01615125565b92505060c08801356157ee8161576e565b8091505092959891949750929550565b6000806040838503121561581157600080fd5b823561581c81614e89565b9150602083013561582c8161576e565b809150509250929050565b600181811c9082168061584b57607f821691505b602082108103610d7e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008060006060848603121561589957600080fd5b83516158a481614e89565b6020850151604086015191945092506152128161576e565b6000602082840312156158ce57600080fd5b8151614d718161576e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561591b5761591b6158d9565b500190565b60006020828403121561593257600080fd5b8151614d7181614e89565b6000825161594f818460208701614f54565b9190910192915050565b60008282101561596b5761596b6158d9565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60a0815260006159b260a0830188614f80565b82810360208401526159c48188614f80565b6001600160a01b03968716604085015294909516606083015250608001529392505050565b600060001982036159fc576159fc6158d9565b5060010190565b60408152601760408201527f546f67676c65644d616e6167656450726f706f73616c730000000000000000006060820152608060208201526000614d716080830184614f80565b60a081526000615a5d60a0830188614f80565b6001600160a01b038716602084015260028610615a7c57615a7c614ed4565b8560408401528460608401528281036080840152615a9a8185614f80565b98975050505050505050565b86815285602082015284604082015283606082015282608082015260c060a08201526000615a9a60c0830184614f80565b601f82111561292657600081815260208120601f850160051c81016020861015615afe5750805b601f850160051c820191505b8181101561130457828155600101615b0a565b815167ffffffffffffffff811115615b3757615b37615074565b615b4b81615b458454615837565b84615ad7565b602080601f831160018114615b805760008415615b685750858301515b600019600386901b1c1916600185901b178555611304565b600085815260208120601f198616915b82811015615baf57888601518255948401946001909101908401615b90565b5085821015615bcd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006101008a83528960208401528860408401528760608401528660808401528060a0840152615c0f81840187614f80565b94151560c084015250506001600160a01b039190911660e0909101529695505050505050565b60408152601c60408201527f4368756753706c6173684465706c6f796d656e7450726f706f736564000000006060820152608060208201526000614d716080830184614f80565b60408152600b60408201527f50726f706f7365725365740000000000000000000000000000000000000000006060820152608060208201526000614d716080830184614f80565b604081526000615cd66040830185614f80565b8281036020840152615ce88185614f80565b95945050505050565b60408152600d60408201527f50726f78795570677261646564000000000000000000000000000000000000006060820152608060208201526000614d716080830184614f80565b600060208284031215615d4a57600080fd5b5051919050565b6000816000190483118215151615615d6b57615d6b6158d9565b500290565b600082615da6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082601f830112615dbc57600080fd5b8151615dca615144826150fd565b818152846020838601011115615ddf57600080fd5b6151b0826020830160208701614f54565b60008060408385031215615e0357600080fd5b82519150602083015167ffffffffffffffff811115615e2157600080fd5b6156dc85828601615dab565b604081526000615e406040830185614f80565b90508260208301529392505050565b838152606060208201526000615e686060830185614f80565b9050826040830152949350505050565b7f4661696c656420746f206465706c6f793a200000000000000000000000000000815260008251615eb0816012850160208701614f54565b9190910160120192915050565b606081526000615ed06060830186614f80565b60208301949094525060400152919050565b60408152601060408201527f4465706c6f796d656e744661696c6564000000000000000000000000000000006060820152608060208201526000614d716080830184614f80565b600080600060608486031215615f3e57600080fd5b83519250602084015160ff81168114615f5657600080fd5b604085015190925067ffffffffffffffff811115615f7357600080fd5b61576486828701615dab565b6001600160a01b038516815283602082015260ff8316604082015260806060820152600061506a6080830184614f80565b60008085851115615fc057600080fd5b83861115615fcd57600080fd5b505082019391909203915056fea164736f6c634300080f000a",
  "deployedBytecode": "0x6080604052600436106102bf5760003560e01c80639a20ba781161016e578063ef9fe8e4116100cb578063f2fde38b1161007f578063fc7b9c1811610064578063fc7b9c1814610937578063fd95a3be1461094c578063fff81d4c1461096c57600080fd5b8063f2fde38b14610902578063f40c7c4c1461092257600080fd5b8063f220aca9116100b0578063f220aca91461087a578063f23d6142146108ae578063f2a7208d146108ce57600080fd5b8063ef9fe8e41461084a578063f03171111461086457600080fd5b8063bd8bcd8911610122578063dfba66f011610107578063dfba66f0146107fd578063e8ea2d0814610813578063e9ed9b641461082a57600080fd5b8063bd8bcd89146107d1578063c6eb84e5146107e757600080fd5b8063a53a1adf11610153578063a53a1adf1461075d578063a7882f931461077d578063bae4b95f1461079d57600080fd5b80639a20ba7814610728578063a47d08011461073d57600080fd5b8063715018a61161021c57806379e6f49a116101d05780638da5cb5b116101b55780638da5cb5b146106ca57806391e219ae146106e85780639449a44f1461070857600080fd5b806379e6f49a146106765780637b1039991461069657600080fd5b806374ec29a01161020157806374ec29a0146106025780637521120f1461062257806375cd65e11461065657600080fd5b8063715018a6146105c057806373b4a738146105d557600080fd5b80634731d48c1161027357806354fd4d501161025857806354fd4d5014610503578063572b6c051461053a57806361f5499f1461058757600080fd5b80634731d48c146104d95780635229c975146104ee57600080fd5b80632e0a6960116102a45780632e0a69601461043d578063374040171461047f578063439fab91146104ac57600080fd5b80630523a04c146103ac57806318177497146103fd57600080fd5b366103a757346102cd6109a0565b6001600160a01b03167f6c703791f399558807424f489ccd811c72b4ff0b74af547264fad7c646776df060405160405180910390a360405163ea0a523760e01b815260206004820152600c60248201527f4554484465706f7369746564000000000000000000000000000000000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b15801561039157600080fd5b505af11580156103a5573d6000803e3d6000fd5b005b600080fd5b3480156103b857600080fd5b506103e07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561040957600080fd5b5061042d610418366004614e9e565b60ca6020526000908152604090205460ff1681565b60405190151581526020016103f4565b34801561044957600080fd5b506104717f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016103f4565b34801561048b57600080fd5b5061049f61049a366004614ebb565b6109af565b6040516103f49190614fac565b3480156104b857600080fd5b506104cc6104c736600461517b565b610bc6565b6040516103f491906151b8565b3480156104e557600080fd5b506103a5610d84565b3480156104fa57600080fd5b506103a56110c1565b34801561050f57600080fd5b5061051861130c565b60408051825181526020808401519082015291810151908201526060016103f4565b34801561054657600080fd5b5061042d610555366004614e9e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561059357600080fd5b506103e06105a2366004614ebb565b600090815260cb60205260409020600801546001600160a01b031690565b3480156105cc57600080fd5b506103a56113b0565b3480156105e157600080fd5b506104716105f0366004614e9e565b60c96020526000908152604090205481565b34801561060e57600080fd5b5061042d61061d366004614e9e565b6113c4565b34801561062e57600080fd5b506104717f000000000000000000000000000000000000000000000000000000000000000081565b34801561066257600080fd5b506103a56106713660046151db565b6114de565b34801561068257600080fd5b506103a5610691366004614ebb565b61183f565b3480156106a257600080fd5b506103e07f000000000000000000000000000000000000000000000000000000000000000081565b3480156106d657600080fd5b506033546001600160a01b03166103e0565b3480156106f457600080fd5b506103a56107033660046155b0565b611d38565b34801561071457600080fd5b506103a5610723366004615682565b611d5e565b34801561073457600080fd5b506103a56122e5565b34801561074957600080fd5b506103a56107583660046156e6565b61240d565b34801561076957600080fd5b506103a5610778366004614ebb565b61292b565b34801561078957600080fd5b506103a561079836600461577c565b612b13565b3480156107a957600080fd5b506103e07f000000000000000000000000000000000000000000000000000000000000000081565b3480156107dd57600080fd5b5061047160cf5481565b3480156107f357600080fd5b5061047160ce5481565b34801561080957600080fd5b5061047160cd5481565b34801561081f57600080fd5b5060cd54151561042d565b34801561083657600080fd5b506103a56108453660046157fe565b612e33565b34801561085657600080fd5b5060d05461042d9060ff1681565b34801561087057600080fd5b5061047160cc5481565b34801561088657600080fd5b506104717f000000000000000000000000000000000000000000000000000000000000000081565b3480156108ba57600080fd5b506103a56108c9366004615682565b612f1b565b3480156108da57600080fd5b506103e07f000000000000000000000000000000000000000000000000000000000000000081565b34801561090e57600080fd5b506103a561091d366004614e9e565b6134a7565b34801561092e57600080fd5b506103a5613537565b34801561094357600080fd5b50610471613703565b34801561095857600080fd5b506103a561096736600461577c565b613715565b34801561097857600080fd5b506104717f000000000000000000000000000000000000000000000000000000000000000081565b60006109aa613821565b905090565b604080516101608101825260008082526060602083018190529282018190528282018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820152610140810191909152600082815260cb602052604090819020815161016081019092528054829060ff166006811115610a3957610a39614ed4565b6006811115610a4a57610a4a614ed4565b815260200160018201805480602002602001604051908101604052809291908181526020018280548015610abd57602002820191906000526020600020906000905b825461010083900a900460ff161515815260206001928301818104948501949093039092029101808411610a8c5790505b505050918352505060028201546020820152600382015460408201526004820154606082015260058201546080820152600682015460a0820152600782015460c082015260088201546001600160a01b03811660e0830152600160a01b900460ff16151561010082015260098201805461012090920191610b3d90615837565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6990615837565b8015610bb65780601f10610b8b57610100808354040283529160200191610bb6565b820191906000526020600020905b815481529060010190602001808311610b9957829003601f168201915b5050505050815250509050919050565b600054606090610100900460ff1615808015610be95750600054600160ff909116105b80610c035750303b158015610c03575060005460ff166001145b610c7a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610cba57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b600080600085806020019051810190610cd39190615884565b60cc82905560d0805460ff191682151517905591945092509050610cf5613883565b610cfd613908565b610d068361398d565b6040518060200160405280600081525094505050508015610d7e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166391d148547f9e982efbc2164e40fcd14da9a0408a971e4224cb50a113d83b1c90cd8c1434dd610ddc6109a0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015610e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6291906158bc565b610e98576040517f6696fa8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cd54610ed1576040517f5f0825a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cd54600090815260cb602052604090206008810154600160a01b900460ff16610f27576040517f0bb3291200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008160070154610f579190615908565b4211610f8f576040517f7ea3c87d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b426007820155610f9d6109a0565b6008820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055610fdf6109a0565b6001600160a01b031660cd547fdef501073bf641ebc9528324e0366c9737f17823fa009980717ec55df3b05f2060405160405180910390a360405163ea0a523760e01b815260206004820152601b60248201527f4368756753706c6173684465706c6f796d656e74436c61696d6564000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b1580156110a657600080fd5b505af11580156110ba573d6000803e3d6000fd5b5050505050565b6110c96139f7565b60cd54611102576040517f5f0825a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cd54600090815260cb602052604090206008810154600160a01b900460ff16801561115d5750427f0000000000000000000000000000000000000000000000000000000000000000826007015461115a9190615908565b10155b156111fd577f000000000000000000000000000000000000000000000000000000000000000060c9600061118f6109a0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546111be9190615908565b925050819055507f000000000000000000000000000000000000000000000000000000000000000060ce60008282546111f79190615908565b90915550505b60cd80546000909155815460ff191660051782556112196109a0565b6001600160a01b0316817f6e376540abc69ea2aba618baf9970a40a410209797848ac685c0d5e321536c96846006015460405161125891815260200190565b60405180910390a360405163ea0a523760e01b815260206004820152601d60248201527f4368756753706c6173684465706c6f796d656e7443616e63656c6c656400000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a5237906064015b600060405180830381600087803b1580156112f057600080fd5b505af1158015611304573d6000803e3d6000fd5b505050505050565b61133060405180606001604052806000815260200160008152602001600081525090565b60405180606001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f0000000000000000000000000000000000000000000000000000000000000000815250905090565b6113b86139f7565b6113c2600061398d565b565b60d05460009060ff16801561149d57506040517f91d148540000000000000000000000000000000000000000000000000000000081527f1036d397acc4220751130e8fcc4ce6cb991a324073d229f09e751ac8624f19c060048201526001600160a01b0383811660248301527f000000000000000000000000000000000000000000000000000000000000000016906391d1485490604401602060405180830381865afa158015611479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149d91906158bc565b806114c057506001600160a01b038216600090815260ca602052604090205460ff165b806114d857506033546001600160a01b038381169116145b92915050565b6114e66139f7565b826001600160a01b03163b60000361152a576040517f58796ea800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cd5415611564576040517f318cf47900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f72c6838f000000000000000000000000000000000000000000000000000000008152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906372c6838f90602401602060405180830381865afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190615920565b90506001600160a01b03811661164b576040517f6602115a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b0383811682528491908616907f6828050ff1390d9c84304db69d7669bdc13a1df9715cedf6fe1eeb0bec3843ea9060200160405180910390a36040516001600160a01b03858116602483015283811660448301526000919083169060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7eff275e0000000000000000000000000000000000000000000000000000000017905251611716919061593d565b600060405180830381855af49150503d8060008114611751576040519150601f19603f3d011682016040523d82523d6000602084013e611756565b606091505b5050905080611791576040517fed9af69100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405163ea0a523760e01b815260206004820152600d60248201527f50726f78794578706f727465640000000000000000000000000000000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b15801561182057600080fd5b505af1158015611834573d6000803e3d6000fd5b505050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166391d148547f9e982efbc2164e40fcd14da9a0408a971e4224cb50a113d83b1c90cd8c1434dd6118976109a0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa1580156118f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191d91906158bc565b611953576040517f6696fa8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060000361198d576040517f5e85ae7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060c9600061199a6109a0565b6001600160a01b03166001600160a01b031681526020019081526020016000205410156119f3576040517fc70453ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4760cf5482611a029190615908565b1115611a3a576040517f356680b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060c96000611a476109a0565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254611a769190615959565b925050819055508060ce6000828254611a8f9190615959565b90915550611a9d90506109a0565b6001600160a01b03167fba98915499c19898a23f510deeaa915637d1b5d537df51dc105d01b8e69be7e28260c96000611ad46109a0565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051611b0c929190918252602082015260400190565b60405180910390a26000611b1e6109a0565b604080516000815260208101918290526001600160a01b0392909216918491611b47919061593d565b60006040518083038185875af1925050503d8060008114611b84576040519150601f19603f3d011682016040523d82523d6000602084013e611b89565b606091505b5050905080611bc4576040517f27fcd9d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cf546040805160008082526020820192839052926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929091611c0f9161593d565b60006040518083038185875af1925050503d8060008114611c4c576040519150601f19603f3d011682016040523d82523d6000602084013e611c51565b606091505b5050905080611c8c576040517f27fcd9d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405163ea0a523760e01b815260206004820152601660248201527f4578656375746f725061796d656e74436c61696d65640000000000000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b158015611d1b57600080fd5b505af1158015611d2f573d6000803e3d6000fd5b50505050505050565b611d428585611d5e565b825115611d5457611d5483838361240d565b6110ba8585612f1b565b611d66613a70565b60005a60cd54600090815260cb60205260409020600881015491925090611d9690600160a01b900460ff16613ac9565b8060050154816006015414611dd7576040517f415522d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002815460ff166006811115611def57611def614ed4565b14611e26576040517fcb6f6ae400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b835160028201548114611e65576040517f4f838f7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a081018252606080825260208201819052600092820183905281018290526080810191909152606060005b838110156121c557878181518110611eaf57611eaf615970565b60200260200101519250868181518110611ecb57611ecb615970565b602002602001015191507f1579d012ead512dcb248c91571fa46aaa0f3399f8d3e1098fac22575db2ed693836080015103611f32576040517fc0e6f38000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f89856004015484600001518560200151866040015187606001518860800151604051602001611f6795949392919061599f565b6040516020818303038152906040528051906020012083858960020154613bbd565b611fbf576040517fb05e92fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808301516040517f72c6838f0000000000000000000000000000000000000000000000000000000081526000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916372c6838f9161202e9160040190815260200190565b602060405180830381865afa15801561204b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206f9190615920565b90506001600160a01b0381166120b1576040517f6602115a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408085015190516001600160a01b03918216602482015260009183169060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f479aa9270000000000000000000000000000000000000000000000000000000017905251612135919061593d565b600060405180830381855af49150503d8060008114612170576040519150601f19603f3d011682016040523d82523d6000602084013e612175565b606091505b50509050806121b0576040517f3fb523ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505080806121bd906159e9565b915050611e95565b50835460ff191660031784556121d96109a0565b6001600160a01b031660cd547fbfea78bd2c6eb373d1bf039c60bc8b42be83b67fb39c2a2bc60b18d5883897d960405160405180910390a360405163ea0a523760e01b815260206004820152601060248201527f50726f78696573496e697469617465640000000000000000000000000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b1580156122a057600080fd5b505af11580156122b4573d6000803e3d6000fd5b5050505060088401546122d2908690600160a01b900460ff16613e2a565b50505050506122e16001606555565b5050565b6122ed6139f7565b60d0805460ff19811660ff909116151790556123076109a0565b60d05460405160ff909116151581526001600160a01b0391909116907fadea028b90fc36108cad0d47879e8f5e0efa35bc21ad2fcf625e4ce56aff3b4b9060200160405180910390a260d0546040805160ff909216151560f81b60208301528051600181840301815260218301918290527ff52cc7fd000000000000000000000000000000000000000000000000000000009091526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163f52cc7fd916123d991602501615a03565b600060405180830381600087803b1580156123f357600080fd5b505af1158015612407573d6000803e3d6000fd5b50505050565b612415613a70565b60005a60cd54600090815260cb6020526040902060088101549192509061244590600160a01b900460ff16613ac9565b84516000819003612482576040517f03250eda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a08101825260008082526060602083018190529282018190528282015260808101919091526000606060005b848110156128fb578981815181106124cd576124cd615970565b602002602001015193508881815181106124e9576124e9615970565b6020026020010151925087818151811061250557612505615970565b6020026020010151915085600101838154811061252457612524615970565b90600052602060002090602091828204019190069054906101000a900460ff161561257b576040517f6d41cd6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125d58660030154856080015186604001518760000151886060015189602001516040516020016125b0959493929190615a4a565b6040516020818303038152906040528051906020012085858a60010180549050613bbd565b61260b576040517fb05e92fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068601805490600061261d836159e9565b9190505550600186600101848154811061263957612639615970565b90600052602060002090602091828204019190066101000a81548160ff02191690831515021790555060018081111561267457612674614ed4565b8451600181111561268757612687614ed4565b036126e55761269786858561400d565b600186015460068701541480156126b057506002860154155b80156126d257506006865460ff1660068111156126cf576126cf614ed4565b14155b156126e0576126e0866146fb565b6128e9565b6000845160018111156126fa576126fa614ed4565b036128b75760408051610160810190915286546126e091908890829060ff16600681111561272a5761272a614ed4565b600681111561273b5761273b614ed4565b8152602001600182018054806020026020016040519081016040528092919081815260200182805480156127ae57602002820191906000526020600020906000905b825461010083900a900460ff16151581526020600192830181810494850194909303909202910180841161277d5790505b505050918352505060028201546020820152600382015460408201526004820154606082015260058201546080820152600682015460a0820152600782015460c082015260088201546001600160a01b03811660e0830152600160a01b900460ff1615156101008201526009820180546101209092019161282e90615837565b80601f016020809104026020016040519081016040528092919081815260200182805461285a90615837565b80156128a75780601f1061287c576101008083540402835291602001916128a7565b820191906000526020600020905b81548152906001019060200180831161288a57829003601f168201915b50505050508152505085856147f5565b6040517f88dd20d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806128f3816159e9565b9150506124b3565b506008850154612916908790600160a01b900460ff16613e2a565b5050505050506129266001606555565b505050565b6129336139f7565b600081815260cb602052604090206008810154600160a01b900460ff168015612962575061295f613703565b47115b801561299e57507f0000000000000000000000000000000000000000000000000000000000000000612992613703565b61299c9047615959565b105b156129d5576040517f69c00fad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001815460ff1660068111156129ed576129ed614ed4565b14612a24576040517f50feacf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cd5415612a5e576040517f318cf47900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cd829055805460ff1916600217815560405182907f78f2b31e40dca1f52e437b553603e30b4916085657201b5792894208d3e918c190600090a260405163ea0a523760e01b815260206004820152601c60248201527f4368756753706c6173684465706c6f796d656e74417070726f7665640000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a5237906064016112d6565b612b1e61061d6109a0565b612b54576040517f70f3b56f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000878787878787604051602001612b7196959493929190615aa6565b60408051601f198184030181529181528151602092830120600081815260cb90935290822080549193509160ff90911690816006811115612bb457612bb4614ed4565b14158015612bd457506004816006811115612bd157612bd1614ed4565b14155b8015612bf257506005816006811115612bef57612bef614ed4565b14155b8015612c1057506006816006811115612c0d57612c0d614ed4565b14155b15612c47576040517fb1c30cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815460ff19166001178255600382018a905560048201899055600582018690558767ffffffffffffffff811115612c8057612c80615074565b604051908082528060200260200182016040528015612ca9578160200160208202803683370190505b508051612cc0916001850191602090910190614dcf565b50600282018790556008820180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b8615150217905560098201612d0a8682615b1d565b50827f2efcc05790a2408b85fd4ac0d2eb6ff0b3a28c02913b5772b38206eeaf7e1aaa8b8b8b8b8b8b8b612d3c6109a0565b604051612d50989796959493929190615bdd565b60405180910390a27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f52cc7fd612d8f6109a0565b604051602001612dca919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401612df59190615c35565b600060405180830381600087803b158015612e0f57600080fd5b505af1158015612e23573d6000803e3d6000fd5b5050505050505050505050505050565b612e3b6139f7565b6001600160a01b038216600090815260ca60205260409020805460ff1916821515179055612e676109a0565b6001600160a01b0316811515836001600160a01b03167f0b9a24ac05b182ed15b84d4b2c08ef4a709487d65220beebcb8190410fff5a8460405160405180910390a47f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f52cc7fd82604051602001612ef091151560f81b815260010190565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016112d69190615c7c565b612f23613a70565b60005a60cd54600090815260cb60205260409020600881015491925090612f5390600160a01b900460ff16613ac9565b60cd54612f8c576040517f5f0825a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810154600682015414612fcd576040517ffbd9e67500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83516002820154811461300c576040517f4f838f7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a081018252606080825260208201819052600092820183905281018290526080810191909152606060005b838110156134835787818151811061305657613056615970565b6020026020010151925086818151811061307257613072615970565b602002602001015191507f1579d012ead512dcb248c91571fa46aaa0f3399f8d3e1098fac22575db2ed6938360800151036130d9576040517fc0e6f38000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61310e856004015484600001518560200151866040015187606001518860800151604051602001611f6795949392919061599f565b613144576040517fb05e92fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808301516040517f72c6838f0000000000000000000000000000000000000000000000000000000081526000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916372c6838f916131b39160040190815260200190565b602060405180830381865afa1580156131d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f49190615920565b90506001600160a01b038116613236576040517f6602115a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000816001600160a01b0316856040015186606001516040516024016132729291906001600160a01b0392831681529116602082015260400190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f192957c800000000000000000000000000000000000000000000000000000000179052516132d5919061593d565b600060405180830381855af49150503d8060008114613310576040519150601f19603f3d011682016040523d82523d6000602084013e613315565b606091505b5050905080613350576040517fd764f04e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84604001516001600160a01b031660cd547f7e1bc64dc0005c076de7c8597ca19cde8e68d0d0a28a32d75bc7934cffdafe888760000151886020015160405161339a929190615cc3565b60405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f52cc7fd8660400151604051602001613411919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161343c9190615cf1565b600060405180830381600087803b15801561345657600080fd5b505af115801561346a573d6000803e3d6000fd5b505050505050808061347b906159e9565b91505061303c565b5061348d846146fb565b60088401546122d2908690600160a01b900460ff16613e2a565b6134af6139f7565b6001600160a01b03811661352b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610c71565b6135348161398d565b50565b61353f6139f7565b60cd5415613579576040517f318cf47900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613583613703565b61358d9047615959565b90506135976109a0565b6001600160a01b03167f889d16c2f05ed249633dadc4c5c2aa8eeb677384800475aaf313cad7707e9e19826040516135d191815260200190565b60405180910390a260006135e36109a0565b604080516000815260208101918290526001600160a01b039290921691849161360c919061593d565b60006040518083038185875af1925050503d8060008114613649576040519150601f19603f3d011682016040523d82523d6000602084013e61364e565b606091505b5050905080613689576040517f27fcd9d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405163ea0a523760e01b815260206004820152601060248201527f4f776e657257697468647265774554480000000000000000000000000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a5237906064016112d6565b600060cf5460ce546109aa9190615908565b60005a905061372988888888888888612b13565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663455259cb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ad9190615d38565b905060006137b9614b76565b6137c591506010615d51565b905060005a846137d884620186a0615908565b6137e29190615908565b6137ec9190615959565b905060006137fa8285615d51565b90508060cf600082825461380e9190615908565b9091555050505050505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361387e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b503390565b600054610100900460ff166139005760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c71565b6113c2614b89565b600054610100900460ff166139855760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c71565b6113c2614c06565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6139ff6109a0565b6001600160a01b0316613a1a6033546001600160a01b031690565b6001600160a01b0316146113c25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c71565b600260655403613ac25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c71565b6002606555565b6001811515148015613b175750613ade6109a0565b6001600160a01b0316613b0b60cd54600090815260cb60205260409020600801546001600160a01b031690565b6001600160a01b031614155b15613b4e576040517f06ee429500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80158015613b865750613b5f6109a0565b6001600160a01b0316613b7a6033546001600160a01b031690565b6001600160a01b031614155b15613534576040517f6db2465f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808211613c345760405162461bcd60e51b815260206004820152603760248201527f4c69625f4d65726b6c65547265653a20546f74616c206c6561766573206d757360448201527f742062652067726561746572207468616e207a65726f2e0000000000000000006064820152608401610c71565b818410613ca85760405162461bcd60e51b8152602060048201526024808201527f4c69625f4d65726b6c65547265653a20496e646578206f7574206f6620626f7560448201527f6e64732e000000000000000000000000000000000000000000000000000000006064820152608401610c71565b613cb182614c93565b835114613d4c5760405162461bcd60e51b815260206004820152604d60248201527f4c69625f4d65726b6c65547265653a20546f74616c207369626c696e6773206460448201527f6f6573206e6f7420636f72726563746c7920636f72726573706f6e6420746f2060648201527f746f74616c206c65617665732e00000000000000000000000000000000000000608482015260a401610c71565b8460005b8451811015613e1d5785600116600103613db657848181518110613d7657613d76615970565b602002602001015182604051602001613d99929190918252602082015260400190565b604051602081830303815290604052805190602001209150613e04565b81858281518110613dc957613dc9615970565b6020026020010151604051602001613deb929190918252602082015260400190565b6040516020818303038152906040528051906020012091505b60019590951c9480613e15816159e9565b915050613d50565b5090951495945050505050565b80613e33575050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663455259cb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb79190615d38565b90506000613ec3614b76565b613ecf91506010615d51565b905060005a85613ee284620186a0615908565b613eec9190615908565b613ef69190615959565b905060006064613f267f000000000000000000000000000000000000000000000000000000000000000082615908565b613f308487615d51565b613f3a9190615d51565b613f449190615d70565b9050600060647f0000000000000000000000000000000000000000000000000000000000000000613f758588615d51565b613f7f9190615d51565b613f899190615d70565b90508160ce6000828254613f9d9190615908565b9091555082905060c96000613fb06109a0565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254613fdf9190615908565b925050819055508060cf6000828254613ff89190615908565b909155505050505050505050565b6001606555565b6002835460ff16600681111561402557614025614ed4565b1461405c576040517fcb6f6ae400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008083602001518060200190518101906140779190615df0565b915091506000846080015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856040516024016140c491815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f21f8a7210000000000000000000000000000000000000000000000000000000017905251614127919061593d565b600060405180830381855af49150503d8060008114614162576040519150601f19603f3d011682016040523d82523d6000602084013e614167565b606091505b5091509150816141a3576040517fda45f5f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818060200190518101906141b99190615920565b90506001600160a01b0381163b156142d35760cd54816001600160a01b0316856040516141e6919061593d565b60405180910390207fdc12392bc0b29f679ba6e7c5f560dd5735a9909ee29c4b345ef19df2c623b1b0878b60405161421f929190615e2d565b60405180910390a460405163ea0a523760e01b815260206004820152601960248201527f436f6e74726163744465706c6f796d656e74536b69707065640000000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b1580156142b657600080fd5b505af11580156142ca573d6000803e3d6000fd5b50505050611834565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168888600060405160240161431693929190615e4f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc7aeef0f0000000000000000000000000000000000000000000000000000000017905251614379919061593d565b600060405180830381855af49150503d80600081146143b4576040519150601f19603f3d011682016040523d82523d6000602084013e6143b9565b606091505b509150915081866040516020016143d09190615e78565b604051602081830303815290604052906143fd5760405162461bcd60e51b8152600401610c7191906151b8565b506000818060200190518101906144149190615920565b9050806001600160a01b0316846001600160a01b0316036145445760cd54816001600160a01b03168860405161444a919061593d565b60405180910390207fa5f92178a767e4250cb11280da2b868af52f7dbe6194258920d017e1d30cd7798a8f606001518d8051906020012060405161449093929190615ebd565b60405180910390a460405163ea0a523760e01b815260206004820152601060248201527f436f6e74726163744465706c6f7965640000000000000000000000000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b15801561452757600080fd5b505af115801561453b573d6000803e3d6000fd5b505050506146ed565b7f000000000000000000000000000000000000000000000000000000000000000060c960006145716109a0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546145a09190615908565b925050819055507f000000000000000000000000000000000000000000000000000000000000000060ce60008282546145d99190615908565b909155505060cd546040516001600160a01b038616906145fa908a9061593d565b60405180910390207fb56435b217b7b283698159b613df8b2b5d3c9eb8a9cf2abd2762d0b9d08c098b8a8e604051614633929190615e2d565b60405180910390a47f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f52cc7fd60cd5460405160200161467f91815260200190565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016146aa9190615ee2565b600060405180830381600087803b1580156146c457600080fd5b505af11580156146d8573d6000803e3d6000fd5b5050600060cd5550508b5460ff19166006178c555b505050505050505050505050565b805460ff1916600417815561470e6109a0565b6001600160a01b031660cd547f745f3f165a11892e95c826e15a0e3f1edebd0c600775d4e34e41d08f0c73ecf260405160405180910390a360405163ea0a523760e01b815260206004820152601d60248201527f4368756753706c6173684465706c6f796d656e74436f6d706c6574656400000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b1580156147d557600080fd5b505af11580156147e9573d6000803e3d6000fd5b5050600060cd55505050565b60038351600681111561480a5761480a614ed4565b14614841576040517fb38cba4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608201516040517f72c6838f0000000000000000000000000000000000000000000000000000000081526000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916372c6838f916148b09160040190815260200190565b602060405180830381865afa1580156148cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148f19190615920565b90507f1579d012ead512dcb248c91571fa46aaa0f3399f8d3e1098fac22575db2ed693836060015103614950576040517fc0e6f38000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000856020015180602001905181019061496d9190615f29565b9250925092506000846001600160a01b0316876040015185858560405160240161499a9493929190615f7f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9bc6ee9a00000000000000000000000000000000000000000000000000000000179052516149fd919061593d565b600060405180830381855af49150503d8060008114614a38576040519150601f19603f3d011682016040523d82523d6000602084013e614a3d565b606091505b5050905080614a78576040517fac5785a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614a806109a0565b6001600160a01b031687604001516001600160a01b031660cd547f572ca77d05d5995d2382e9e3b5f4819a396a2b7914dd3cb9a81070b9dbe1e2f589604051614acb91815260200190565b60405180910390a460405163ea0a523760e01b815260206004820152600f60248201527f53657450726f787953746f72616765000000000000000000000000000000000060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea0a523790606401600060405180830381600087803b158015614b6257600080fd5b505af11580156146ed573d6000803e3d6000fd5b366000614b81614d78565b915091509091565b600054610100900460ff166140065760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c71565b600054610100900460ff16614c835760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c71565b6113c2614c8e6109a0565b61398d565b6000808211614d0a5760405162461bcd60e51b815260206004820152603060248201527f4c69625f4d65726b6c65547265653a2043616e6e6f7420636f6d70757465206360448201527f65696c286c6f675f3229206f6620302e000000000000000000000000000000006064820152608401610c71565b81600103614d1a57506000919050565b81600060805b60018110614d585780614d36600180831b615959565b901b831615614d5057614d498183615908565b92811c9291505b60011c614d20565b506001811b8414614d7157614d6e600182615908565b90505b9392505050565b3660007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303614dc75760008036614dba601482615959565b92614b8193929190615fb0565b600036614b81565b82805482825590600052602060002090601f01602090048101928215614e645791602002820160005b83821115614e3557835183826101000a81548160ff0219169083151502179055509260200192600101602081600001049283019260010302614df8565b8015614e625782816101000a81549060ff0219169055600101602081600001049283019260010302614e35565b505b50614e70929150614e74565b5090565b5b80821115614e705760008155600101614e75565b6001600160a01b038116811461353457600080fd5b600060208284031215614eb057600080fd5b8135614d7181614e89565b600060208284031215614ecd57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60078110614f1357614f13614ed4565b9052565b600081518084526020808501945080840160005b83811015614f49578151151587529582019590820190600101614f2b565b509495945050505050565b60005b83811015614f6f578181015183820152602001614f57565b838111156124075750506000910152565b60008151808452614f98816020860160208601614f54565b601f01601f19169290920160200192915050565b60208152614fbe602082018351614f03565b60006020830151610160806040850152614fdc610180850183614f17565b91506040850151606085015260608501516080850152608085015160a085015260a085015160c085015260c085015160e085015260e085015161010081818701528087015191505061012061503b818701836001600160a01b03169052565b86015190506101406150508682018315159052565b860151858403601f190183870152905061506a8382614f80565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff811182821017156150c6576150c6615074565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156150f5576150f5615074565b604052919050565b600067ffffffffffffffff82111561511757615117615074565b50601f01601f191660200190565b600082601f83011261513657600080fd5b8135615149615144826150fd565b6150cc565b81815284602083860101111561515e57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561518d57600080fd5b813567ffffffffffffffff8111156151a457600080fd5b6151b084828501615125565b949350505050565b602081526000614d716020830184614f80565b80356151d681614e89565b919050565b6000806000606084860312156151f057600080fd5b83356151fb81614e89565b925060208401359150604084013561521281614e89565b809150509250925092565b600067ffffffffffffffff82111561523757615237615074565b5060051b60200190565b600082601f83011261525257600080fd5b813560206152626151448361521d565b82815260059290921b8401810191818101908684111561528157600080fd5b8286015b8481101561535257803567ffffffffffffffff808211156152a65760008081fd5b818901915060a080601f19848d030112156152c15760008081fd5b6152c96150a3565b87840135838111156152db5760008081fd5b6152e98d8a83880101615125565b825250604080850135848111156153005760008081fd5b61530e8e8b83890101615125565b8a84015250606093508385013561532481614e89565b9082015260808481013561533781614e89565b93820193909352920135908201528352918301918301615285565b509695505050505050565b600082601f83011261536e57600080fd5b8135602061537e6151448361521d565b828152600592831b850182019282820191908785111561539d57600080fd5b8387015b8581101561543157803567ffffffffffffffff8111156153c15760008081fd5b8801603f81018a136153d35760008081fd5b8581013560406153e56151448361521d565b82815291851b8301810191888101908d8411156154025760008081fd5b938201935b8385101561542057843582529389019390890190615407565b8852505050938501935084016153a1565b5090979650505050505050565b600082601f83011261544f57600080fd5b8135602061545f6151448361521d565b82815260059290921b8401810191818101908684111561547e57600080fd5b8286015b8481101561535257803567ffffffffffffffff808211156154a35760008081fd5b818901915060a080601f19848d030112156154be5760008081fd5b6154c66150a3565b87840135600281106154d85760008081fd5b8152604084810135848111156154ee5760008081fd5b6154fc8e8b83890101615125565b8a84015250606061550e8187016151cb565b8284015260809150818601358184015250828501359250838311156155335760008081fd5b6155418d8a85880101615125565b908201528652505050918301918301615482565b600082601f83011261556657600080fd5b813560206155766151448361521d565b82815260059290921b8401810191818101908684111561559557600080fd5b8286015b848110156153525780358352918301918301615599565b600080600080600060a086880312156155c857600080fd5b853567ffffffffffffffff808211156155e057600080fd5b6155ec89838a01615241565b9650602088013591508082111561560257600080fd5b61560e89838a0161535d565b9550604088013591508082111561562457600080fd5b61563089838a0161543e565b9450606088013591508082111561564657600080fd5b61565289838a01615555565b9350608088013591508082111561566857600080fd5b506156758882890161535d565b9150509295509295909350565b6000806040838503121561569557600080fd5b823567ffffffffffffffff808211156156ad57600080fd5b6156b986838701615241565b935060208501359150808211156156cf57600080fd5b506156dc8582860161535d565b9150509250929050565b6000806000606084860312156156fb57600080fd5b833567ffffffffffffffff8082111561571357600080fd5b61571f8783880161543e565b9450602086013591508082111561573557600080fd5b61574187838801615555565b9350604086013591508082111561575757600080fd5b506157648682870161535d565b9150509250925092565b801515811461353457600080fd5b600080600080600080600060e0888a03121561579757600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156157d157600080fd5b6157dd8a828b01615125565b92505060c08801356157ee8161576e565b8091505092959891949750929550565b6000806040838503121561581157600080fd5b823561581c81614e89565b9150602083013561582c8161576e565b809150509250929050565b600181811c9082168061584b57607f821691505b602082108103610d7e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008060006060848603121561589957600080fd5b83516158a481614e89565b6020850151604086015191945092506152128161576e565b6000602082840312156158ce57600080fd5b8151614d718161576e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561591b5761591b6158d9565b500190565b60006020828403121561593257600080fd5b8151614d7181614e89565b6000825161594f818460208701614f54565b9190910192915050565b60008282101561596b5761596b6158d9565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60a0815260006159b260a0830188614f80565b82810360208401526159c48188614f80565b6001600160a01b03968716604085015294909516606083015250608001529392505050565b600060001982036159fc576159fc6158d9565b5060010190565b60408152601760408201527f546f67676c65644d616e6167656450726f706f73616c730000000000000000006060820152608060208201526000614d716080830184614f80565b60a081526000615a5d60a0830188614f80565b6001600160a01b038716602084015260028610615a7c57615a7c614ed4565b8560408401528460608401528281036080840152615a9a8185614f80565b98975050505050505050565b86815285602082015284604082015283606082015282608082015260c060a08201526000615a9a60c0830184614f80565b601f82111561292657600081815260208120601f850160051c81016020861015615afe5750805b601f850160051c820191505b8181101561130457828155600101615b0a565b815167ffffffffffffffff811115615b3757615b37615074565b615b4b81615b458454615837565b84615ad7565b602080601f831160018114615b805760008415615b685750858301515b600019600386901b1c1916600185901b178555611304565b600085815260208120601f198616915b82811015615baf57888601518255948401946001909101908401615b90565b5085821015615bcd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006101008a83528960208401528860408401528760608401528660808401528060a0840152615c0f81840187614f80565b94151560c084015250506001600160a01b039190911660e0909101529695505050505050565b60408152601c60408201527f4368756753706c6173684465706c6f796d656e7450726f706f736564000000006060820152608060208201526000614d716080830184614f80565b60408152600b60408201527f50726f706f7365725365740000000000000000000000000000000000000000006060820152608060208201526000614d716080830184614f80565b604081526000615cd66040830185614f80565b8281036020840152615ce88185614f80565b95945050505050565b60408152600d60408201527f50726f78795570677261646564000000000000000000000000000000000000006060820152608060208201526000614d716080830184614f80565b600060208284031215615d4a57600080fd5b5051919050565b6000816000190483118215151615615d6b57615d6b6158d9565b500290565b600082615da6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082601f830112615dbc57600080fd5b8151615dca615144826150fd565b818152846020838601011115615ddf57600080fd5b6151b0826020830160208701614f54565b60008060408385031215615e0357600080fd5b82519150602083015167ffffffffffffffff811115615e2157600080fd5b6156dc85828601615dab565b604081526000615e406040830185614f80565b90508260208301529392505050565b838152606060208201526000615e686060830185614f80565b9050826040830152949350505050565b7f4661696c656420746f206465706c6f793a200000000000000000000000000000815260008251615eb0816012850160208701614f54565b9190910160120192915050565b606081526000615ed06060830186614f80565b60208301949094525060400152919050565b60408152601060408201527f4465706c6f796d656e744661696c6564000000000000000000000000000000006060820152608060208201526000614d716080830184614f80565b600080600060608486031215615f3e57600080fd5b83519250602084015160ff81168114615f5657600080fd5b604085015190925067ffffffffffffffff811115615f7357600080fd5b61576486828701615dab565b6001600160a01b038516815283602082015260ff8316604082015260806060820152600061506a6080830184614f80565b60008085851115615fc057600080fd5b83861115615fcd57600080fd5b505082019391909203915056fea164736f6c634300080f000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
