{
  "_format": "hh-sol-artifact-1",
  "contractName": "GovernorAlpha",
  "sourceName": "contracts/governance/GovernorAlpha.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "timelock_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "png_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "guardian_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "threshold_",
          "type": "uint256"
        }
      ],
      "payable": false,
      "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": "startTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "endTime",
          "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": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "startBlock",
          "type": "uint256"
        }
      ],
      "name": "StartBlockSet",
      "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"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "BALLOT_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "DOMAIN_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "__abdicate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "__acceptAdmin",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newPendingAdmin",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "eta",
          "type": "uint256"
        }
      ],
      "name": "__executeSetTimelockPendingAdmin",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newPendingAdmin",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "eta",
          "type": "uint256"
        }
      ],
      "name": "__queueSetTimelockPendingAdmin",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "cancel",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "support",
          "type": "bool"
        }
      ],
      "name": "castVote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "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": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "execute",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": true,
      "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[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "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": "uint96",
              "name": "votes",
              "type": "uint96"
            }
          ],
          "internalType": "struct GovernorAlpha.Receipt",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "guardian",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "latestProposalIds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "png",
      "outputs": [
        {
          "internalType": "contract PngInterface",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "proposalCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "proposalMaxOperations",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "proposalThreshold",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "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": "startTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "endTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "startBlock",
          "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"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "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"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "queue",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "state",
      "outputs": [
        {
          "internalType": "enum GovernorAlpha.ProposalState",
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "timelock",
      "outputs": [
        {
          "internalType": "contract TimelockInterface",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "votingDelay",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "votingPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506040516200548738038062005487833981810160405262000037919081019062000139565b83600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000819055505050505062000217565b6000815190506200011c81620001e3565b92915050565b6000815190506200013381620001fd565b92915050565b600080600080608085870312156200015057600080fd5b600062000160878288016200010b565b945050602062000173878288016200010b565b935050604062000186878288016200010b565b9250506060620001998782880162000122565b91505092959194509250565b6000620001b282620001b9565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b620001ee81620001a5565b8114620001fa57600080fd5b50565b6200020881620001d9565b81146200021457600080fd5b50565b61526080620002276000396000f3fe6080604052600436106101815760003560e01c80635f775678116100d1578063d33219b41161008a578063ddf0b00911610064578063ddf0b0091461056c578063deaaa7cc14610595578063e23a9a52146105c0578063fe0d94c1146105fd57610181565b8063d33219b4146104d9578063da35c66414610504578063da95691a1461052f57610181565b80635f77567814610401578063760fbc131461042c5780637bdbe4d014610443578063915006711461046e578063b58131b014610497578063b9a61961146104c257610181565b806321f43e421161013e5780633e4f49e6116101185780633e4f49e61461034757806340e58ee514610384578063452a9320146103ad5780634634c61f146103d857610181565b806321f43e42146102b3578063328dd982146102dc5780633932abb11461031c57610181565b8063013cf08b1461018657806302a251a3146101cc57806306fdde03146101f757806315373e3d1461022257806317977c611461024b57806320606b7014610288575b600080fd5b34801561019257600080fd5b506101ad60048036036101a89190810190613325565b610619565b6040516101c39a99989796959493929190614c20565b60405180910390f35b3480156101d857600080fd5b506101e16106a7565b6040516101ee9190614b55565b60405180910390f35b34801561020357600080fd5b5061020c6106b2565b6040516102199190614878565b60405180910390f35b34801561022e57600080fd5b50610249600480360361024491908101906133b3565b6106eb565b005b34801561025757600080fd5b50610272600480360361026d919081019061313e565b6106fa565b60405161027f9190614b55565b60405180910390f35b34801561029457600080fd5b5061029d610712565b6040516102aa919061474b565b60405180910390f35b3480156102bf57600080fd5b506102da60048036036102d59190810190613167565b610729565b005b3480156102e857600080fd5b5061030360048036036102fe9190810190613325565b6108b8565b60405161031394939291906146ea565b60405180910390f35b34801561032857600080fd5b50610331610b95565b60405161033e9190614b55565b60405180910390f35b34801561035357600080fd5b5061036e60048036036103699190810190613325565b610ba0565b60405161037b919061485d565b60405180910390f35b34801561039057600080fd5b506103ab60048036036103a69190810190613325565b610d6e565b005b3480156103b957600080fd5b506103c26110ae565b6040516103cf9190614517565b60405180910390f35b3480156103e457600080fd5b506103ff60048036036103fa91908101906133ef565b6110d4565b005b34801561040d57600080fd5b506104166112a3565b6040516104239190614827565b60405180910390f35b34801561043857600080fd5b506104416112c9565b005b34801561044f57600080fd5b5061045861139d565b6040516104659190614b55565b60405180910390f35b34801561047a57600080fd5b5061049560048036036104909190810190613167565b6113a6565b005b3480156104a357600080fd5b506104ac611530565b6040516104b99190614b55565b60405180910390f35b3480156104ce57600080fd5b506104d7611536565b005b3480156104e557600080fd5b506104ee61164a565b6040516104fb9190614842565b60405180910390f35b34801561051057600080fd5b50610519611670565b6040516105269190614b55565b60405180910390f35b34801561053b57600080fd5b50610556600480360361055191908101906131a3565b611676565b6040516105639190614b55565b60405180910390f35b34801561057857600080fd5b50610593600480360361058e9190810190613325565b611c5f565b005b3480156105a157600080fd5b506105aa611faf565b6040516105b7919061474b565b60405180910390f35b3480156105cc57600080fd5b506105e760048036036105e29190810190613377565b611fc6565b6040516105f49190614b3a565b60405180910390f35b61061760048036036106129190810190613325565b6120a8565b005b60056020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600201549080600701549080600801549080600901549080600a01549080600b01549080600c0160009054906101000a900460ff169080600c0160019054906101000a900460ff1690508a565b60006203f480905090565b6040518060400160405280601781526020017f50616e676f6c696e20476f7665726e6f7220416c70686100000000000000000081525081565b6106f63383836122f6565b5050565b60066020528060005260406000206000915090505481565b60405161071e906144ed565b604051809103902081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b0906148fa565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630825f38f600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560405160200161082d9190614517565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161085c949392919061455b565b600060405180830381600087803b15801561087657600080fd5b505af115801561088a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506108b391908101906132e4565b505050565b6060806060806000600560008781526020019081526020016000209050806003018160040182600501836006018380548060200260200160405190810160405280929190818152602001828054801561096657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161091c575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156109b857602002820191906000526020600020905b8154815260200190600101908083116109a4575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b82821015610a9c578382906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a885780601f10610a5d57610100808354040283529160200191610a88565b820191906000526020600020905b815481529060010190602001808311610a6b57829003601f168201915b5050505050815260200190600101906109e0565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015610b7f578382906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b6b5780601f10610b4057610100808354040283529160200191610b6b565b820191906000526020600020905b815481529060010190602001808311610b4e57829003601f168201915b505050505081526020019060010190610ac3565b5050505090509450945094509450509193509193565b600062015180905090565b60008160045410158015610bb45750600082115b610bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bea9061491a565b60405180910390fd5b600060056000848152602001908152602001600020905080600c0160009054906101000a900460ff1615610c2b576002915050610d69565b80600701544211610c40576000915050610d69565b80600801544211610c55576001915050610d69565b80600b015481600a015411610c6e576003915050610d69565b600081600201541415610c85576004915050610d69565b80600c0160019054906101000a900460ff1615610ca6576007915050610d69565b610d538160020154600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1a287e26040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1657600080fd5b505afa158015610d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d4e919081019061334e565b612618565b4210610d63576006915050610d69565b60059150505b919050565b6000610d7982610ba0565b9050600780811115610d8757fe5b816007811115610d9357fe5b1415610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90614aba565b60405180910390fd5b6000600560008481526020019081526020016000209050600054600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe18360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e5c43600161266d565b6040518363ffffffff1660e01b8152600401610e799291906145ba565b60206040518083038186803b158015610e9157600080fd5b505afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ec99190810190613466565b6bffffffffffffffffffffffff1610610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0e906149fa565b60405180910390fd5b600181600c0160006101000a81548160ff02191690831515021790555060008090505b816003018054905081101561107157600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663591fcdfe836003018381548110610f9657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846004018481548110610fd057fe5b9060005260206000200154856005018581548110610fea57fe5b9060005260206000200186600601868154811061100357fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401611032959493929190614689565b600060405180830381600087803b15801561104c57600080fd5b505af1158015611060573d6000803e3d6000fd5b505050508080600101915050610f3a565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c836040516110a19190614b55565b60405180910390a1505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006040516110e2906144ed565b60405180910390206040518060400160405280601781526020017f50616e676f6c696e20476f7665726e6f7220416c7068610000000000000000008152508051906020012061112f6126bd565b306040516020016111439493929190614766565b604051602081830303815290604052805190602001209050600060405161116990614502565b60405180910390208787604051602001611185939291906147ab565b604051602081830303815290604052805190602001209050600082826040516020016111b29291906144b6565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516111ef94939291906147e2565b6020604051602081039080840390855afa158015611211573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561128d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128490614a7a565b60405180910390fd5b611298818a8a6122f6565b505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135090614b1a565b60405180910390fd5b6000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600a905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d9061497a565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a66f901600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000856040516020016114aa9190614517565b604051602081830303815290604052856040518563ffffffff1660e01b81526004016114d9949392919061455b565b602060405180830381600087803b1580156114f357600080fd5b505af1158015611507573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061152b91908101906132bb565b505050565b60005481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bd9061489a565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e18b6816040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561163057600080fd5b505af1158015611644573d6000803e3d6000fd5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60008054600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe1336116c443600161266d565b6040518363ffffffff1660e01b81526004016116e1929190614532565b60206040518083038186803b1580156116f957600080fd5b505afa15801561170d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117319190810190613466565b6bffffffffffffffffffffffff161161177f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177690614a5a565b60405180910390fd5b84518651148015611791575083518651145b801561179e575082518651145b6117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d4906149da565b60405180910390fd5b600086511415611822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181990614a3a565b60405180910390fd5b61182a61139d565b8651111561186d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118649061499a565b60405180910390fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811461197c5760006118c482610ba0565b9050600160078111156118d357fe5b8160078111156118df57fe5b1415611920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191790614a9a565b60405180910390fd5b6000600781111561192d57fe5b81600781111561193957fe5b141561197a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119719061495a565b60405180910390fd5b505b600061198f4261198a610b95565b612618565b905060006119b4426119af6119a26106a7565b6119aa610b95565b612618565b612618565b90506004600081548092919060010191905055506119d06128a0565b604051806101c0016040528060045481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a81526020018981526020018881526020018481526020018381526020016000815260200160008152602001600081526020016000151581526020016000151581525090508060056000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003019080519060200190611ae1929190612929565b506080820151816004019080519060200190611afe9291906129b3565b5060a0820151816005019080519060200190611b1b929190612a00565b5060c0820151816006019080519060200190611b38929190612a60565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c0160006101000a81548160ff0219169083151502179055506101a082015181600c0160016101000a81548160ff021916908315150217905550905050806000015160066000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e604051611c4399989796959493929190614b70565b60405180910390a1806000015194505050505095945050505050565b60046007811115611c6c57fe5b611c7582610ba0565b6007811115611c8057fe5b14611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb7906148ba565b60405180910390fd5b60006005600083815260200190815260200160002090506000611d8242600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b158015611d4557600080fd5b505afa158015611d59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d7d919081019061334e565b612618565b905060008090505b8260030180549050811015611f6757611f5a836003018281548110611dab57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846004018381548110611de557fe5b9060005260206000200154856005018481548110611dff57fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e9d5780601f10611e7257610100808354040283529160200191611e9d565b820191906000526020600020905b815481529060010190602001808311611e8057829003601f168201915b5050505050866006018581548110611eb157fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f4f5780601f10611f2457610100808354040283529160200191611f4f565b820191906000526020600020905b815481529060010190602001808311611f3257829003601f168201915b5050505050866126ca565b8080600101915050611d8a565b508082600201819055507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928382604051611fa2929190614cbc565b60405180910390a1505050565b604051611fbb90614502565b604051809103902081565b611fce612ac0565b60056000848152602001908152602001600020600d0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff161515151581526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b600560078111156120b557fe5b6120be82610ba0565b60078111156120c957fe5b14612109576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612100906148da565b60405180910390fd5b6000600560008381526020019081526020016000209050600181600c0160016101000a81548160ff02191690831515021790555060008090505b81600301805490508110156122ba57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630825f38f83600401838154811061219f57fe5b90600052602060002001548460030184815481106121b957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560040185815481106121f357fe5b906000526020600020015486600501868154811061220d57fe5b9060005260206000200187600601878154811061222657fe5b9060005260206000200188600201546040518763ffffffff1660e01b8152600401612255959493929190614689565b6000604051808303818588803b15801561226e57600080fd5b505af1158015612282573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f820116820180604052506122ac91908101906132e4565b508080600101915050612143565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f826040516122ea9190614b55565b60405180910390a15050565b6001600781111561230357fe5b61230c83610ba0565b600781111561231757fe5b14612357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234e90614ada565b60405180910390fd5b60006005600084815260200190815260200160002090506000816009015414156123c1576001430381600901819055507f0d1e02ccd52fe49c19093261ba25ca959463e72ed10577de6069a95c14cd04ee83436040516123b8929190614cbc565b60405180910390a15b600081600d0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600015158160000160009054906101000a900460ff1615151461245e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124559061493a565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe18785600901546040518363ffffffff1660e01b81526004016124c19291906145ba565b60206040518083038186803b1580156124d957600080fd5b505afa1580156124ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125119190810190613466565b905083156125425761253583600a0154826bffffffffffffffffffffffff16612618565b83600a0181905550612567565b61255e83600b0154826bffffffffffffffffffffffff16612618565b83600b01819055505b60018260000160006101000a81548160ff021916908315150217905550838260000160016101000a81548160ff021916908315150217905550808260000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055507f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c468686868460405161260894939291906145e3565b60405180910390a1505050505050565b600080828401905083811015612663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265a906149ba565b60405180910390fd5b8091505092915050565b6000828211156126b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a990614afa565b60405180910390fd5b818303905092915050565b6000804690508091505090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2b065378686868686604051602001612721959493929190614628565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401612753919061474b565b60206040518083038186803b15801561276b57600080fd5b505afa15801561277f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127a39190810190613292565b156127e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127da90614a1a565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a66f90186868686866040518663ffffffff1660e01b8152600401612846959493929190614628565b602060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061289891908101906132bb565b505050505050565b604051806101c0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016060815260200160608152602001606081526020016060815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b8280548282559060005260206000209081019282156129a2579160200282015b828111156129a15782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612949565b5b5090506129af9190612af3565b5090565b8280548282559060005260206000209081019282156129ef579160200282015b828111156129ee5782518255916020019190600101906129d3565b5b5090506129fc9190612b36565b5090565b828054828255906000526020600020908101928215612a4f579160200282015b82811115612a4e578251829080519060200190612a3e929190612b5b565b5091602001919060010190612a20565b5b509050612a5c9190612bdb565b5090565b828054828255906000526020600020908101928215612aaf579160200282015b82811115612aae578251829080519060200190612a9e929190612c07565b5091602001919060010190612a80565b5b509050612abc9190612c87565b5090565b604051806060016040528060001515815260200160001515815260200160006bffffffffffffffffffffffff1681525090565b612b3391905b80821115612b2f57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612af9565b5090565b90565b612b5891905b80821115612b54576000816000905550600101612b3c565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612b9c57805160ff1916838001178555612bca565b82800160010185558215612bca579182015b82811115612bc9578251825591602001919060010190612bae565b5b509050612bd79190612b36565b5090565b612c0491905b80821115612c005760008181612bf79190612cb3565b50600101612be1565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612c4857805160ff1916838001178555612c76565b82800160010185558215612c76579182015b82811115612c75578251825591602001919060010190612c5a565b5b509050612c839190612b36565b5090565b612cb091905b80821115612cac5760008181612ca39190612cfb565b50600101612c8d565b5090565b90565b50805460018160011615610100020316600290046000825580601f10612cd95750612cf8565b601f016020900490600052602060002090810190612cf79190612b36565b5b50565b50805460018160011615610100020316600290046000825580601f10612d215750612d40565b601f016020900490600052602060002090810190612d3f9190612b36565b5b50565b600081359050612d5281615193565b92915050565b600082601f830112612d6957600080fd5b8135612d7c612d7782614d12565b614ce5565b91508181835260208401935060208101905083856020840282011115612da157600080fd5b60005b83811015612dd15781612db78882612d43565b845260208401935060208301925050600181019050612da4565b5050505092915050565b600082601f830112612dec57600080fd5b8135612dff612dfa82614d3a565b614ce5565b9150818183526020840193506020810190508360005b83811015612e455781358601612e2b8882612f9a565b845260208401935060208301925050600181019050612e15565b5050505092915050565b600082601f830112612e6057600080fd5b8135612e73612e6e82614d62565b614ce5565b9150818183526020840193506020810190508360005b83811015612eb95781358601612e9f8882613042565b845260208401935060208301925050600181019050612e89565b5050505092915050565b600082601f830112612ed457600080fd5b8135612ee7612ee282614d8a565b614ce5565b91508181835260208401935060208101905083856020840282011115612f0c57600080fd5b60005b83811015612f3c5781612f2288826130ea565b845260208401935060208301925050600181019050612f0f565b5050505092915050565b600081359050612f55816151aa565b92915050565b600081519050612f6a816151aa565b92915050565b600081359050612f7f816151c1565b92915050565b600081519050612f94816151c1565b92915050565b600082601f830112612fab57600080fd5b8135612fbe612fb982614db2565b614ce5565b91508082526020830160208301858383011115612fda57600080fd5b612fe5838284615129565b50505092915050565b600082601f830112612fff57600080fd5b815161301261300d82614dde565b614ce5565b9150808252602083016020830185838301111561302e57600080fd5b613039838284615138565b50505092915050565b600082601f83011261305357600080fd5b813561306661306182614e0a565b614ce5565b9150808252602083016020830185838301111561308257600080fd5b61308d838284615129565b50505092915050565b600082601f8301126130a757600080fd5b81356130ba6130b582614e36565b614ce5565b915080825260208301602083018583830111156130d657600080fd5b6130e1838284615129565b50505092915050565b6000813590506130f9816151d8565b92915050565b60008151905061310e816151d8565b92915050565b600081359050613123816151ef565b92915050565b60008151905061313881615206565b92915050565b60006020828403121561315057600080fd5b600061315e84828501612d43565b91505092915050565b6000806040838503121561317a57600080fd5b600061318885828601612d43565b9250506020613199858286016130ea565b9150509250929050565b600080600080600060a086880312156131bb57600080fd5b600086013567ffffffffffffffff8111156131d557600080fd5b6131e188828901612d58565b955050602086013567ffffffffffffffff8111156131fe57600080fd5b61320a88828901612ec3565b945050604086013567ffffffffffffffff81111561322757600080fd5b61323388828901612e4f565b935050606086013567ffffffffffffffff81111561325057600080fd5b61325c88828901612ddb565b925050608086013567ffffffffffffffff81111561327957600080fd5b61328588828901613096565b9150509295509295909350565b6000602082840312156132a457600080fd5b60006132b284828501612f5b565b91505092915050565b6000602082840312156132cd57600080fd5b60006132db84828501612f85565b91505092915050565b6000602082840312156132f657600080fd5b600082015167ffffffffffffffff81111561331057600080fd5b61331c84828501612fee565b91505092915050565b60006020828403121561333757600080fd5b6000613345848285016130ea565b91505092915050565b60006020828403121561336057600080fd5b600061336e848285016130ff565b91505092915050565b6000806040838503121561338a57600080fd5b6000613398858286016130ea565b92505060206133a985828601612d43565b9150509250929050565b600080604083850312156133c657600080fd5b60006133d4858286016130ea565b92505060206133e585828601612f46565b9150509250929050565b600080600080600060a0868803121561340757600080fd5b6000613415888289016130ea565b955050602061342688828901612f46565b945050604061343788828901613114565b935050606061344888828901612f70565b925050608061345988828901612f70565b9150509295509295909350565b60006020828403121561347857600080fd5b600061348684828501613129565b91505092915050565b600061349b83836134f6565b60208301905092915050565b60006134b38383613737565b905092915050565b60006134c78383613874565b905092915050565b60006134db838361446b565b60208301905092915050565b6134f081615075565b82525050565b6134ff81614feb565b82525050565b61350e81614feb565b82525050565b600061351f82614ecc565b6135298185614f58565b935061353483614e62565b8060005b8381101561356557815161354c888261348f565b975061355783614f24565b925050600181019050613538565b5085935050505092915050565b600061357d82614ed7565b6135878185614f69565b93508360208202850161359985614e72565b8060005b858110156135d557848403895281516135b685826134a7565b94506135c183614f31565b925060208a0199505060018101905061359d565b50829750879550505050505092915050565b60006135f282614ee2565b6135fc8185614f7a565b93508360208202850161360e85614e82565b8060005b8581101561364a578484038952815161362b85826134bb565b945061363683614f3e565b925060208a01995050600181019050613612565b50829750879550505050505092915050565b600061366782614eed565b6136718185614f8b565b935061367c83614e92565b8060005b838110156136ad57815161369488826134cf565b975061369f83614f4b565b925050600181019050613680565b5085935050505092915050565b6136c381614ffd565b82525050565b6136d281614ffd565b82525050565b6136e181615009565b82525050565b6136f86136f382615009565b61516b565b82525050565b600061370982614f03565b6137138185614fad565b9350613723818560208601615138565b61372c81615175565b840191505092915050565b600061374282614ef8565b61374c8185614f9c565b935061375c818560208601615138565b61376581615175565b840191505092915050565b60008154600181166000811461378d57600181146137b3576137f7565b607f600283041661379e8187614fad565b955060ff1983168652602086019350506137f7565b600282046137c18187614fad565b95506137cc85614ea2565b60005b828110156137ee578154818901526001820191506020810190506137cf565b80880195505050505b505092915050565b61380881615087565b82525050565b613817816150ab565b82525050565b613826816150cf565b82525050565b613835816150e1565b82525050565b600061384682614f19565b6138508185614fcf565b9350613860818560208601615138565b61386981615175565b840191505092915050565b600061387f82614f0e565b6138898185614fbe565b9350613899818560208601615138565b6138a281615175565b840191505092915050565b60006138b882614f0e565b6138c28185614fcf565b93506138d2818560208601615138565b6138db81615175565b840191505092915050565b60008154600181166000811461390357600181146139295761396d565b607f60028304166139148187614fcf565b955060ff19831686526020860193505061396d565b600282046139378187614fcf565b955061394285614eb7565b60005b8281101561396457815481890152600182019150602081019050613945565b80880195505050505b505092915050565b6000613982603983614fcf565b91507f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736560008301527f6e646572206d75737420626520676f7620677561726469616e000000000000006020830152604082019050919050565b60006139e8604483614fcf565b91507f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206360008301527f616e206f6e6c792062652071756575656420696620697420697320737563636560208301527f65646564000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000613a74604583614fcf565b91507f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c60008301527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208301527f75657565640000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000613b00600283614fe0565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b6000613b40604c83614fcf565b91507f476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c60008301527f6f636b50656e64696e6741646d696e3a2073656e646572206d7573742062652060208301527f676f7620677561726469616e00000000000000000000000000000000000000006040830152606082019050919050565b6000613bcc601883614fcf565b91507f73657450656e64696e6741646d696e28616464726573732900000000000000006000830152602082019050919050565b6000613c0c602983614fcf565b91507f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707260008301527f6f706f73616c20696400000000000000000000000000000000000000000000006020830152604082019050919050565b6000613c72602d83614fcf565b91507f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722060008301527f616c726561647920766f746564000000000000000000000000000000000000006020830152604082019050919050565b6000613cd8605983614fcf565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766560008301527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208301527f20616c72656164792070656e64696e672070726f706f73616c000000000000006040830152606082019050919050565b6000613d64604a83614fcf565b91507f476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f6360008301527f6b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f60208301527f7620677561726469616e000000000000000000000000000000000000000000006040830152606082019050919050565b6000613df0602883614fcf565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7960008301527f20616374696f6e730000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e56601183614fcf565b91507f6164646974696f6e206f766572666c6f770000000000000000000000000000006000830152602082019050919050565b6000613e96604383614fe0565b91507f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353660008301527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208301527f63742900000000000000000000000000000000000000000000000000000000006040830152604382019050919050565b6000613f22602783614fe0565b91507f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207360008301527f7570706f727429000000000000000000000000000000000000000000000000006020830152602782019050919050565b6000613f88604483614fcf565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c60008301527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208301527f61746368000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000614014602f83614fcf565b91507f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722060008301527f61626f7665207468726573686f6c6400000000000000000000000000000000006020830152604082019050919050565b600061407a604483614fcf565b91507f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207060008301527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208301527f20657461000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000614106602c83614fcf565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f60008301527f7669646520616374696f6e7300000000000000000000000000000000000000006020830152604082019050919050565b600061416c603f83614fcf565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657260008301527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c64006020830152604082019050919050565b60006141d2602f83614fcf565b91507f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e60008301527f76616c6964207369676e617475726500000000000000000000000000000000006020830152604082019050919050565b6000614238605883614fcf565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766560008301527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208301527f20616c7265616479206163746976652070726f706f73616c00000000000000006040830152606082019050919050565b60006142c4603683614fcf565b91507f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636160008301527f6e63656c2065786563757465642070726f706f73616c000000000000000000006020830152604082019050919050565b600061432a602a83614fcf565b91507f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6760008301527f20697320636c6f736564000000000000000000000000000000000000000000006020830152604082019050919050565b6000614390601583614fcf565b91507f7375627472616374696f6e20756e646572666c6f7700000000000000000000006000830152602082019050919050565b60006143d0603683614fcf565b91507f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e646560008301527f72206d75737420626520676f7620677561726469616e000000000000000000006020830152604082019050919050565b60608201600082015161443f60008501826136ba565b50602082015161445260208501826136ba565b50604082015161446560408501826144a7565b50505050565b61447481615046565b82525050565b61448381615046565b82525050565b61449281615050565b82525050565b6144a181615117565b82525050565b6144b08161505d565b82525050565b60006144c182613af3565b91506144cd82856136e7565b6020820191506144dd82846136e7565b6020820191508190509392505050565b60006144f882613e89565b9150819050919050565b600061450d82613f15565b9150819050919050565b600060208201905061452c6000830184613505565b92915050565b600060408201905061454760008301856134e7565b614554602083018461447a565b9392505050565b600060a0820190506145706000830187613505565b61457d602083018661382c565b818103604083015261458e81613bbf565b905081810360608301526145a281856136fe565b90506145b1608083018461447a565b95945050505050565b60006040820190506145cf6000830185613505565b6145dc602083018461447a565b9392505050565b60006080820190506145f86000830187613505565b614605602083018661447a565b61461260408301856136c9565b61461f6060830184614498565b95945050505050565b600060a08201905061463d6000830188613505565b61464a602083018761447a565b818103604083015261465c818661383b565b9050818103606083015261467081856136fe565b905061467f608083018461447a565b9695505050505050565b600060a08201905061469e6000830188613505565b6146ab602083018761447a565b81810360408301526146bd81866138e6565b905081810360608301526146d18185613770565b90506146e0608083018461447a565b9695505050505050565b600060808201905081810360008301526147048187613514565b90508181036020830152614718818661365c565b9050818103604083015261472c81856135e7565b905081810360608301526147408184613572565b905095945050505050565b600060208201905061476060008301846136d8565b92915050565b600060808201905061477b60008301876136d8565b61478860208301866136d8565b614795604083018561447a565b6147a26060830184613505565b95945050505050565b60006060820190506147c060008301866136d8565b6147cd602083018561447a565b6147da60408301846136c9565b949350505050565b60006080820190506147f760008301876136d8565b6148046020830186614489565b61481160408301856136d8565b61481e60608301846136d8565b95945050505050565b600060208201905061483c60008301846137ff565b92915050565b6000602082019050614857600083018461380e565b92915050565b6000602082019050614872600083018461381d565b92915050565b6000602082019050818103600083015261489281846138ad565b905092915050565b600060208201905081810360008301526148b381613975565b9050919050565b600060208201905081810360008301526148d3816139db565b9050919050565b600060208201905081810360008301526148f381613a67565b9050919050565b6000602082019050818103600083015261491381613b33565b9050919050565b6000602082019050818103600083015261493381613bff565b9050919050565b6000602082019050818103600083015261495381613c65565b9050919050565b6000602082019050818103600083015261497381613ccb565b9050919050565b6000602082019050818103600083015261499381613d57565b9050919050565b600060208201905081810360008301526149b381613de3565b9050919050565b600060208201905081810360008301526149d381613e49565b9050919050565b600060208201905081810360008301526149f381613f7b565b9050919050565b60006020820190508181036000830152614a1381614007565b9050919050565b60006020820190508181036000830152614a338161406d565b9050919050565b60006020820190508181036000830152614a53816140f9565b9050919050565b60006020820190508181036000830152614a738161415f565b9050919050565b60006020820190508181036000830152614a93816141c5565b9050919050565b60006020820190508181036000830152614ab38161422b565b9050919050565b60006020820190508181036000830152614ad3816142b7565b9050919050565b60006020820190508181036000830152614af38161431d565b9050919050565b60006020820190508181036000830152614b1381614383565b9050919050565b60006020820190508181036000830152614b33816143c3565b9050919050565b6000606082019050614b4f6000830184614429565b92915050565b6000602082019050614b6a600083018461447a565b92915050565b600061012082019050614b86600083018c61447a565b614b93602083018b6134e7565b8181036040830152614ba5818a613514565b90508181036060830152614bb9818961365c565b90508181036080830152614bcd81886135e7565b905081810360a0830152614be18187613572565b9050614bf060c083018661447a565b614bfd60e083018561447a565b818103610100830152614c10818461383b565b90509a9950505050505050505050565b600061014082019050614c36600083018d61447a565b614c43602083018c613505565b614c50604083018b61447a565b614c5d606083018a61447a565b614c6a608083018961447a565b614c7760a083018861447a565b614c8460c083018761447a565b614c9160e083018661447a565b614c9f6101008301856136c9565b614cad6101208301846136c9565b9b9a5050505050505050505050565b6000604082019050614cd1600083018561447a565b614cde602083018461447a565b9392505050565b6000604051905081810181811067ffffffffffffffff82111715614d0857600080fd5b8060405250919050565b600067ffffffffffffffff821115614d2957600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614d5157600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614d7957600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614da157600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614dc957600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614df557600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614e2157600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614e4d57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614ff682615026565b9050919050565b60008115159050919050565b6000819050919050565b600081905061502182615186565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b6000615080826150f3565b9050919050565b600061509282615099565b9050919050565b60006150a482615026565b9050919050565b60006150b6826150bd565b9050919050565b60006150c882615026565b9050919050565b60006150da82615013565b9050919050565b60006150ec82615046565b9050919050565b60006150fe82615105565b9050919050565b600061511082615026565b9050919050565b60006151228261505d565b9050919050565b82818337600083830152505050565b60005b8381101561515657808201518184015260208101905061513b565b83811115615165576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b6008811061519057fe5b50565b61519c81614feb565b81146151a757600080fd5b50565b6151b381614ffd565b81146151be57600080fd5b50565b6151ca81615009565b81146151d557600080fd5b50565b6151e181615046565b81146151ec57600080fd5b50565b6151f881615050565b811461520357600080fd5b50565b61520f8161505d565b811461521a57600080fd5b5056fea365627a7a723158201973837f6e70bda318f441fa26169e26ad9b4a07ea1154511185cb97ff5149a86c6578706572696d656e74616cf564736f6c63430005100040",
  "deployedBytecode": "0x6080604052600436106101815760003560e01c80635f775678116100d1578063d33219b41161008a578063ddf0b00911610064578063ddf0b0091461056c578063deaaa7cc14610595578063e23a9a52146105c0578063fe0d94c1146105fd57610181565b8063d33219b4146104d9578063da35c66414610504578063da95691a1461052f57610181565b80635f77567814610401578063760fbc131461042c5780637bdbe4d014610443578063915006711461046e578063b58131b014610497578063b9a61961146104c257610181565b806321f43e421161013e5780633e4f49e6116101185780633e4f49e61461034757806340e58ee514610384578063452a9320146103ad5780634634c61f146103d857610181565b806321f43e42146102b3578063328dd982146102dc5780633932abb11461031c57610181565b8063013cf08b1461018657806302a251a3146101cc57806306fdde03146101f757806315373e3d1461022257806317977c611461024b57806320606b7014610288575b600080fd5b34801561019257600080fd5b506101ad60048036036101a89190810190613325565b610619565b6040516101c39a99989796959493929190614c20565b60405180910390f35b3480156101d857600080fd5b506101e16106a7565b6040516101ee9190614b55565b60405180910390f35b34801561020357600080fd5b5061020c6106b2565b6040516102199190614878565b60405180910390f35b34801561022e57600080fd5b50610249600480360361024491908101906133b3565b6106eb565b005b34801561025757600080fd5b50610272600480360361026d919081019061313e565b6106fa565b60405161027f9190614b55565b60405180910390f35b34801561029457600080fd5b5061029d610712565b6040516102aa919061474b565b60405180910390f35b3480156102bf57600080fd5b506102da60048036036102d59190810190613167565b610729565b005b3480156102e857600080fd5b5061030360048036036102fe9190810190613325565b6108b8565b60405161031394939291906146ea565b60405180910390f35b34801561032857600080fd5b50610331610b95565b60405161033e9190614b55565b60405180910390f35b34801561035357600080fd5b5061036e60048036036103699190810190613325565b610ba0565b60405161037b919061485d565b60405180910390f35b34801561039057600080fd5b506103ab60048036036103a69190810190613325565b610d6e565b005b3480156103b957600080fd5b506103c26110ae565b6040516103cf9190614517565b60405180910390f35b3480156103e457600080fd5b506103ff60048036036103fa91908101906133ef565b6110d4565b005b34801561040d57600080fd5b506104166112a3565b6040516104239190614827565b60405180910390f35b34801561043857600080fd5b506104416112c9565b005b34801561044f57600080fd5b5061045861139d565b6040516104659190614b55565b60405180910390f35b34801561047a57600080fd5b5061049560048036036104909190810190613167565b6113a6565b005b3480156104a357600080fd5b506104ac611530565b6040516104b99190614b55565b60405180910390f35b3480156104ce57600080fd5b506104d7611536565b005b3480156104e557600080fd5b506104ee61164a565b6040516104fb9190614842565b60405180910390f35b34801561051057600080fd5b50610519611670565b6040516105269190614b55565b60405180910390f35b34801561053b57600080fd5b50610556600480360361055191908101906131a3565b611676565b6040516105639190614b55565b60405180910390f35b34801561057857600080fd5b50610593600480360361058e9190810190613325565b611c5f565b005b3480156105a157600080fd5b506105aa611faf565b6040516105b7919061474b565b60405180910390f35b3480156105cc57600080fd5b506105e760048036036105e29190810190613377565b611fc6565b6040516105f49190614b3a565b60405180910390f35b61061760048036036106129190810190613325565b6120a8565b005b60056020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600201549080600701549080600801549080600901549080600a01549080600b01549080600c0160009054906101000a900460ff169080600c0160019054906101000a900460ff1690508a565b60006203f480905090565b6040518060400160405280601781526020017f50616e676f6c696e20476f7665726e6f7220416c70686100000000000000000081525081565b6106f63383836122f6565b5050565b60066020528060005260406000206000915090505481565b60405161071e906144ed565b604051809103902081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b0906148fa565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630825f38f600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560405160200161082d9190614517565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161085c949392919061455b565b600060405180830381600087803b15801561087657600080fd5b505af115801561088a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506108b391908101906132e4565b505050565b6060806060806000600560008781526020019081526020016000209050806003018160040182600501836006018380548060200260200160405190810160405280929190818152602001828054801561096657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161091c575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156109b857602002820191906000526020600020905b8154815260200190600101908083116109a4575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b82821015610a9c578382906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a885780601f10610a5d57610100808354040283529160200191610a88565b820191906000526020600020905b815481529060010190602001808311610a6b57829003601f168201915b5050505050815260200190600101906109e0565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015610b7f578382906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b6b5780601f10610b4057610100808354040283529160200191610b6b565b820191906000526020600020905b815481529060010190602001808311610b4e57829003601f168201915b505050505081526020019060010190610ac3565b5050505090509450945094509450509193509193565b600062015180905090565b60008160045410158015610bb45750600082115b610bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bea9061491a565b60405180910390fd5b600060056000848152602001908152602001600020905080600c0160009054906101000a900460ff1615610c2b576002915050610d69565b80600701544211610c40576000915050610d69565b80600801544211610c55576001915050610d69565b80600b015481600a015411610c6e576003915050610d69565b600081600201541415610c85576004915050610d69565b80600c0160019054906101000a900460ff1615610ca6576007915050610d69565b610d538160020154600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1a287e26040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1657600080fd5b505afa158015610d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d4e919081019061334e565b612618565b4210610d63576006915050610d69565b60059150505b919050565b6000610d7982610ba0565b9050600780811115610d8757fe5b816007811115610d9357fe5b1415610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90614aba565b60405180910390fd5b6000600560008481526020019081526020016000209050600054600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe18360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e5c43600161266d565b6040518363ffffffff1660e01b8152600401610e799291906145ba565b60206040518083038186803b158015610e9157600080fd5b505afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ec99190810190613466565b6bffffffffffffffffffffffff1610610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0e906149fa565b60405180910390fd5b600181600c0160006101000a81548160ff02191690831515021790555060008090505b816003018054905081101561107157600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663591fcdfe836003018381548110610f9657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846004018481548110610fd057fe5b9060005260206000200154856005018581548110610fea57fe5b9060005260206000200186600601868154811061100357fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401611032959493929190614689565b600060405180830381600087803b15801561104c57600080fd5b505af1158015611060573d6000803e3d6000fd5b505050508080600101915050610f3a565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c836040516110a19190614b55565b60405180910390a1505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006040516110e2906144ed565b60405180910390206040518060400160405280601781526020017f50616e676f6c696e20476f7665726e6f7220416c7068610000000000000000008152508051906020012061112f6126bd565b306040516020016111439493929190614766565b604051602081830303815290604052805190602001209050600060405161116990614502565b60405180910390208787604051602001611185939291906147ab565b604051602081830303815290604052805190602001209050600082826040516020016111b29291906144b6565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516111ef94939291906147e2565b6020604051602081039080840390855afa158015611211573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561128d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128490614a7a565b60405180910390fd5b611298818a8a6122f6565b505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135090614b1a565b60405180910390fd5b6000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600a905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d9061497a565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a66f901600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000856040516020016114aa9190614517565b604051602081830303815290604052856040518563ffffffff1660e01b81526004016114d9949392919061455b565b602060405180830381600087803b1580156114f357600080fd5b505af1158015611507573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061152b91908101906132bb565b505050565b60005481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bd9061489a565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e18b6816040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561163057600080fd5b505af1158015611644573d6000803e3d6000fd5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60008054600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe1336116c443600161266d565b6040518363ffffffff1660e01b81526004016116e1929190614532565b60206040518083038186803b1580156116f957600080fd5b505afa15801561170d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117319190810190613466565b6bffffffffffffffffffffffff161161177f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177690614a5a565b60405180910390fd5b84518651148015611791575083518651145b801561179e575082518651145b6117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d4906149da565b60405180910390fd5b600086511415611822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181990614a3a565b60405180910390fd5b61182a61139d565b8651111561186d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118649061499a565b60405180910390fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811461197c5760006118c482610ba0565b9050600160078111156118d357fe5b8160078111156118df57fe5b1415611920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191790614a9a565b60405180910390fd5b6000600781111561192d57fe5b81600781111561193957fe5b141561197a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119719061495a565b60405180910390fd5b505b600061198f4261198a610b95565b612618565b905060006119b4426119af6119a26106a7565b6119aa610b95565b612618565b612618565b90506004600081548092919060010191905055506119d06128a0565b604051806101c0016040528060045481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a81526020018981526020018881526020018481526020018381526020016000815260200160008152602001600081526020016000151581526020016000151581525090508060056000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003019080519060200190611ae1929190612929565b506080820151816004019080519060200190611afe9291906129b3565b5060a0820151816005019080519060200190611b1b929190612a00565b5060c0820151816006019080519060200190611b38929190612a60565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c0160006101000a81548160ff0219169083151502179055506101a082015181600c0160016101000a81548160ff021916908315150217905550905050806000015160066000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e604051611c4399989796959493929190614b70565b60405180910390a1806000015194505050505095945050505050565b60046007811115611c6c57fe5b611c7582610ba0565b6007811115611c8057fe5b14611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb7906148ba565b60405180910390fd5b60006005600083815260200190815260200160002090506000611d8242600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b158015611d4557600080fd5b505afa158015611d59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d7d919081019061334e565b612618565b905060008090505b8260030180549050811015611f6757611f5a836003018281548110611dab57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846004018381548110611de557fe5b9060005260206000200154856005018481548110611dff57fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e9d5780601f10611e7257610100808354040283529160200191611e9d565b820191906000526020600020905b815481529060010190602001808311611e8057829003601f168201915b5050505050866006018581548110611eb157fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f4f5780601f10611f2457610100808354040283529160200191611f4f565b820191906000526020600020905b815481529060010190602001808311611f3257829003601f168201915b5050505050866126ca565b8080600101915050611d8a565b508082600201819055507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928382604051611fa2929190614cbc565b60405180910390a1505050565b604051611fbb90614502565b604051809103902081565b611fce612ac0565b60056000848152602001908152602001600020600d0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff161515151581526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b600560078111156120b557fe5b6120be82610ba0565b60078111156120c957fe5b14612109576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612100906148da565b60405180910390fd5b6000600560008381526020019081526020016000209050600181600c0160016101000a81548160ff02191690831515021790555060008090505b81600301805490508110156122ba57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630825f38f83600401838154811061219f57fe5b90600052602060002001548460030184815481106121b957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560040185815481106121f357fe5b906000526020600020015486600501868154811061220d57fe5b9060005260206000200187600601878154811061222657fe5b9060005260206000200188600201546040518763ffffffff1660e01b8152600401612255959493929190614689565b6000604051808303818588803b15801561226e57600080fd5b505af1158015612282573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f820116820180604052506122ac91908101906132e4565b508080600101915050612143565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f826040516122ea9190614b55565b60405180910390a15050565b6001600781111561230357fe5b61230c83610ba0565b600781111561231757fe5b14612357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234e90614ada565b60405180910390fd5b60006005600084815260200190815260200160002090506000816009015414156123c1576001430381600901819055507f0d1e02ccd52fe49c19093261ba25ca959463e72ed10577de6069a95c14cd04ee83436040516123b8929190614cbc565b60405180910390a15b600081600d0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600015158160000160009054906101000a900460ff1615151461245e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124559061493a565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe18785600901546040518363ffffffff1660e01b81526004016124c19291906145ba565b60206040518083038186803b1580156124d957600080fd5b505afa1580156124ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125119190810190613466565b905083156125425761253583600a0154826bffffffffffffffffffffffff16612618565b83600a0181905550612567565b61255e83600b0154826bffffffffffffffffffffffff16612618565b83600b01819055505b60018260000160006101000a81548160ff021916908315150217905550838260000160016101000a81548160ff021916908315150217905550808260000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055507f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c468686868460405161260894939291906145e3565b60405180910390a1505050505050565b600080828401905083811015612663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265a906149ba565b60405180910390fd5b8091505092915050565b6000828211156126b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a990614afa565b60405180910390fd5b818303905092915050565b6000804690508091505090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2b065378686868686604051602001612721959493929190614628565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401612753919061474b565b60206040518083038186803b15801561276b57600080fd5b505afa15801561277f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127a39190810190613292565b156127e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127da90614a1a565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a66f90186868686866040518663ffffffff1660e01b8152600401612846959493929190614628565b602060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061289891908101906132bb565b505050505050565b604051806101c0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016060815260200160608152602001606081526020016060815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b8280548282559060005260206000209081019282156129a2579160200282015b828111156129a15782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612949565b5b5090506129af9190612af3565b5090565b8280548282559060005260206000209081019282156129ef579160200282015b828111156129ee5782518255916020019190600101906129d3565b5b5090506129fc9190612b36565b5090565b828054828255906000526020600020908101928215612a4f579160200282015b82811115612a4e578251829080519060200190612a3e929190612b5b565b5091602001919060010190612a20565b5b509050612a5c9190612bdb565b5090565b828054828255906000526020600020908101928215612aaf579160200282015b82811115612aae578251829080519060200190612a9e929190612c07565b5091602001919060010190612a80565b5b509050612abc9190612c87565b5090565b604051806060016040528060001515815260200160001515815260200160006bffffffffffffffffffffffff1681525090565b612b3391905b80821115612b2f57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612af9565b5090565b90565b612b5891905b80821115612b54576000816000905550600101612b3c565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612b9c57805160ff1916838001178555612bca565b82800160010185558215612bca579182015b82811115612bc9578251825591602001919060010190612bae565b5b509050612bd79190612b36565b5090565b612c0491905b80821115612c005760008181612bf79190612cb3565b50600101612be1565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612c4857805160ff1916838001178555612c76565b82800160010185558215612c76579182015b82811115612c75578251825591602001919060010190612c5a565b5b509050612c839190612b36565b5090565b612cb091905b80821115612cac5760008181612ca39190612cfb565b50600101612c8d565b5090565b90565b50805460018160011615610100020316600290046000825580601f10612cd95750612cf8565b601f016020900490600052602060002090810190612cf79190612b36565b5b50565b50805460018160011615610100020316600290046000825580601f10612d215750612d40565b601f016020900490600052602060002090810190612d3f9190612b36565b5b50565b600081359050612d5281615193565b92915050565b600082601f830112612d6957600080fd5b8135612d7c612d7782614d12565b614ce5565b91508181835260208401935060208101905083856020840282011115612da157600080fd5b60005b83811015612dd15781612db78882612d43565b845260208401935060208301925050600181019050612da4565b5050505092915050565b600082601f830112612dec57600080fd5b8135612dff612dfa82614d3a565b614ce5565b9150818183526020840193506020810190508360005b83811015612e455781358601612e2b8882612f9a565b845260208401935060208301925050600181019050612e15565b5050505092915050565b600082601f830112612e6057600080fd5b8135612e73612e6e82614d62565b614ce5565b9150818183526020840193506020810190508360005b83811015612eb95781358601612e9f8882613042565b845260208401935060208301925050600181019050612e89565b5050505092915050565b600082601f830112612ed457600080fd5b8135612ee7612ee282614d8a565b614ce5565b91508181835260208401935060208101905083856020840282011115612f0c57600080fd5b60005b83811015612f3c5781612f2288826130ea565b845260208401935060208301925050600181019050612f0f565b5050505092915050565b600081359050612f55816151aa565b92915050565b600081519050612f6a816151aa565b92915050565b600081359050612f7f816151c1565b92915050565b600081519050612f94816151c1565b92915050565b600082601f830112612fab57600080fd5b8135612fbe612fb982614db2565b614ce5565b91508082526020830160208301858383011115612fda57600080fd5b612fe5838284615129565b50505092915050565b600082601f830112612fff57600080fd5b815161301261300d82614dde565b614ce5565b9150808252602083016020830185838301111561302e57600080fd5b613039838284615138565b50505092915050565b600082601f83011261305357600080fd5b813561306661306182614e0a565b614ce5565b9150808252602083016020830185838301111561308257600080fd5b61308d838284615129565b50505092915050565b600082601f8301126130a757600080fd5b81356130ba6130b582614e36565b614ce5565b915080825260208301602083018583830111156130d657600080fd5b6130e1838284615129565b50505092915050565b6000813590506130f9816151d8565b92915050565b60008151905061310e816151d8565b92915050565b600081359050613123816151ef565b92915050565b60008151905061313881615206565b92915050565b60006020828403121561315057600080fd5b600061315e84828501612d43565b91505092915050565b6000806040838503121561317a57600080fd5b600061318885828601612d43565b9250506020613199858286016130ea565b9150509250929050565b600080600080600060a086880312156131bb57600080fd5b600086013567ffffffffffffffff8111156131d557600080fd5b6131e188828901612d58565b955050602086013567ffffffffffffffff8111156131fe57600080fd5b61320a88828901612ec3565b945050604086013567ffffffffffffffff81111561322757600080fd5b61323388828901612e4f565b935050606086013567ffffffffffffffff81111561325057600080fd5b61325c88828901612ddb565b925050608086013567ffffffffffffffff81111561327957600080fd5b61328588828901613096565b9150509295509295909350565b6000602082840312156132a457600080fd5b60006132b284828501612f5b565b91505092915050565b6000602082840312156132cd57600080fd5b60006132db84828501612f85565b91505092915050565b6000602082840312156132f657600080fd5b600082015167ffffffffffffffff81111561331057600080fd5b61331c84828501612fee565b91505092915050565b60006020828403121561333757600080fd5b6000613345848285016130ea565b91505092915050565b60006020828403121561336057600080fd5b600061336e848285016130ff565b91505092915050565b6000806040838503121561338a57600080fd5b6000613398858286016130ea565b92505060206133a985828601612d43565b9150509250929050565b600080604083850312156133c657600080fd5b60006133d4858286016130ea565b92505060206133e585828601612f46565b9150509250929050565b600080600080600060a0868803121561340757600080fd5b6000613415888289016130ea565b955050602061342688828901612f46565b945050604061343788828901613114565b935050606061344888828901612f70565b925050608061345988828901612f70565b9150509295509295909350565b60006020828403121561347857600080fd5b600061348684828501613129565b91505092915050565b600061349b83836134f6565b60208301905092915050565b60006134b38383613737565b905092915050565b60006134c78383613874565b905092915050565b60006134db838361446b565b60208301905092915050565b6134f081615075565b82525050565b6134ff81614feb565b82525050565b61350e81614feb565b82525050565b600061351f82614ecc565b6135298185614f58565b935061353483614e62565b8060005b8381101561356557815161354c888261348f565b975061355783614f24565b925050600181019050613538565b5085935050505092915050565b600061357d82614ed7565b6135878185614f69565b93508360208202850161359985614e72565b8060005b858110156135d557848403895281516135b685826134a7565b94506135c183614f31565b925060208a0199505060018101905061359d565b50829750879550505050505092915050565b60006135f282614ee2565b6135fc8185614f7a565b93508360208202850161360e85614e82565b8060005b8581101561364a578484038952815161362b85826134bb565b945061363683614f3e565b925060208a01995050600181019050613612565b50829750879550505050505092915050565b600061366782614eed565b6136718185614f8b565b935061367c83614e92565b8060005b838110156136ad57815161369488826134cf565b975061369f83614f4b565b925050600181019050613680565b5085935050505092915050565b6136c381614ffd565b82525050565b6136d281614ffd565b82525050565b6136e181615009565b82525050565b6136f86136f382615009565b61516b565b82525050565b600061370982614f03565b6137138185614fad565b9350613723818560208601615138565b61372c81615175565b840191505092915050565b600061374282614ef8565b61374c8185614f9c565b935061375c818560208601615138565b61376581615175565b840191505092915050565b60008154600181166000811461378d57600181146137b3576137f7565b607f600283041661379e8187614fad565b955060ff1983168652602086019350506137f7565b600282046137c18187614fad565b95506137cc85614ea2565b60005b828110156137ee578154818901526001820191506020810190506137cf565b80880195505050505b505092915050565b61380881615087565b82525050565b613817816150ab565b82525050565b613826816150cf565b82525050565b613835816150e1565b82525050565b600061384682614f19565b6138508185614fcf565b9350613860818560208601615138565b61386981615175565b840191505092915050565b600061387f82614f0e565b6138898185614fbe565b9350613899818560208601615138565b6138a281615175565b840191505092915050565b60006138b882614f0e565b6138c28185614fcf565b93506138d2818560208601615138565b6138db81615175565b840191505092915050565b60008154600181166000811461390357600181146139295761396d565b607f60028304166139148187614fcf565b955060ff19831686526020860193505061396d565b600282046139378187614fcf565b955061394285614eb7565b60005b8281101561396457815481890152600182019150602081019050613945565b80880195505050505b505092915050565b6000613982603983614fcf565b91507f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736560008301527f6e646572206d75737420626520676f7620677561726469616e000000000000006020830152604082019050919050565b60006139e8604483614fcf565b91507f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206360008301527f616e206f6e6c792062652071756575656420696620697420697320737563636560208301527f65646564000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000613a74604583614fcf565b91507f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c60008301527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208301527f75657565640000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000613b00600283614fe0565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b6000613b40604c83614fcf565b91507f476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c60008301527f6f636b50656e64696e6741646d696e3a2073656e646572206d7573742062652060208301527f676f7620677561726469616e00000000000000000000000000000000000000006040830152606082019050919050565b6000613bcc601883614fcf565b91507f73657450656e64696e6741646d696e28616464726573732900000000000000006000830152602082019050919050565b6000613c0c602983614fcf565b91507f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707260008301527f6f706f73616c20696400000000000000000000000000000000000000000000006020830152604082019050919050565b6000613c72602d83614fcf565b91507f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722060008301527f616c726561647920766f746564000000000000000000000000000000000000006020830152604082019050919050565b6000613cd8605983614fcf565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766560008301527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208301527f20616c72656164792070656e64696e672070726f706f73616c000000000000006040830152606082019050919050565b6000613d64604a83614fcf565b91507f476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f6360008301527f6b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f60208301527f7620677561726469616e000000000000000000000000000000000000000000006040830152606082019050919050565b6000613df0602883614fcf565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7960008301527f20616374696f6e730000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e56601183614fcf565b91507f6164646974696f6e206f766572666c6f770000000000000000000000000000006000830152602082019050919050565b6000613e96604383614fe0565b91507f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353660008301527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208301527f63742900000000000000000000000000000000000000000000000000000000006040830152604382019050919050565b6000613f22602783614fe0565b91507f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207360008301527f7570706f727429000000000000000000000000000000000000000000000000006020830152602782019050919050565b6000613f88604483614fcf565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c60008301527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208301527f61746368000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000614014602f83614fcf565b91507f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722060008301527f61626f7665207468726573686f6c6400000000000000000000000000000000006020830152604082019050919050565b600061407a604483614fcf565b91507f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207060008301527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208301527f20657461000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000614106602c83614fcf565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f60008301527f7669646520616374696f6e7300000000000000000000000000000000000000006020830152604082019050919050565b600061416c603f83614fcf565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657260008301527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c64006020830152604082019050919050565b60006141d2602f83614fcf565b91507f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e60008301527f76616c6964207369676e617475726500000000000000000000000000000000006020830152604082019050919050565b6000614238605883614fcf565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766560008301527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208301527f20616c7265616479206163746976652070726f706f73616c00000000000000006040830152606082019050919050565b60006142c4603683614fcf565b91507f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636160008301527f6e63656c2065786563757465642070726f706f73616c000000000000000000006020830152604082019050919050565b600061432a602a83614fcf565b91507f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6760008301527f20697320636c6f736564000000000000000000000000000000000000000000006020830152604082019050919050565b6000614390601583614fcf565b91507f7375627472616374696f6e20756e646572666c6f7700000000000000000000006000830152602082019050919050565b60006143d0603683614fcf565b91507f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e646560008301527f72206d75737420626520676f7620677561726469616e000000000000000000006020830152604082019050919050565b60608201600082015161443f60008501826136ba565b50602082015161445260208501826136ba565b50604082015161446560408501826144a7565b50505050565b61447481615046565b82525050565b61448381615046565b82525050565b61449281615050565b82525050565b6144a181615117565b82525050565b6144b08161505d565b82525050565b60006144c182613af3565b91506144cd82856136e7565b6020820191506144dd82846136e7565b6020820191508190509392505050565b60006144f882613e89565b9150819050919050565b600061450d82613f15565b9150819050919050565b600060208201905061452c6000830184613505565b92915050565b600060408201905061454760008301856134e7565b614554602083018461447a565b9392505050565b600060a0820190506145706000830187613505565b61457d602083018661382c565b818103604083015261458e81613bbf565b905081810360608301526145a281856136fe565b90506145b1608083018461447a565b95945050505050565b60006040820190506145cf6000830185613505565b6145dc602083018461447a565b9392505050565b60006080820190506145f86000830187613505565b614605602083018661447a565b61461260408301856136c9565b61461f6060830184614498565b95945050505050565b600060a08201905061463d6000830188613505565b61464a602083018761447a565b818103604083015261465c818661383b565b9050818103606083015261467081856136fe565b905061467f608083018461447a565b9695505050505050565b600060a08201905061469e6000830188613505565b6146ab602083018761447a565b81810360408301526146bd81866138e6565b905081810360608301526146d18185613770565b90506146e0608083018461447a565b9695505050505050565b600060808201905081810360008301526147048187613514565b90508181036020830152614718818661365c565b9050818103604083015261472c81856135e7565b905081810360608301526147408184613572565b905095945050505050565b600060208201905061476060008301846136d8565b92915050565b600060808201905061477b60008301876136d8565b61478860208301866136d8565b614795604083018561447a565b6147a26060830184613505565b95945050505050565b60006060820190506147c060008301866136d8565b6147cd602083018561447a565b6147da60408301846136c9565b949350505050565b60006080820190506147f760008301876136d8565b6148046020830186614489565b61481160408301856136d8565b61481e60608301846136d8565b95945050505050565b600060208201905061483c60008301846137ff565b92915050565b6000602082019050614857600083018461380e565b92915050565b6000602082019050614872600083018461381d565b92915050565b6000602082019050818103600083015261489281846138ad565b905092915050565b600060208201905081810360008301526148b381613975565b9050919050565b600060208201905081810360008301526148d3816139db565b9050919050565b600060208201905081810360008301526148f381613a67565b9050919050565b6000602082019050818103600083015261491381613b33565b9050919050565b6000602082019050818103600083015261493381613bff565b9050919050565b6000602082019050818103600083015261495381613c65565b9050919050565b6000602082019050818103600083015261497381613ccb565b9050919050565b6000602082019050818103600083015261499381613d57565b9050919050565b600060208201905081810360008301526149b381613de3565b9050919050565b600060208201905081810360008301526149d381613e49565b9050919050565b600060208201905081810360008301526149f381613f7b565b9050919050565b60006020820190508181036000830152614a1381614007565b9050919050565b60006020820190508181036000830152614a338161406d565b9050919050565b60006020820190508181036000830152614a53816140f9565b9050919050565b60006020820190508181036000830152614a738161415f565b9050919050565b60006020820190508181036000830152614a93816141c5565b9050919050565b60006020820190508181036000830152614ab38161422b565b9050919050565b60006020820190508181036000830152614ad3816142b7565b9050919050565b60006020820190508181036000830152614af38161431d565b9050919050565b60006020820190508181036000830152614b1381614383565b9050919050565b60006020820190508181036000830152614b33816143c3565b9050919050565b6000606082019050614b4f6000830184614429565b92915050565b6000602082019050614b6a600083018461447a565b92915050565b600061012082019050614b86600083018c61447a565b614b93602083018b6134e7565b8181036040830152614ba5818a613514565b90508181036060830152614bb9818961365c565b90508181036080830152614bcd81886135e7565b905081810360a0830152614be18187613572565b9050614bf060c083018661447a565b614bfd60e083018561447a565b818103610100830152614c10818461383b565b90509a9950505050505050505050565b600061014082019050614c36600083018d61447a565b614c43602083018c613505565b614c50604083018b61447a565b614c5d606083018a61447a565b614c6a608083018961447a565b614c7760a083018861447a565b614c8460c083018761447a565b614c9160e083018661447a565b614c9f6101008301856136c9565b614cad6101208301846136c9565b9b9a5050505050505050505050565b6000604082019050614cd1600083018561447a565b614cde602083018461447a565b9392505050565b6000604051905081810181811067ffffffffffffffff82111715614d0857600080fd5b8060405250919050565b600067ffffffffffffffff821115614d2957600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614d5157600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614d7957600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614da157600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614dc957600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614df557600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614e2157600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614e4d57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614ff682615026565b9050919050565b60008115159050919050565b6000819050919050565b600081905061502182615186565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b6000615080826150f3565b9050919050565b600061509282615099565b9050919050565b60006150a482615026565b9050919050565b60006150b6826150bd565b9050919050565b60006150c882615026565b9050919050565b60006150da82615013565b9050919050565b60006150ec82615046565b9050919050565b60006150fe82615105565b9050919050565b600061511082615026565b9050919050565b60006151228261505d565b9050919050565b82818337600083830152505050565b60005b8381101561515657808201518184015260208101905061513b565b83811115615165576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b6008811061519057fe5b50565b61519c81614feb565b81146151a757600080fd5b50565b6151b381614ffd565b81146151be57600080fd5b50565b6151ca81615009565b81146151d557600080fd5b50565b6151e181615046565b81146151ec57600080fd5b50565b6151f881615050565b811461520357600080fd5b50565b61520f8161505d565b811461521a57600080fd5b5056fea365627a7a723158201973837f6e70bda318f441fa26169e26ad9b4a07ea1154511185cb97ff5149a86c6578706572696d656e74616cf564736f6c63430005100040",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
