{
  "_format": "hh-sol-artifact-1",
  "contractName": "MockGovernance",
  "sourceName": "contracts/mock/MockGovernance.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IPENDLE",
          "name": "_pendle",
          "type": "address"
        },
        {
          "internalType": "contract ITimelock",
          "name": "_timelock",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_guardian",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "ProposalCanceled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "proposer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "targets",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "string[]",
          "name": "signatures",
          "type": "string[]"
        },
        {
          "indexed": false,
          "internalType": "bytes[]",
          "name": "calldatas",
          "type": "bytes[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "startBlock",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "endBlock",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "description",
          "type": "string"
        }
      ],
      "name": "ProposalCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "ProposalExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "eta",
          "type": "uint256"
        }
      ],
      "name": "ProposalQueued",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "support",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "votes",
          "type": "uint256"
        }
      ],
      "name": "VoteCast",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "BALLOT_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DOMAIN_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "NAME",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__abdicate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__acceptAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newPendingAdmin",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "eta",
          "type": "uint256"
        }
      ],
      "name": "__executeSetTimelockPendingAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newPendingAdmin",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "eta",
          "type": "uint256"
        }
      ],
      "name": "__queueSetTimelockPendingAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "cancel",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "support",
          "type": "bool"
        }
      ],
      "name": "castVote",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "support",
          "type": "bool"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "castVoteBySig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "execute",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "getActions",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "targets",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "signatures",
          "type": "string[]"
        },
        {
          "internalType": "bytes[]",
          "name": "calldatas",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        }
      ],
      "name": "getReceipt",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "hasVoted",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "support",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "votes",
              "type": "uint256"
            }
          ],
          "internalType": "struct PendleGovernance.Receipt",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "guardian",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "latestProposalIds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendle",
      "outputs": [
        {
          "internalType": "contract IPENDLE",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proposalCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proposalMaxOperations",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proposalThreshold",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "proposals",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "proposer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "eta",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "startBlock",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "endBlock",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "forVotes",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "againstVotes",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "canceled",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "executed",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "targets",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "signatures",
          "type": "string[]"
        },
        {
          "internalType": "bytes[]",
          "name": "calldatas",
          "type": "bytes[]"
        },
        {
          "internalType": "string",
          "name": "description",
          "type": "string"
        }
      ],
      "name": "propose",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "queue",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "quorumVotes",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "state",
      "outputs": [
        {
          "internalType": "enum PendleGovernance.ProposalState",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "timelock",
      "outputs": [
        {
          "internalType": "contract ITimelock",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "votingDelay",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "votingPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162002e4938038062002e49833981016040819052620000349162000077565b600180546001600160a01b039485166001600160a01b031991821617909155600080549385169382169390931790925560028054919093169116179055620000e3565b6000806000606084860312156200008c578283fd5b83516200009981620000ca565b6020850151909350620000ac81620000ca565b6040850151909250620000bf81620000ca565b809150509250925092565b6001600160a01b0381168114620000e057600080fd5b50565b612d5680620000f36000396000f3fe60806040526004361061019c5760003560e01c8063760fbc13116100ec578063d33219b41161008a578063ddf0b00911610064578063ddf0b00914610456578063deaaa7cc14610476578063e23a9a521461048b578063fe0d94c1146104b85761019c565b8063d33219b41461040c578063da35c66414610421578063da95691a146104365761019c565b8063a2c530da116100c6578063a2c530da146103ab578063a3f4df7e146103c0578063b58131b0146103e2578063b9a61961146103f75761019c565b8063760fbc13146103615780637bdbe4d014610376578063915006711461038b5761019c565b806324bc1a64116101595780633e4f49e6116101335780633e4f49e6146102d257806340e58ee5146102ff578063452a93201461031f5780634634c61f146103415761019c565b806324bc1a6414610278578063328dd9821461028d5780633932abb1146102bd5761019c565b8063013cf08b146101a157806302a251a3146101df57806315373e3d1461020157806317977c611461022357806320606b701461024357806321f43e4214610258575b600080fd5b3480156101ad57600080fd5b506101c16101bc3660046122e3565b6104cb565b6040516101d699989796959493929190612c1c565b60405180910390f35b3480156101eb57600080fd5b506101f4610524565b6040516101d691906126d8565b34801561020d57600080fd5b5061022161021c366004612326565b61052a565b005b34801561022f57600080fd5b506101f461023e36600461212d565b610539565b34801561024f57600080fd5b506101f461054b565b34801561026457600080fd5b50610221610273366004612147565b61056f565b34801561028457600080fd5b506101f4610656565b34801561029957600080fd5b506102ad6102a83660046122e3565b610664565b6040516101d69493929190612680565b3480156102c957600080fd5b506101f46108f3565b3480156102de57600080fd5b506102f26102ed3660046122e3565b6108f8565b6040516101d6919061273b565b34801561030b57600080fd5b5061022161031a3660046122e3565b610a7a565b34801561032b57600080fd5b50610334610cda565b6040516101d6919061253a565b34801561034d57600080fd5b5061022161035c366004612355565b610ce9565b34801561036d57600080fd5b50610221610e96565b34801561038257600080fd5b506101f4610ed2565b34801561039757600080fd5b506102216103a6366004612147565b610ed7565b3480156103b757600080fd5b50610334610fac565b3480156103cc57600080fd5b506103d5610fbb565b6040516101d6919061274f565b3480156103ee57600080fd5b506101f4610fe8565b34801561040357600080fd5b50610221610ff6565b34801561041857600080fd5b5061033461107b565b34801561042d57600080fd5b506101f461108a565b34801561044257600080fd5b506101f4610451366004612170565b611090565b34801561046257600080fd5b506102216104713660046122e3565b6113fa565b34801561048257600080fd5b506101f46116a4565b34801561049757600080fd5b506104ab6104a63660046122fb565b6116c8565b6040516101d69190612b5f565b6102216104c63660046122e3565b611729565b6004602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b9097015495966001600160a01b0390951695939492939192909160ff8082169161010090041689565b61438090565b6105353383836118ee565b5050565b60056020526000908152604090205481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6002546001600160a01b031633146105a25760405162461bcd60e51b8152600401610599906129ce565b60405180910390fd5b600080546040516001600160a01b0390911691630825f38f918391906105cc90879060200161253a565b604051602081830303815290604052856040518563ffffffff1660e01b81526004016105fb9493929190612567565b600060405180830381600087803b15801561061557600080fd5b505af1158015610629573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106519190810190612270565b505050565b6954b40b1f852bda00000090565b606080606080600060046000878152602001908152602001600020905080600301816004018260050183600601838054806020026020016040519081016040528092919081815260200182805480156106e657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106c8575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561073857602002820191906000526020600020905b815481526020019060010190808311610724575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561080b5760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156107f75780601f106107cc576101008083540402835291602001916107f7565b820191906000526020600020905b8154815290600101906020018083116107da57829003601f168201915b505050505081526020019060010190610760565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156108dd5760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156108c95780601f1061089e576101008083540402835291602001916108c9565b820191906000526020600020905b8154815290600101906020018083116108ac57829003601f168201915b505050505081526020019060010190610832565b5050505090509450945094509450509193509193565b600190565b6000816003541015801561090c5750600082115b6109285760405162461bcd60e51b815260040161059990612812565b6000828152600460205260409020600b81015460ff161561094d576002915050610a75565b80600701544311610962576000915050610a75565b80600801544311610977576001915050610a75565b80600a015481600901541115806109985750610991610656565b8160090154105b156109a7576003915050610a75565b60028101546109ba576004915050610a75565b600b810154610100900460ff16156109d6576007915050610a75565b6000546040805163281b6df760e21b81529051610a5f926001600160a01b03169163a06db7dc916004808301926020929190829003018186803b158015610a1c57600080fd5b505afa158015610a30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a549190612258565b600283015490611a8c565b4210610a6f576006915050610a75565b60059150505b919050565b6000610a85826108f8565b90506007816007811115610a9557fe5b1415610ab35760405162461bcd60e51b815260040161059990612762565b60008281526004602052604090206002546001600160a01b0316331480610b755750610add610fe8565b60018054838201546001600160a01b039182169263782d6fe19290911690610b06904390611aed565b6040518363ffffffff1660e01b8152600401610b2392919061254e565b60206040518083038186803b158015610b3b57600080fd5b505afa158015610b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b739190612258565b105b610b915760405162461bcd60e51b815260040161059990612b28565b600b8101805460ff1916600117905560005b6003820154811015610c9d576000546003830180546001600160a01b039092169163591fcdfe919084908110610bd557fe5b6000918252602090912001546004850180546001600160a01b039092169185908110610bfd57fe5b9060005260206000200154856005018581548110610c1757fe5b90600052602060002001866006018681548110610c3057fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610c5f959493929190612647565b600060405180830381600087803b158015610c7957600080fd5b505af1158015610c8d573d6000803e3d6000fd5b505060019092019150610ba39050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610ccd91906126d8565b60405180910390a1505050565b6002546001600160a01b031681565b60408051808201909152601181527050656e646c6520476f7665726e616e636560781b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667fb0061e28b6c7e16b58878ceaed61d0769e3931f6c15adacb1eba5f6b9ed896e4610d5e611b4a565b30604051602001610d7294939291906126e1565b60405160208183030381529060405280519060200120905060007f8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee8787604051602001610dc193929190612705565b60405160208183030381529060405280519060200120905060008282604051602001610dee92919061251f565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610e2b949392919061271d565b6020604051602081039080840390855afa158015610e4d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610e805760405162461bcd60e51b815260040161059990612799565b610e8b818a8a6118ee565b505050505050505050565b6002546001600160a01b03163314610ec05760405162461bcd60e51b8152600401610599906129ce565b600280546001600160a01b0319169055565b600a90565b6002546001600160a01b03163314610f015760405162461bcd60e51b8152600401610599906129ce565b600080546040516001600160a01b0390911691633a66f90191839190610f2b90879060200161253a565b604051602081830303815290604052856040518563ffffffff1660e01b8152600401610f5a9493929190612567565b602060405180830381600087803b158015610f7457600080fd5b505af1158015610f88573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106519190612258565b6001546001600160a01b031681565b6040518060400160405280601181526020017050656e646c6520476f7665726e616e636560781b81525081565b69152d02c7e14af680000090565b6002546001600160a01b031633146110205760405162461bcd60e51b8152600401610599906129ce565b6000805460408051630e18b68160e01b815290516001600160a01b0390921692630e18b6819260048084019382900301818387803b15801561106157600080fd5b505af1158015611075573d6000803e3d6000fd5b50505050565b6000546001600160a01b031681565b60035481565b600061109a610fe8565b600180546001600160a01b03169063782d6fe19033906110bb904390611aed565b6040518363ffffffff1660e01b81526004016110d892919061254e565b60206040518083038186803b1580156110f057600080fd5b505afa158015611104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111289190612258565b116111455760405162461bcd60e51b815260040161059990612987565b84518651148015611157575083518651145b8015611164575082518651145b6111805760405162461bcd60e51b815260040161059990612a75565b855161119e5760405162461bcd60e51b8152600401610599906128c7565b6111a6610ed2565b865111156111c65760405162461bcd60e51b81526004016105999061289d565b3360009081526005602052604090205480156112435760006111e7826108f8565b905060018160078111156111f757fe5b14156112155760405162461bcd60e51b81526004016105999061283f565b600081600781111561122357fe5b14156112415760405162461bcd60e51b815260040161059990612ac1565b505b60006112576112506108f3565b4390611a8c565b9050600061126d611266610524565b8390611a8c565b6003805460019081018083556000818152600460209081526040822092835592820180546001600160a01b0319163317905560028201558c51939450926112b9928401918d0190611caf565b5088516112cf90600483019060208c0190611d14565b5087516112e590600583019060208b0190611d4f565b5086516112fb90600683019060208a0190611da8565b5082816007018190555081816008018190555060008160090181905550600081600a0181905550600081600b0160006101000a81548160ff021916908315150217905550600081600b0160016101000a81548160ff0219169083151502179055508060000154600560008360010160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000154338c8c8c8c89898e6040516113e499989796959493929190612b84565b60405180910390a1549998505050505050505050565b6004611405826108f8565b600781111561141057fe5b1461142d5760405162461bcd60e51b8152600401610599906127c4565b600081815260046020818152604080842084548251630d48571f60e31b815292519195946114c2946001600160a01b0390921693636a42b8f8938183019392909182900301818887803b15801561148357600080fd5b505af1158015611497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bb9190612258565b4290611a8c565b905060005b600383015481101561166a576116628360030182815481106114e557fe5b6000918252602090912001546004850180546001600160a01b03909216918490811061150d57fe5b906000526020600020015485600501848154811061152757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156115b55780601f1061158a576101008083540402835291602001916115b5565b820191906000526020600020905b81548152906001019060200180831161159857829003601f168201915b50505050508660060185815481106115c957fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156116575780601f1061162c57610100808354040283529160200191611657565b820191906000526020600020905b81548152906001019060200180831161163a57829003601f168201915b505050505086611b4e565b6001016114c7565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610ccd9085908490612c68565b7f8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee81565b6116d0611e01565b5060009182526004602090815260408084206001600160a01b03939093168452600c9092018152918190208151606081018352815460ff8082161515835261010090910416151593810193909352600101549082015290565b6005611734826108f8565b600781111561173f57fe5b1461175c5760405162461bcd60e51b8152600401610599906128f5565b6000818152600460205260408120600b8101805461ff001916610100179055905b60038201548110156118b2576000546004830180546001600160a01b0390921691630825f38f9190849081106117af57fe5b90600052602060002001548460030184815481106117c957fe5b6000918252602090912001546004860180546001600160a01b0390921691869081106117f157fe5b906000526020600020015486600501868154811061180b57fe5b9060005260206000200187600601878154811061182457fe5b9060005260206000200188600201546040518763ffffffff1660e01b8152600401611853959493929190612647565b6000604051808303818588803b15801561186c57600080fd5b505af1158015611880573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526118a99190810190612270565b5060010161177d565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f826040516118e291906126d8565b60405180910390a15050565b60016118f9836108f8565b600781111561190457fe5b146119215760405162461bcd60e51b815260040161059990612a05565b60008281526004602090815260408083206001600160a01b0387168452600c8101909252909120805460ff161561196a5760405162461bcd60e51b815260040161059990612a2f565b600154600783015460405163782d6fe160e01b81526000926001600160a01b03169163782d6fe1916119a0918a9160040161254e565b60206040518083038186803b1580156119b857600080fd5b505afa1580156119cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f09190612258565b90508315611a11576009830154611a079082611a8c565b6009840155611a26565b600a830154611a209082611a8c565b600a8401555b8154600160ff19909116811761ff0019166101008615150217835582018190556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611a7c9088908890889086906125d3565b60405180910390a1505050505050565b600082820183811015611ae6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b44576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b4690565b6000546040516001600160a01b039091169063f2b0653790611b7c90889088908890889088906020016125fb565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611bae91906126d8565b602060405180830381600087803b158015611bc857600080fd5b505af1158015611bdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c00919061223c565b15611c1d5760405162461bcd60e51b815260040161059990612942565b600054604051633a66f90160e01b81526001600160a01b0390911690633a66f90190611c5590889088908890889088906004016125fb565b602060405180830381600087803b158015611c6f57600080fd5b505af1158015611c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca79190612258565b505050505050565b828054828255906000526020600020908101928215611d04579160200282015b82811115611d0457825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611ccf565b50611d10929150611e21565b5090565b828054828255906000526020600020908101928215611d04579160200282015b82811115611d04578251825591602001919060010190611d34565b828054828255906000526020600020908101928215611d9c579160200282015b82811115611d9c5782518051611d8c918491602090910190611e36565b5091602001919060010190611d6f565b50611d10929150611eb1565b828054828255906000526020600020908101928215611df5579160200282015b82811115611df55782518051611de5918491602090910190611e36565b5091602001919060010190611dc8565b50611d10929150611ece565b604080516060810182526000808252602082018190529181019190915290565b5b80821115611d105760008155600101611e22565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282611e6c5760008555611d04565b82601f10611e8557805160ff1916838001178555611d04565b82800160010185558215611d045791820182811115611d04578251825591602001919060010190611d34565b80821115611d10576000611ec58282611eeb565b50600101611eb1565b80821115611d10576000611ee28282611eeb565b50600101611ece565b50805460018160011615610100020316600290046000825580601f10611f115750611f2f565b601f016020900490600052602060002090810190611f2f9190611e21565b50565b6000611f45611f4084612cb8565b612c76565b9050828152838383011115611f5957600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b0381168114610a7557600080fd5b600082601f830112611f97578081fd5b81356020611fa7611f4083612c9a565b8281528181019085830183850287018401881015611fc3578586fd5b855b85811015611fe857611fd682611f70565b84529284019290840190600101611fc5565b5090979650505050505050565b600082601f830112612005578081fd5b81356020612015611f4083612c9a565b82815281810190858301855b85811015611fe8578135880189603f82011261203b578788fd5b61204c8a8783013560408401611f32565b8552509284019290840190600101612021565b600082601f83011261206f578081fd5b8135602061207f611f4083612c9a565b82815281810190858301855b85811015611fe8576120a2898684358b010161210e565b8452928401929084019060010161208b565b600082601f8301126120c4578081fd5b813560206120d4611f4083612c9a565b82815281810190858301838502870184018810156120f0578586fd5b855b85811015611fe8578135845292840192908401906001016120f2565b600082601f83011261211e578081fd5b611ae683833560208501611f32565b60006020828403121561213e578081fd5b611ae682611f70565b60008060408385031215612159578081fd5b61216283611f70565b946020939093013593505050565b600080600080600060a08688031215612187578081fd5b853567ffffffffffffffff8082111561219e578283fd5b6121aa89838a01611f87565b965060208801359150808211156121bf578283fd5b6121cb89838a016120b4565b955060408801359150808211156121e0578283fd5b6121ec89838a0161205f565b94506060880135915080821115612201578283fd5b61220d89838a01611ff5565b93506080880135915080821115612222578283fd5b5061222f8882890161210e565b9150509295509295909350565b60006020828403121561224d578081fd5b8151611ae681612d12565b600060208284031215612269578081fd5b5051919050565b600060208284031215612281578081fd5b815167ffffffffffffffff811115612297578182fd5b8201601f810184136122a7578182fd5b80516122b5611f4082612cb8565b8181528560208385010111156122c9578384fd5b6122da826020830160208601612ce6565b95945050505050565b6000602082840312156122f4578081fd5b5035919050565b6000806040838503121561230d578182fd5b8235915061231d60208401611f70565b90509250929050565b60008060408385031215612338578182fd5b82359150602083013561234a81612d12565b809150509250929050565b600080600080600060a0868803121561236c578283fd5b85359450602086013561237e81612d12565b9350604086013560ff81168114612393578384fd5b94979396509394606081013594506080013592915050565b6000815180845260208085019450808401835b838110156123e35781516001600160a01b0316875295820195908201906001016123be565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b85811015612434578284038952612422848351612470565b9885019893509084019060010161240a565b5091979650505050505050565b6000815180845260208085019450808401835b838110156123e357815187529582019590820190600101612454565b60008151808452612488816020860160208601612ce6565b601f01601f19169290920160200192915050565b600081546001808216600081146124ba57600181146124d857612516565b60028304607f16865260ff1983166020870152604086019350612516565b600283048087526124e886612cda565b60005b8281101561250c5781546020828b01015284820191506020810190506124eb565b8801602001955050505b50505092915050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b600060018060a01b038616825284602083015260a06040830152601860a08301527f73657450656e64696e6741646d696e286164647265737329000000000000000060c083015260e060608301526125c260e0830185612470565b905082608083015295945050505050565b6001600160a01b03949094168452602084019290925215156040830152606082015260800190565b600060018060a01b038716825285602083015260a0604083015261262260a0830186612470565b82810360608401526126348186612470565b9150508260808301529695505050505050565b600060018060a01b038716825285602083015260a0604083015261266e60a083018661249c565b8281036060840152612634818661249c565b60006080825261269360808301876123ab565b82810360208401526126a58187612441565b905082810360408401526126b981866123ee565b905082810360608401526126cd81856123ee565b979650505050505050565b90815260200190565b938452602084019290925260408301526001600160a01b0316606082015260800190565b92835260208301919091521515604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b602081016008831061274957fe5b91905290565b600060208252611ae66020830184612470565b6020808252601f908201527f63616e6e6f742063616e63656c2065786563757465642070726f706f73616c00604082015260600190565b602080825260119082015270696e76616c6964207369676e617475726560781b604082015260600190565b6020808252602e908201527f70726f706f73616c2063616e206f6e6c7920626520717565756564206966206960408201526d1d081a5cc81cdd58d8d95959195960921b606082015260800190565b6020808252601390820152721a5b9d985b1a59081c1c9bdc1bdcd85b081a59606a1b604082015260600190565b602080825260409082018190527f6f6e65206c6976652070726f706f73616c207065722070726f706f7365722c20908201527f666f756e6420616e20616c7265616479206163746976652070726f706f73616c606082015260800190565b60208082526010908201526f746f6f206d616e7920616374696f6e7360801b604082015260600190565b6020808252601490820152736d7573742070726f7669646520616374696f6e7360601b604082015260600190565b6020808252602d908201527f70726f706f73616c2063616e206f6e6c7920626520657865637574656420696660408201526c081a5d081a5cc81c5d595d5959609a1b606082015260800190565b60208082526025908201527f70726f706f73616c20616374696f6e20616c7265616479207175657565642061604082015264742065746160d81b606082015260800190565b60208082526027908201527f70726f706f73657220766f7465732062656c6f772070726f706f73616c2074686040820152661c995cda1bdb1960ca1b606082015260800190565b6020808252601b908201527f73656e646572206d75737420626520676f7620677561726469616e0000000000604082015260600190565b60208082526010908201526f1d9bdd1a5b99c81a5cc818db1bdcd95960821b604082015260600190565b60208082526026908201527f50656e646c653a3a5f63617374566f74653a20766f74657220616c7265616479604082015265081d9bdd195960d21b606082015260800190565b6020808252602c908201527f70726f706f73616c2066756e6374696f6e20696e666f726d6174696f6e20617260408201526b0d2e8f240dad2e6dac2e8c6d60a31b606082015260800190565b60208082526041908201527f6f6e65206c6976652070726f706f73616c207065722070726f706f7365722c2060408201527f666f756e6420616e20616c72656164792070656e64696e672070726f706f73616060820152601b60fa1b608082015260a00190565b60208082526018908201527f70726f706f7365722061626f7665207468726573686f6c640000000000000000604082015260600190565b8151151581526020808301511515908201526040918201519181019190915260600190565b8981526001600160a01b038916602082015261012060408201819052600090612baf8382018b6123ab565b90508281036060840152612bc3818a612441565b90508281036080840152612bd781896123ee565b905082810360a0840152612beb81886123ee565b90508560c08401528460e0840152828103610100840152612c0c8185612470565b9c9b505050505050505050505050565b9889526001600160a01b0397909716602089015260408801959095526060870193909352608086019190915260a085015260c0840152151560e083015215156101008201526101200190565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715612c9257fe5b604052919050565b600067ffffffffffffffff821115612cae57fe5b5060209081020190565b600067ffffffffffffffff821115612ccc57fe5b50601f01601f191660200190565b60009081526020902090565b60005b83811015612d01578181015183820152602001612ce9565b838111156110755750506000910152565b8015158114611f2f57600080fdfea264697066735822122055230ac9616fb5d6962a845cc3ec94f061856d938f880cd6d5bbf43b23b1b30264736f6c63430007060033",
  "deployedBytecode": "0x60806040526004361061019c5760003560e01c8063760fbc13116100ec578063d33219b41161008a578063ddf0b00911610064578063ddf0b00914610456578063deaaa7cc14610476578063e23a9a521461048b578063fe0d94c1146104b85761019c565b8063d33219b41461040c578063da35c66414610421578063da95691a146104365761019c565b8063a2c530da116100c6578063a2c530da146103ab578063a3f4df7e146103c0578063b58131b0146103e2578063b9a61961146103f75761019c565b8063760fbc13146103615780637bdbe4d014610376578063915006711461038b5761019c565b806324bc1a64116101595780633e4f49e6116101335780633e4f49e6146102d257806340e58ee5146102ff578063452a93201461031f5780634634c61f146103415761019c565b806324bc1a6414610278578063328dd9821461028d5780633932abb1146102bd5761019c565b8063013cf08b146101a157806302a251a3146101df57806315373e3d1461020157806317977c611461022357806320606b701461024357806321f43e4214610258575b600080fd5b3480156101ad57600080fd5b506101c16101bc3660046122e3565b6104cb565b6040516101d699989796959493929190612c1c565b60405180910390f35b3480156101eb57600080fd5b506101f4610524565b6040516101d691906126d8565b34801561020d57600080fd5b5061022161021c366004612326565b61052a565b005b34801561022f57600080fd5b506101f461023e36600461212d565b610539565b34801561024f57600080fd5b506101f461054b565b34801561026457600080fd5b50610221610273366004612147565b61056f565b34801561028457600080fd5b506101f4610656565b34801561029957600080fd5b506102ad6102a83660046122e3565b610664565b6040516101d69493929190612680565b3480156102c957600080fd5b506101f46108f3565b3480156102de57600080fd5b506102f26102ed3660046122e3565b6108f8565b6040516101d6919061273b565b34801561030b57600080fd5b5061022161031a3660046122e3565b610a7a565b34801561032b57600080fd5b50610334610cda565b6040516101d6919061253a565b34801561034d57600080fd5b5061022161035c366004612355565b610ce9565b34801561036d57600080fd5b50610221610e96565b34801561038257600080fd5b506101f4610ed2565b34801561039757600080fd5b506102216103a6366004612147565b610ed7565b3480156103b757600080fd5b50610334610fac565b3480156103cc57600080fd5b506103d5610fbb565b6040516101d6919061274f565b3480156103ee57600080fd5b506101f4610fe8565b34801561040357600080fd5b50610221610ff6565b34801561041857600080fd5b5061033461107b565b34801561042d57600080fd5b506101f461108a565b34801561044257600080fd5b506101f4610451366004612170565b611090565b34801561046257600080fd5b506102216104713660046122e3565b6113fa565b34801561048257600080fd5b506101f46116a4565b34801561049757600080fd5b506104ab6104a63660046122fb565b6116c8565b6040516101d69190612b5f565b6102216104c63660046122e3565b611729565b6004602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b9097015495966001600160a01b0390951695939492939192909160ff8082169161010090041689565b61438090565b6105353383836118ee565b5050565b60056020526000908152604090205481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6002546001600160a01b031633146105a25760405162461bcd60e51b8152600401610599906129ce565b60405180910390fd5b600080546040516001600160a01b0390911691630825f38f918391906105cc90879060200161253a565b604051602081830303815290604052856040518563ffffffff1660e01b81526004016105fb9493929190612567565b600060405180830381600087803b15801561061557600080fd5b505af1158015610629573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106519190810190612270565b505050565b6954b40b1f852bda00000090565b606080606080600060046000878152602001908152602001600020905080600301816004018260050183600601838054806020026020016040519081016040528092919081815260200182805480156106e657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106c8575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561073857602002820191906000526020600020905b815481526020019060010190808311610724575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561080b5760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156107f75780601f106107cc576101008083540402835291602001916107f7565b820191906000526020600020905b8154815290600101906020018083116107da57829003601f168201915b505050505081526020019060010190610760565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156108dd5760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156108c95780601f1061089e576101008083540402835291602001916108c9565b820191906000526020600020905b8154815290600101906020018083116108ac57829003601f168201915b505050505081526020019060010190610832565b5050505090509450945094509450509193509193565b600190565b6000816003541015801561090c5750600082115b6109285760405162461bcd60e51b815260040161059990612812565b6000828152600460205260409020600b81015460ff161561094d576002915050610a75565b80600701544311610962576000915050610a75565b80600801544311610977576001915050610a75565b80600a015481600901541115806109985750610991610656565b8160090154105b156109a7576003915050610a75565b60028101546109ba576004915050610a75565b600b810154610100900460ff16156109d6576007915050610a75565b6000546040805163281b6df760e21b81529051610a5f926001600160a01b03169163a06db7dc916004808301926020929190829003018186803b158015610a1c57600080fd5b505afa158015610a30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a549190612258565b600283015490611a8c565b4210610a6f576006915050610a75565b60059150505b919050565b6000610a85826108f8565b90506007816007811115610a9557fe5b1415610ab35760405162461bcd60e51b815260040161059990612762565b60008281526004602052604090206002546001600160a01b0316331480610b755750610add610fe8565b60018054838201546001600160a01b039182169263782d6fe19290911690610b06904390611aed565b6040518363ffffffff1660e01b8152600401610b2392919061254e565b60206040518083038186803b158015610b3b57600080fd5b505afa158015610b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b739190612258565b105b610b915760405162461bcd60e51b815260040161059990612b28565b600b8101805460ff1916600117905560005b6003820154811015610c9d576000546003830180546001600160a01b039092169163591fcdfe919084908110610bd557fe5b6000918252602090912001546004850180546001600160a01b039092169185908110610bfd57fe5b9060005260206000200154856005018581548110610c1757fe5b90600052602060002001866006018681548110610c3057fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610c5f959493929190612647565b600060405180830381600087803b158015610c7957600080fd5b505af1158015610c8d573d6000803e3d6000fd5b505060019092019150610ba39050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610ccd91906126d8565b60405180910390a1505050565b6002546001600160a01b031681565b60408051808201909152601181527050656e646c6520476f7665726e616e636560781b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667fb0061e28b6c7e16b58878ceaed61d0769e3931f6c15adacb1eba5f6b9ed896e4610d5e611b4a565b30604051602001610d7294939291906126e1565b60405160208183030381529060405280519060200120905060007f8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee8787604051602001610dc193929190612705565b60405160208183030381529060405280519060200120905060008282604051602001610dee92919061251f565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610e2b949392919061271d565b6020604051602081039080840390855afa158015610e4d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610e805760405162461bcd60e51b815260040161059990612799565b610e8b818a8a6118ee565b505050505050505050565b6002546001600160a01b03163314610ec05760405162461bcd60e51b8152600401610599906129ce565b600280546001600160a01b0319169055565b600a90565b6002546001600160a01b03163314610f015760405162461bcd60e51b8152600401610599906129ce565b600080546040516001600160a01b0390911691633a66f90191839190610f2b90879060200161253a565b604051602081830303815290604052856040518563ffffffff1660e01b8152600401610f5a9493929190612567565b602060405180830381600087803b158015610f7457600080fd5b505af1158015610f88573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106519190612258565b6001546001600160a01b031681565b6040518060400160405280601181526020017050656e646c6520476f7665726e616e636560781b81525081565b69152d02c7e14af680000090565b6002546001600160a01b031633146110205760405162461bcd60e51b8152600401610599906129ce565b6000805460408051630e18b68160e01b815290516001600160a01b0390921692630e18b6819260048084019382900301818387803b15801561106157600080fd5b505af1158015611075573d6000803e3d6000fd5b50505050565b6000546001600160a01b031681565b60035481565b600061109a610fe8565b600180546001600160a01b03169063782d6fe19033906110bb904390611aed565b6040518363ffffffff1660e01b81526004016110d892919061254e565b60206040518083038186803b1580156110f057600080fd5b505afa158015611104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111289190612258565b116111455760405162461bcd60e51b815260040161059990612987565b84518651148015611157575083518651145b8015611164575082518651145b6111805760405162461bcd60e51b815260040161059990612a75565b855161119e5760405162461bcd60e51b8152600401610599906128c7565b6111a6610ed2565b865111156111c65760405162461bcd60e51b81526004016105999061289d565b3360009081526005602052604090205480156112435760006111e7826108f8565b905060018160078111156111f757fe5b14156112155760405162461bcd60e51b81526004016105999061283f565b600081600781111561122357fe5b14156112415760405162461bcd60e51b815260040161059990612ac1565b505b60006112576112506108f3565b4390611a8c565b9050600061126d611266610524565b8390611a8c565b6003805460019081018083556000818152600460209081526040822092835592820180546001600160a01b0319163317905560028201558c51939450926112b9928401918d0190611caf565b5088516112cf90600483019060208c0190611d14565b5087516112e590600583019060208b0190611d4f565b5086516112fb90600683019060208a0190611da8565b5082816007018190555081816008018190555060008160090181905550600081600a0181905550600081600b0160006101000a81548160ff021916908315150217905550600081600b0160016101000a81548160ff0219169083151502179055508060000154600560008360010160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000154338c8c8c8c89898e6040516113e499989796959493929190612b84565b60405180910390a1549998505050505050505050565b6004611405826108f8565b600781111561141057fe5b1461142d5760405162461bcd60e51b8152600401610599906127c4565b600081815260046020818152604080842084548251630d48571f60e31b815292519195946114c2946001600160a01b0390921693636a42b8f8938183019392909182900301818887803b15801561148357600080fd5b505af1158015611497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bb9190612258565b4290611a8c565b905060005b600383015481101561166a576116628360030182815481106114e557fe5b6000918252602090912001546004850180546001600160a01b03909216918490811061150d57fe5b906000526020600020015485600501848154811061152757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156115b55780601f1061158a576101008083540402835291602001916115b5565b820191906000526020600020905b81548152906001019060200180831161159857829003601f168201915b50505050508660060185815481106115c957fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156116575780601f1061162c57610100808354040283529160200191611657565b820191906000526020600020905b81548152906001019060200180831161163a57829003601f168201915b505050505086611b4e565b6001016114c7565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610ccd9085908490612c68565b7f8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee81565b6116d0611e01565b5060009182526004602090815260408084206001600160a01b03939093168452600c9092018152918190208151606081018352815460ff8082161515835261010090910416151593810193909352600101549082015290565b6005611734826108f8565b600781111561173f57fe5b1461175c5760405162461bcd60e51b8152600401610599906128f5565b6000818152600460205260408120600b8101805461ff001916610100179055905b60038201548110156118b2576000546004830180546001600160a01b0390921691630825f38f9190849081106117af57fe5b90600052602060002001548460030184815481106117c957fe5b6000918252602090912001546004860180546001600160a01b0390921691869081106117f157fe5b906000526020600020015486600501868154811061180b57fe5b9060005260206000200187600601878154811061182457fe5b9060005260206000200188600201546040518763ffffffff1660e01b8152600401611853959493929190612647565b6000604051808303818588803b15801561186c57600080fd5b505af1158015611880573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526118a99190810190612270565b5060010161177d565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f826040516118e291906126d8565b60405180910390a15050565b60016118f9836108f8565b600781111561190457fe5b146119215760405162461bcd60e51b815260040161059990612a05565b60008281526004602090815260408083206001600160a01b0387168452600c8101909252909120805460ff161561196a5760405162461bcd60e51b815260040161059990612a2f565b600154600783015460405163782d6fe160e01b81526000926001600160a01b03169163782d6fe1916119a0918a9160040161254e565b60206040518083038186803b1580156119b857600080fd5b505afa1580156119cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f09190612258565b90508315611a11576009830154611a079082611a8c565b6009840155611a26565b600a830154611a209082611a8c565b600a8401555b8154600160ff19909116811761ff0019166101008615150217835582018190556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611a7c9088908890889086906125d3565b60405180910390a1505050505050565b600082820183811015611ae6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b44576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b4690565b6000546040516001600160a01b039091169063f2b0653790611b7c90889088908890889088906020016125fb565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611bae91906126d8565b602060405180830381600087803b158015611bc857600080fd5b505af1158015611bdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c00919061223c565b15611c1d5760405162461bcd60e51b815260040161059990612942565b600054604051633a66f90160e01b81526001600160a01b0390911690633a66f90190611c5590889088908890889088906004016125fb565b602060405180830381600087803b158015611c6f57600080fd5b505af1158015611c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca79190612258565b505050505050565b828054828255906000526020600020908101928215611d04579160200282015b82811115611d0457825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611ccf565b50611d10929150611e21565b5090565b828054828255906000526020600020908101928215611d04579160200282015b82811115611d04578251825591602001919060010190611d34565b828054828255906000526020600020908101928215611d9c579160200282015b82811115611d9c5782518051611d8c918491602090910190611e36565b5091602001919060010190611d6f565b50611d10929150611eb1565b828054828255906000526020600020908101928215611df5579160200282015b82811115611df55782518051611de5918491602090910190611e36565b5091602001919060010190611dc8565b50611d10929150611ece565b604080516060810182526000808252602082018190529181019190915290565b5b80821115611d105760008155600101611e22565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282611e6c5760008555611d04565b82601f10611e8557805160ff1916838001178555611d04565b82800160010185558215611d045791820182811115611d04578251825591602001919060010190611d34565b80821115611d10576000611ec58282611eeb565b50600101611eb1565b80821115611d10576000611ee28282611eeb565b50600101611ece565b50805460018160011615610100020316600290046000825580601f10611f115750611f2f565b601f016020900490600052602060002090810190611f2f9190611e21565b50565b6000611f45611f4084612cb8565b612c76565b9050828152838383011115611f5957600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b0381168114610a7557600080fd5b600082601f830112611f97578081fd5b81356020611fa7611f4083612c9a565b8281528181019085830183850287018401881015611fc3578586fd5b855b85811015611fe857611fd682611f70565b84529284019290840190600101611fc5565b5090979650505050505050565b600082601f830112612005578081fd5b81356020612015611f4083612c9a565b82815281810190858301855b85811015611fe8578135880189603f82011261203b578788fd5b61204c8a8783013560408401611f32565b8552509284019290840190600101612021565b600082601f83011261206f578081fd5b8135602061207f611f4083612c9a565b82815281810190858301855b85811015611fe8576120a2898684358b010161210e565b8452928401929084019060010161208b565b600082601f8301126120c4578081fd5b813560206120d4611f4083612c9a565b82815281810190858301838502870184018810156120f0578586fd5b855b85811015611fe8578135845292840192908401906001016120f2565b600082601f83011261211e578081fd5b611ae683833560208501611f32565b60006020828403121561213e578081fd5b611ae682611f70565b60008060408385031215612159578081fd5b61216283611f70565b946020939093013593505050565b600080600080600060a08688031215612187578081fd5b853567ffffffffffffffff8082111561219e578283fd5b6121aa89838a01611f87565b965060208801359150808211156121bf578283fd5b6121cb89838a016120b4565b955060408801359150808211156121e0578283fd5b6121ec89838a0161205f565b94506060880135915080821115612201578283fd5b61220d89838a01611ff5565b93506080880135915080821115612222578283fd5b5061222f8882890161210e565b9150509295509295909350565b60006020828403121561224d578081fd5b8151611ae681612d12565b600060208284031215612269578081fd5b5051919050565b600060208284031215612281578081fd5b815167ffffffffffffffff811115612297578182fd5b8201601f810184136122a7578182fd5b80516122b5611f4082612cb8565b8181528560208385010111156122c9578384fd5b6122da826020830160208601612ce6565b95945050505050565b6000602082840312156122f4578081fd5b5035919050565b6000806040838503121561230d578182fd5b8235915061231d60208401611f70565b90509250929050565b60008060408385031215612338578182fd5b82359150602083013561234a81612d12565b809150509250929050565b600080600080600060a0868803121561236c578283fd5b85359450602086013561237e81612d12565b9350604086013560ff81168114612393578384fd5b94979396509394606081013594506080013592915050565b6000815180845260208085019450808401835b838110156123e35781516001600160a01b0316875295820195908201906001016123be565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b85811015612434578284038952612422848351612470565b9885019893509084019060010161240a565b5091979650505050505050565b6000815180845260208085019450808401835b838110156123e357815187529582019590820190600101612454565b60008151808452612488816020860160208601612ce6565b601f01601f19169290920160200192915050565b600081546001808216600081146124ba57600181146124d857612516565b60028304607f16865260ff1983166020870152604086019350612516565b600283048087526124e886612cda565b60005b8281101561250c5781546020828b01015284820191506020810190506124eb565b8801602001955050505b50505092915050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b600060018060a01b038616825284602083015260a06040830152601860a08301527f73657450656e64696e6741646d696e286164647265737329000000000000000060c083015260e060608301526125c260e0830185612470565b905082608083015295945050505050565b6001600160a01b03949094168452602084019290925215156040830152606082015260800190565b600060018060a01b038716825285602083015260a0604083015261262260a0830186612470565b82810360608401526126348186612470565b9150508260808301529695505050505050565b600060018060a01b038716825285602083015260a0604083015261266e60a083018661249c565b8281036060840152612634818661249c565b60006080825261269360808301876123ab565b82810360208401526126a58187612441565b905082810360408401526126b981866123ee565b905082810360608401526126cd81856123ee565b979650505050505050565b90815260200190565b938452602084019290925260408301526001600160a01b0316606082015260800190565b92835260208301919091521515604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b602081016008831061274957fe5b91905290565b600060208252611ae66020830184612470565b6020808252601f908201527f63616e6e6f742063616e63656c2065786563757465642070726f706f73616c00604082015260600190565b602080825260119082015270696e76616c6964207369676e617475726560781b604082015260600190565b6020808252602e908201527f70726f706f73616c2063616e206f6e6c7920626520717565756564206966206960408201526d1d081a5cc81cdd58d8d95959195960921b606082015260800190565b6020808252601390820152721a5b9d985b1a59081c1c9bdc1bdcd85b081a59606a1b604082015260600190565b602080825260409082018190527f6f6e65206c6976652070726f706f73616c207065722070726f706f7365722c20908201527f666f756e6420616e20616c7265616479206163746976652070726f706f73616c606082015260800190565b60208082526010908201526f746f6f206d616e7920616374696f6e7360801b604082015260600190565b6020808252601490820152736d7573742070726f7669646520616374696f6e7360601b604082015260600190565b6020808252602d908201527f70726f706f73616c2063616e206f6e6c7920626520657865637574656420696660408201526c081a5d081a5cc81c5d595d5959609a1b606082015260800190565b60208082526025908201527f70726f706f73616c20616374696f6e20616c7265616479207175657565642061604082015264742065746160d81b606082015260800190565b60208082526027908201527f70726f706f73657220766f7465732062656c6f772070726f706f73616c2074686040820152661c995cda1bdb1960ca1b606082015260800190565b6020808252601b908201527f73656e646572206d75737420626520676f7620677561726469616e0000000000604082015260600190565b60208082526010908201526f1d9bdd1a5b99c81a5cc818db1bdcd95960821b604082015260600190565b60208082526026908201527f50656e646c653a3a5f63617374566f74653a20766f74657220616c7265616479604082015265081d9bdd195960d21b606082015260800190565b6020808252602c908201527f70726f706f73616c2066756e6374696f6e20696e666f726d6174696f6e20617260408201526b0d2e8f240dad2e6dac2e8c6d60a31b606082015260800190565b60208082526041908201527f6f6e65206c6976652070726f706f73616c207065722070726f706f7365722c2060408201527f666f756e6420616e20616c72656164792070656e64696e672070726f706f73616060820152601b60fa1b608082015260a00190565b60208082526018908201527f70726f706f7365722061626f7665207468726573686f6c640000000000000000604082015260600190565b8151151581526020808301511515908201526040918201519181019190915260600190565b8981526001600160a01b038916602082015261012060408201819052600090612baf8382018b6123ab565b90508281036060840152612bc3818a612441565b90508281036080840152612bd781896123ee565b905082810360a0840152612beb81886123ee565b90508560c08401528460e0840152828103610100840152612c0c8185612470565b9c9b505050505050505050505050565b9889526001600160a01b0397909716602089015260408801959095526060870193909352608086019190915260a085015260c0840152151560e083015215156101008201526101200190565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715612c9257fe5b604052919050565b600067ffffffffffffffff821115612cae57fe5b5060209081020190565b600067ffffffffffffffff821115612ccc57fe5b50601f01601f191660200190565b60009081526020902090565b60005b83811015612d01578181015183820152602001612ce9565b838111156110755750506000910152565b8015158114611f2f57600080fdfea264697066735822122055230ac9616fb5d6962a845cc3ec94f061856d938f880cd6d5bbf43b23b1b30264736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
