[ { "constant": true, "inputs": [ { "name": "owner", "type": "address" }, { "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "collateralToken", "type": "address" }, { "name": "parentCollectionId", "type": "bytes32" }, { "name": "conditionId", "type": "bytes32" }, { "name": "indexSets", "type": "uint256[]" } ], "name": "redeemPositions", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "bytes32" }, { "name": "", "type": "uint256" } ], "name": "payoutNumerators", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "from", "type": "address" }, { "name": "to", "type": "address" }, { "name": "ids", "type": "uint256[]" }, { "name": "values", "type": "uint256[]" }, { "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "collateralToken", "type": "address" }, { "name": "collectionId", "type": "bytes32" } ], "name": "getPositionId", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "pure", "type": "function" }, { "constant": true, "inputs": [ { "name": "owners", "type": "address[]" }, { "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "name": "", "type": "uint256[]" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "collateralToken", "type": "address" }, { "name": "parentCollectionId", "type": "bytes32" }, { "name": "conditionId", "type": "bytes32" }, { "name": "partition", "type": "uint256[]" }, { "name": "amount", "type": "uint256" } ], "name": "splitPosition", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "oracle", "type": "address" }, { "name": "questionId", "type": "bytes32" }, { "name": "outcomeSlotCount", "type": "uint256" } ], "name": "getConditionId", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "pure", "type": "function" }, { "constant": true, "inputs": [ { "name": "parentCollectionId", "type": "bytes32" }, { "name": "conditionId", "type": "bytes32" }, { "name": "indexSet", "type": "uint256" } ], "name": "getCollectionId", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "collateralToken", "type": "address" }, { "name": "parentCollectionId", "type": "bytes32" }, { "name": "conditionId", "type": "bytes32" }, { "name": "partition", "type": "uint256[]" }, { "name": "amount", "type": "uint256" } ], "name": "mergePositions", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "operator", "type": "address" }, { "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "questionId", "type": "bytes32" }, { "name": "payouts", "type": "uint256[]" } ], "name": "reportPayouts", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "conditionId", "type": "bytes32" } ], "name": "getOutcomeSlotCount", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "oracle", "type": "address" }, { "name": "questionId", "type": "bytes32" }, { "name": "outcomeSlotCount", "type": "uint256" } ], "name": "prepareCondition", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "bytes32" } ], "name": "payoutDenominator", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "owner", "type": "address" }, { "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "from", "type": "address" }, { "name": "to", "type": "address" }, { "name": "id", "type": "uint256" }, { "name": "value", "type": "uint256" }, { "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "conditionId", "type": "bytes32" }, { "indexed": true, "name": "oracle", "type": "address" }, { "indexed": true, "name": "questionId", "type": "bytes32" }, { "indexed": false, "name": "outcomeSlotCount", "type": "uint256" } ], "name": "ConditionPreparation", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "conditionId", "type": "bytes32" }, { "indexed": true, "name": "oracle", "type": "address" }, { "indexed": true, "name": "questionId", "type": "bytes32" }, { "indexed": false, "name": "outcomeSlotCount", "type": "uint256" }, { "indexed": false, "name": "payoutNumerators", "type": "uint256[]" } ], "name": "ConditionResolution", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "stakeholder", "type": "address" }, { "indexed": false, "name": "collateralToken", "type": "address" }, { "indexed": true, "name": "parentCollectionId", "type": "bytes32" }, { "indexed": true, "name": "conditionId", "type": "bytes32" }, { "indexed": false, "name": "partition", "type": "uint256[]" }, { "indexed": false, "name": "amount", "type": "uint256" } ], "name": "PositionSplit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "stakeholder", "type": "address" }, { "indexed": false, "name": "collateralToken", "type": "address" }, { "indexed": true, "name": "parentCollectionId", "type": "bytes32" }, { "indexed": true, "name": "conditionId", "type": "bytes32" }, { "indexed": false, "name": "partition", "type": "uint256[]" }, { "indexed": false, "name": "amount", "type": "uint256" } ], "name": "PositionsMerge", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "redeemer", "type": "address" }, { "indexed": true, "name": "collateralToken", "type": "address" }, { "indexed": true, "name": "parentCollectionId", "type": "bytes32" }, { "indexed": false, "name": "conditionId", "type": "bytes32" }, { "indexed": false, "name": "indexSets", "type": "uint256[]" }, { "indexed": false, "name": "payout", "type": "uint256" } ], "name": "PayoutRedemption", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "operator", "type": "address" }, { "indexed": true, "name": "from", "type": "address" }, { "indexed": true, "name": "to", "type": "address" }, { "indexed": false, "name": "id", "type": "uint256" }, { "indexed": false, "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "operator", "type": "address" }, { "indexed": true, "name": "from", "type": "address" }, { "indexed": true, "name": "to", "type": "address" }, { "indexed": false, "name": "ids", "type": "uint256[]" }, { "indexed": false, "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "owner", "type": "address" }, { "indexed": true, "name": "operator", "type": "address" }, { "indexed": false, "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "name": "value", "type": "string" }, { "indexed": true, "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" } ]
6080604052620000416301ffc9a77c010000000000000000000000000000000000000000000000000000000002620001d8640100000000026401000000009004565b620001d2600073ffffffffffffffffffffffffffffffffffffffff1663e985e9c590507c010000000000000000000000000000000000000000000000000000000002600073ffffffffffffffffffffffffffffffffffffffff1663a22cb46590507c010000000000000000000000000000000000000000000000000000000002600073ffffffffffffffffffffffffffffffffffffffff16634e1273f490507c010000000000000000000000000000000000000000000000000000000002600073ffffffffffffffffffffffffffffffffffffffff1662fdd58e90507c010000000000000000000000000000000000000000000000000000000002600073ffffffffffffffffffffffffffffffffffffffff16632eb2c2d690507c010000000000000000000000000000000000000000000000000000000002600073ffffffffffffffffffffffffffffffffffffffff1663f242432a90507c0100000000000000000000000000000000000000000000000000000000021818181818620001d8640100000000026401000000009004565b620002ff565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415151562000293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b615608806200030f6000396000f3fe6080604052600436106100f5576000357c010000000000000000000000000000000000000000000000000000000090048062fdd58e146100fa57806301b7037c1461016957806301ffc9a7146102235780630504c814146102955780632eb2c2d6146102ee57806339dd75301461045e5780634e1273f4146104cd57806372ce42751461067b578063852c6ae21461073f578063856296f7146107b85780639e7212ad1461081b578063a22cb465146108df578063c49298ac1461093c578063d42dc0c2146109cc578063d96ee75414610a1b578063dd34de6714610a80578063e985e9c514610acf578063f242432a14610b58575b600080fd5b34801561010657600080fd5b506101536004803603604081101561011d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c32565b6040518082815260200191505060405180910390f35b34801561017557600080fd5b506102216004803603608081101561018c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156101dd57600080fd5b8201836020820111156101ef57600080fd5b8035906020019184602083028401116401000000008311171561021157600080fd5b9091929391929390505050610d57565b005b34801561022f57600080fd5b5061027b6004803603602081101561024657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506112c4565b604051808215151515815260200191505060405180910390f35b3480156102a157600080fd5b506102d8600480360360408110156102b857600080fd5b81019080803590602001909291908035906020019092919050505061132b565b6040518082815260200191505060405180910390f35b3480156102fa57600080fd5b5061045c600480360360a081101561031157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561036e57600080fd5b82018360208201111561038057600080fd5b803590602001918460208302840111640100000000831117156103a257600080fd5b9091929391929390803590602001906401000000008111156103c357600080fd5b8201836020820111156103d557600080fd5b803590602001918460208302840111640100000000831117156103f757600080fd5b90919293919293908035906020019064010000000081111561041857600080fd5b82018360208201111561042a57600080fd5b8035906020019184600183028401116401000000008311171561044c57600080fd5b909192939192939050505061135b565b005b34801561046a57600080fd5b506104b76004803603604081101561048157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119a9565b6040518082815260200191505060405180910390f35b3480156104d957600080fd5b50610624600480360360408110156104f057600080fd5b810190808035906020019064010000000081111561050d57600080fd5b82018360208201111561051f57600080fd5b8035906020019184602083028401116401000000008311171561054157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156105a157600080fd5b8201836020820111156105b357600080fd5b803590602001918460208302840111640100000000831117156105d557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506119bd565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561066757808201518184015260208101905061064c565b505050509050019250505060405180910390f35b34801561068757600080fd5b5061073d600480360360a081101561069e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156106ef57600080fd5b82018360208201111561070157600080fd5b8035906020019184602083028401116401000000008311171561072357600080fd5b909192939192939080359060200190929190505050611c35565b005b34801561074b57600080fd5b506107a26004803603606081101561076257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050612231565b6040518082815260200191505060405180910390f35b3480156107c457600080fd5b50610805600480360360608110156107db57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050612247565b6040518082815260200191505060405180910390f35b34801561082757600080fd5b506108dd600480360360a081101561083e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561088f57600080fd5b8201836020820111156108a157600080fd5b803590602001918460208302840111640100000000831117156108c357600080fd5b90919293919293908035906020019092919050505061225d565b005b3480156108eb57600080fd5b5061093a6004803603604081101561090257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612810565b005b34801561094857600080fd5b506109ca6004803603604081101561095f57600080fd5b81019080803590602001909291908035906020019064010000000081111561098657600080fd5b82018360208201111561099857600080fd5b803590602001918460208302840111640100000000831117156109ba57600080fd5b9091929391929390505050612911565b005b3480156109d857600080fd5b50610a05600480360360208110156109ef57600080fd5b8101908080359060200190929190505050612d3f565b6040518082815260200191505060405180910390f35b348015610a2757600080fd5b50610a7e60048036036060811015610a3e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050612d5f565b005b348015610a8c57600080fd5b50610ab960048036036020811015610aa357600080fd5b8101908080359060200190929190505050612fc1565b6040518082815260200191505060405180910390f35b348015610adb57600080fd5b50610b3e60048036036040811015610af257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fd9565b604051808215151515815260200191505060405180910390f35b348015610b6457600080fd5b50610c30600480360360a0811015610b7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610bec57600080fd5b820183602082011115610bfe57600080fd5b80359060200191846001830284011164010000000083111715610c2057600080fd5b909192939192939050505061306d565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610cfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f455243313135353a2062616c616e636520717565727920666f7220746865207a81526020017f65726f206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600060046000858152602001908152602001600020549050600081111515610e0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f726573756c7420666f7220636f6e646974696f6e206e6f74207265636569766581526020017f642079657400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600060036000868152602001908152602001600020805490509050600081111515610ea0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f636f6e646974696f6e206e6f742070726570617265642079657400000000000081525060200191505060405180910390fd5b6000809050600060018360019060020a0203905060008090505b8686905081101561105a5760008787838181101515610ed557fe5b905060200201359050600081118015610eed57508281105b1515610f61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f676f7420696e76616c696420696e64657820736574000000000000000000000081525060200191505060405180910390fd5b6000610f778c610f728d8d866134e5565b613a5c565b9050600080905060008090505b87811015610fec5760008160019060020a028516141515610fdf57610fdc600360008e815260200190815260200160002082815481101515610fc257fe5b906000526020600020015483613ad490919063ffffffff16565b91505b8080600101915050610f84565b506000610ff93384610c32565b905060008111156110495761103b61102c8a61101e8585613b5e90919063ffffffff16565b613c2b90919063ffffffff16565b88613ad490919063ffffffff16565b9650611048338483613cbe565b5b505050508080600101915050610eba565b5060008211156112145760006001028814156111ed578873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561111357600080fd5b505af1158015611127573d6000803e3d6000fd5b505050506040513d602081101561113d57600080fd5b810190808051906020019092919050505015156111e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f636f756c64206e6f74207472616e73666572207061796f757420746f206d657381526020017f736167652073656e64657200000000000000000000000000000000000000000081525060400191505060405180910390fd5b611213565b611212336111fb8b8b613a5c565b846020604051908101604052806000815250613dff565b5b5b878973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2682012a4a4f1973119f1c9b90745d1bd91fa2bab387344f044cb3586864d18d8a8a8a8860405180858152602001806020018381526020018281038252858582818152602001925060200280828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a4505050505050505050565b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b60036020528160005260406000208181548110151561134657fe5b90600052602060002001600091509150505481565b83839050868690501415156113fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f455243313135353a2049447320616e642076616c756573206d7573742068617681526020017f652073616d65206c656e6774687300000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515156114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f455243313135353a207461726765742061646472657373206d7573742062652081526020017f6e6f6e2d7a65726f00000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161480611590575060011515600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b151561162a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001807f455243313135353a206e656564206f70657261746f7220617070726f76616c2081526020017f666f7220337264207061727479207472616e73666572732e000000000000000081525060400191505060405180910390fd5b60008090505b868690508110156117e8576000878783818110151561164b57fe5b9050602002013590506000868684818110151561166457fe5b9050602002013590506116d0816001600085815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461401b90919063ffffffff16565b6001600084815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117876001600084815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613ad490919063ffffffff16565b6001600084815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050806001019050611630565b508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb898989896040518080602001806020018381038352878782818152602001925060200280828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925060200280828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a461199f338989898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050888880806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506140a6565b5050505050505050565b60006119b58383613a5c565b905092915050565b606081518351141515611a5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f455243313135353a206f776e65727320616e6420494473206d7573742068617681526020017f652073616d65206c656e6774687300000000000000000000000000000000000081525060400191505060405180910390fd5b60608351604051908082528060200260200182016040528015611a905781602001602082028038833980820191505090505b50905060008090505b8451811015611c2a57600073ffffffffffffffffffffffffffffffffffffffff168582815181101515611ac857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611b84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001807f455243313135353a20736f6d65206164647265737320696e206261746368206281526020017f616c616e6365207175657279206973207a65726f00000000000000000000000081525060400191505060405180910390fd5b600160008583815181101515611b9657fe5b90602001906020020151815260200190815260200160002060008683815181101515611bbe57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548282815181101515611c1157fe5b9060200190602002018181525050806001019050611a99565b508091505092915050565b600183839050111515611cb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f676f7420656d707479206f722073696e676c65746f6e20706172746974696f6e81525060200191505060405180910390fd5b600060036000868152602001908152602001600020805490509050600081111515611d43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f636f6e646974696f6e206e6f742070726570617265642079657400000000000081525060200191505060405180910390fd5b600060018260019060020a020390506000819050606086869050604051908082528060200260200182016040528015611d8b5781602001602082028038833980820191505090505b509050606087879050604051908082528060200260200182016040528015611dc25781602001602082028038833980820191505090505b50905060008090505b88889050811015611f4b5760008989838181101515611de657fe5b905060200201359050600081118015611dfe57508581105b1515611e72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f676f7420696e76616c696420696e64657820736574000000000000000000000081525060200191505060405180910390fd5b80858216141515611eeb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f706172746974696f6e206e6f74206469736a6f696e740000000000000000000081525060200191505060405180910390fd5b8085189450611f048d611eff8e8e856134e5565b613a5c565b8483815181101515611f1257fe5b9060200190602002018181525050878383815181101515611f2f57fe5b9060200190602002018181525050508080600101915050611dcb565b50600083141561212c5760006001028a1415612112578a73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561203857600080fd5b505af115801561204c573d6000803e3d6000fd5b505050506040513d602081101561206257600080fd5b8101908080519060200190929190505050151561210d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f636f756c64206e6f74207265636569766520636f6c6c61746572616c20746f6b81526020017f656e73000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b612127565b612126336121208d8d613a5c565b88613cbe565b5b61214d565b61214c336121468d6121418e8e898b186134e5565b613a5c565b88613cbe565b5b61216933838360206040519081016040528060008152506143f2565b888a3373ffffffffffffffffffffffffffffffffffffffff167f2e6bb91f8cbcda0c93623c54d0403a43514fabc40084ec96b6d5379a747862988e8c8c8c604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018381526020018281038252858582818152602001925060200280828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a45050505050505050505050565b600061223e848484614791565b90509392505050565b60006122548484846134e5565b90509392505050565b6001838390501115156122d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f676f7420656d707479206f722073696e676c65746f6e20706172746974696f6e81525060200191505060405180910390fd5b60006003600086815260200190815260200160002080549050905060008111151561236b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f636f6e646974696f6e206e6f742070726570617265642079657400000000000081525060200191505060405180910390fd5b600060018260019060020a0203905060008190506060868690506040519080825280602002602001820160405280156123b35781602001602082028038833980820191505090505b5090506060878790506040519080825280602002602001820160405280156123ea5781602001602082028038833980820191505090505b50905060008090505b88889050811015612573576000898983818110151561240e57fe5b90506020020135905060008111801561242657508581105b151561249a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f676f7420696e76616c696420696e64657820736574000000000000000000000081525060200191505060405180910390fd5b80858216141515612513576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f706172746974696f6e206e6f74206469736a6f696e740000000000000000000081525060200191505060405180910390fd5b808518945061252c8d6125278e8e856134e5565b613a5c565b848381518110151561253a57fe5b906020019060200201818152505087838381518110151561255757fe5b90602001906020020181815250505080806001019150506123f3565b5061257f33838361480e565b60008314156127165760006001028a14156126eb578a73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561263757600080fd5b505af115801561264b573d6000803e3d6000fd5b505050506040513d602081101561266157600080fd5b810190808051906020019092919050505015156126e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f636f756c64206e6f742073656e6420636f6c6c61746572616c20746f6b656e7381525060200191505060405180910390fd5b612711565b612710336126f98d8d613a5c565b886020604051908101604052806000815250613dff565b5b612748565b612747336127308d61272b8e8e898b186134e5565b613a5c565b886020604051908101604052806000815250613dff565b5b888a3373ffffffffffffffffffffffffffffffffffffffff167f6f13ca62553fcc2bcd2372180a43949c1e4cebba603901ede2f4e14f36b282ca8e8c8c8c604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018381526020018281038252858582818152602001925060200280828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a45050505050505050505050565b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b60008282905090506001811115156129b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f74686572652073686f756c64206265206d6f7265207468616e206f6e65206f7581526020017f74636f6d6520736c6f740000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60006129c4338684614791565b9050816003600083815260200190815260200160002080549050141515612a53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f636f6e646974696f6e206e6f74207072657061726564206f7220666f756e640081525060200191505060405180910390fd5b60006004600083815260200190815260200160002054141515612ade576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f7061796f75742064656e6f6d696e61746f7220616c726561647920736574000081525060200191505060405180910390fd5b600080905060008090505b83811015612bfe5760008686838181101515612b0157fe5b905060200201359050612b1d8184613ad490919063ffffffff16565b925060006003600086815260200190815260200160002083815481101515612b4157fe5b9060005260206000200154141515612bc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7061796f7574206e756d657261746f7220616c7265616479207365740000000081525060200191505060405180910390fd5b806003600086815260200190815260200160002083815481101515612be257fe5b9060005260206000200181905550508080600101915050612ae9565b50600081111515612c77576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f7061796f757420697320616c6c207a65726f657300000000000000000000000081525060200191505060405180910390fd5b806004600084815260200190815260200160002081905550853373ffffffffffffffffffffffffffffffffffffffff16837fb44d84d3289691f71497564b85d4233648d9dbae8cbdbb4329f301c3a0185894866003600088815260200190815260200160002060405180838152602001806020018281038252838181548152602001915080548015612d2857602002820191906000526020600020905b815481526020019060010190808311612d14575b5050935050505060405180910390a4505050505050565b600060036000838152602001908152602001600020805490509050919050565b6101008111151515612dd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f746f6f206d616e79206f7574636f6d6520736c6f74730000000000000000000081525060200191505060405180910390fd5b600181111515612e77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f74686572652073686f756c64206265206d6f7265207468616e206f6e65206f7581526020017f74636f6d6520736c6f740000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000612e84848484614791565b905060006003600083815260200190815260200160002080549050141515612f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f636f6e646974696f6e20616c726561647920707265706172656400000000000081525060200191505060405180910390fd5b81604051908082528060200260200182016040528015612f435781602001602082028038833980820191505090505b50600360008381526020019081526020016000209080519060200190612f6a92919061556a565b50828473ffffffffffffffffffffffffffffffffffffffff16827fab3760c3bd2bb38b5bcf54dc79802ed67338b4cf29f3054ded67ed24661e4177856040518082815260200191505060405180910390a450505050565b60046020528060005260406000206000915090505481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614151515613138576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f455243313135353a207461726765742061646472657373206d7573742062652081526020017f6e6f6e2d7a65726f00000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614806131ff575060011515600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515613299576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001807f455243313135353a206e656564206f70657261746f7220617070726f76616c2081526020017f666f7220337264207061727479207472616e73666572732e000000000000000081525060400191505060405180910390fd5b6132fc836001600087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461401b90919063ffffffff16565b6001600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133b36001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613ad490919063ffffffff16565b6001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a46134dd338787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050614ad2565b505050505050565b600080838360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012060019004905060008060ff83908060020a8204915050141590506000805b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4780151561355f57fe5b6001850893507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4780151561358f57fe5b60037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478015156135bb57fe5b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478015156135e557fe5b87880987090890506135f681614d9c565b9150807f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4780151561362357fe5b83840914151515613535578280156136475750600060028381151561364457fe5b06145b806136685750821580156136675750600160028381151561366457fe5b06145b5b1561369357817f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470391505b600088600190049050600081141515613a0f57600060fe82908060020a820491505014159350600280829060020a02908060020a820491505090507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478015156136f857fe5b60037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4780151561372457fe5b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4780151561374e57fe5b8485098409089150600061376183614d9c565b905084801561377c5750600060028281151561377957fe5b06145b8061379d57508415801561379c5750600160028281151561379957fe5b06145b5b156137c857807f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470390505b827f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478015156137f357fe5b82830914151561386b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f696e76616c696420706172656e7420636f6c6c656374696f6e2049440000000081525060200191505060405180910390fd5b60006060600673ffffffffffffffffffffffffffffffffffffffff1688878686604051602001808581526020018481526020018381526020018281526020019450505050506040516020818303038152906040526040518082805190602001908083835b6020831015156138f457805182526020820191506020810190506020830392506138cf565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613954576040519150601f19603f3d011682016040523d82523d6000602084013e613959565b606091505b50915091508115156139d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6563616464206661696c6564000000000000000000000000000000000000000081525060200191505060405180910390fd5b8080602001905160408110156139e857600080fd5b81019080805190602001909291908051906020019092919050505080975081995050505050505b6001600284811515613a1d57fe5b061415613a4a577f4000000000000000000000000000000000000000000000000000000000000000851894505b84600102955050505050509392505050565b60008282604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001925050506040516020818303038152906040528051906020012060019004905092915050565b6000808284019050838110151515613b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415613b715760009050613c25565b60008284029050828482811515613b8457fe5b04141515613c20576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b809150505b92915050565b60008082111515613ca4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b60008284811515613cb157fe5b0490508091505092915050565b613d21816001600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461401b90919063ffffffff16565b6001600084815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051808381526020018281526020019250505060405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515613eca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f455243313135353a206d696e7420746f20746865207a65726f2061646472657381526020017f730000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b613f2d6001600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613ad490919063ffffffff16565b6001600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a461401533600086868686614ad2565b50505050565b6000828211151515614095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b6140c58473ffffffffffffffffffffffffffffffffffffffff16615557565b156143ea578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8190507c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663bc197c8188888787876040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015614221578082015181840152602081019050614206565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015614263578082015181840152602081019050614248565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156142a2578082015181840152602081019050614287565b50505050905090810190601f1680156142cf5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b1580156142f457600080fd5b505af1158015614308573d6000803e3d6000fd5b505050506040513d602081101561431e57600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415156143e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d2081526020017f6f6e45524331313535426174636852656365697665640000000000000000000081525060400191505060405180910390fd5b5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156144bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001807f455243313135353a206261746368206d696e7420746f20746865207a65726f2081526020017f616464726573730000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8151835114151561455c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f455243313135353a2049447320616e642076616c756573206d7573742068617681526020017f652073616d65206c656e6774687300000000000000000000000000000000000081525060400191505060405180910390fd5b60008090505b8351811015614674576145fc60016000868481518110151561458057fe5b90602001906020020151815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484838151811015156145e457fe5b90602001906020020151613ad490919063ffffffff16565b60016000868481518110151561460e57fe5b90602001906020020151815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050614562565b508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561472557808201518184015260208101905061470a565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561476757808201518184015260208101905061474c565b5050505090500194505050505060405180910390a461478b336000868686866140a6565b50505050565b6000838383604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183815260200182815260200193505050506040516020818303038152906040528051906020012090509392505050565b805182511415156148ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f455243313135353a2049447320616e642076616c756573206d7573742068617681526020017f652073616d65206c656e6774687300000000000000000000000000000000000081525060400191505060405180910390fd5b60008090505b82518110156149c55761494d82828151811015156148cd57fe5b906020019060200201516001600086858151811015156148e957fe5b90602001906020020151815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461401b90919063ffffffff16565b60016000858481518110151561495f57fe5b90602001906020020151815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806001019150506148b3565b50600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8585604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015614a76578082015181840152602081019050614a5b565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015614ab8578082015181840152602081019050614a9d565b5050505090500194505050505060405180910390a4505050565b614af18473ffffffffffffffffffffffffffffffffffffffff16615557565b15614d94578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6190507c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663f23a6e6188888787876040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614c4e578082015181840152602081019050614c33565b50505050905090810190601f168015614c7b5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015614c9e57600080fd5b505af1158015614cb2573d6000803e3d6000fd5b505050506040513d6020811015614cc857600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515614d93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d2081526020017f6f6e45524331313535526563656976656400000000000000000000000000000081525060400191505060405180910390fd5b5b505050505050565b6000807f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47905080838409915080828309818182099050818184099250818385099350818484099250818384099050818182098281830990508281820990508281820990508281830991508282860994508285860991508282830991508282850993508284850991508282830991508282830991508282850991508282860994508285860991508282830991508282830991508282860991508282850993508284860994508285860991508282830991508282850993508284850991508282830990508281820990508281820990508281830991508282860994508285850993508284850991508282830991508282830991508282860994508285860991508282830991508282860991508282830991508282830991508282860991508282850993508284850991508282830990508281820990508281830990508281850990508281820990508281820990508281820990508281820990508281830991508282860994508285860991508282860991508282850993508284850991508282850991508282830991508282830990508281830990508281820983818209905083818209905083818209905083818209905083818309915050828183099150828286099450828585099350828485099150828286099450828585099350828486099450828585099350828486099450828586099150828286099150828283099150828285099350828485099150828283099150828286099450828585099350828485099150828285099150828286099450828585099350828486099450828585099350828485099150828283099150828285099150828286099450828586099150828286099150828285099350828486099450828585099350828486099450828585099350828485099150828285099150828283099150828286099450828585099350828485099150828285099150828283099150828286099450828586099150828283099050828182099050828183099050828186099050828182099050828182099050828182099050828182099050828183099150828285099350828486099450828585099350828486099450828586099150828286099150828283099150828283099150828283099150828286099150828285099350828485099150828285099150828283099150828286099450828586099150828286099150828285099350828486099450828586099150828283099150828285099350828486099450828586099150828285099350828486099450828585099350828485099150828285099150828286099450828585099350828485099150828285099150828283099150828283099150828286099450828586099150828283099150828283099150828286099150828285099350828486099450828586099150828286099050828182099050828182099050828183099150828285099350828485099150828286099450828585099350828486099450828585099350828486099450828585099350828485099150828285099050828185099150828283099150828283099150828282099150508181850993508184840992508183850993508184840992508183850993508184850990508181850990508181840992505080828409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838409925080838309915050919050565b600080823b905060008111915050919050565b8280548282559060005260206000209081019282156155a6579160200282015b828111156155a557825182559160200191906001019061558a565b5b5090506155b391906155b7565b5090565b6155d991905b808211156155d55760008160009055506001016155bd565b5090565b9056fea165627a7a72305820f7f083d83787d5d5e16593cf84cb17c206b40fba808b41c33761a6232c48d5020029