0 txs
0 calls
constructor
No constructor.
functions
featureMetadata
viewfunction featureMetadata(bytes32) view returns (uint32 currentSize, uint32 numFinalized, bytes24 log)
featureTraitId
purefunction featureTraitId(uint32 _projectId, string _featureName, string _traitValue, uint32 _version) pure returns (bytes32)
featureTraitInfo
viewfunction featureTraitInfo(bytes32) view returns (address tokenContract, uint32 projectId, string featureName, string traitValue)
hasTrait
viewfunction hasTrait(address _tokenContract, uint256 _tokenId, bytes _trait) view returns (bool)
oracleSigner
viewfunction oracleSigner() view returns (address)
owner
viewfunction owner() view returns (address)
projectTraitId
purefunction projectTraitId(uint32 _projectId, uint32 _version) pure returns (bytes32)
projectTraitInfo
viewfunction projectTraitInfo(bytes32) view returns (address tokenContract, uint32 projectId, uint32 size, string name)
supportsInterface
purefunction supportsInterface(bytes4 _interfaceId) pure returns (bool)
multicall
nonpayablefunction multicall(tuple[] _inputs)
renounceOwnership
nonpayablefunction renounceOwnership()
setFeatureInfo
nonpayablefunction setFeatureInfo(tuple _msg, bytes _signature, uint8 _signatureKind)
setOracleSigner
nonpayablefunction setOracleSigner(address _oracleSigner)
setProjectInfo
nonpayablefunction setProjectInfo(tuple _msg, bytes _signature, uint8 _signatureKind)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateTrait
nonpayablefunction updateTrait(tuple _msg, bytes _signature, uint8 _signatureKind)
events
FeatureInfoSet
event FeatureInfoSet(bytes32 indexed traitId, uint32 indexed projectId, string indexed nameAndValue, string featureName, string traitValue, uint32 version, address tokenContract)
OracleSignerChanged
event OracleSignerChanged(address indexed oracleSigner)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ProjectInfoSet
event ProjectInfoSet(bytes32 indexed traitId, uint32 indexed projectId, string name, uint32 version, uint32 size, address tokenContract)
TraitUpdated
event TraitUpdated(bytes32 indexed traitId, uint32 newSize, uint32 newNumFinalized, bytes24 newLog)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506200001d3362000023565b62000073565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6135eb80620000836000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063a18470ef11610066578063a18470ef146102b9578063b887face146102dc578063e6edc43f146102fd578063f2fde38b1461031057600080fd5b8063715018a61461026d57806378da0eb6146102755780638da5cb5b1461028857806394d487b7146102a657600080fd5b806322363e69116100d357806322363e691461021157806328bff9db146102245780635172a71f14610237578063660fff8d1461025a57600080fd5b806301ffc9a7146101055780630f9dd05c1461012d5780631709a61b146101b75780631ddcc8da146101fc575b600080fd5b6101186101133660046127d9565b610323565b60405190151581526020015b60405180910390f35b61017261013b36600461281b565b600560205260009081526040908190205463ffffffff80821692640100000000830490911691680100000000000000009004901b83565b6040805163ffffffff94851681529390921660208401527fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001690820152606001610124565b6001546101d79073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61020f61020a366004612a9b565b6103d1565b005b61020f61021f366004612b13565b61077d565b61020f610232366004612b88565b6109e7565b61024a61024536600461281b565b610ad6565b6040516101249493929190612c1f565b61020f610268366004612d51565b610bd0565b61020f61109c565b61020f610283366004612e0c565b611129565b60005473ffffffffffffffffffffffffffffffffffffffff166101d7565b6101186102b4366004612e45565b6114a3565b6102cc6102c736600461281b565b6114ee565b6040516101249493929190612ece565b6102ef6102ea366004612f26565b6115d5565b604051908152602001610124565b6102ef61030b366004612f59565b611650565b61020f61031e366004612b88565b6116d2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f94d487b700000000000000000000000000000000000000000000000000000000141561037757506001919050565b7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014156103c957506001919050565b506000919050565b6103e46103dd84611802565b8383611912565b600073ffffffffffffffffffffffffffffffffffffffff16836020015173ffffffffffffffffffffffffffffffffffffffff1614156040518060600160405280602181526020016135956021913990610473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a9190612fde565b60405180910390fd5b50606083015151151560405180606001604052806021815260200161359560219139906104cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a9190612fde565b5060808301515115156040518060600160405280602181526020016135956021913990610527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a9190612fde565b5060006105468460400151856060015186608001518760000151611650565b600081815260036020908152604091829020548251808401909352601f83527f417274626c6f636b734f7261636c653a20414c52454144595f45584953545300918301919091529192509073ffffffffffffffffffffffffffffffffffffffff16156105df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a9190612fde565b50604080516080808201835260208088015173ffffffffffffffffffffffffffffffffffffffff90811684528885015163ffffffff9081168386019081526060808c0151878901908152958c0151908701526000888152600385529690962085518154975190921674010000000000000000000000000000000000000000027fffffffffffffffff0000000000000000000000000000000000000000000000009097169190921617949094178455905180519293926106a49260018501920190612740565b50606082015180516106c0916002840191602090910190612740565b505050606084015160808501516040516106de929190602001612ff1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261071691613049565b6040518091039020846040015163ffffffff16827f29897f82da50b0013da3d853032b3389bad321a4187d49ea3d1b9034f3d0b9138760600151886080015189600001518a6020015160405161076f9493929190613065565b60405180910390a450505050565b60005b818110156109e2573683838381811061079b5761079b6130be565b90506020028101906107ad91906130ed565b905060026107be6020830183613150565b60028111156107cf576107cf613121565b141561084f5760006107e4602083018361316d565b8101906107f191906131d2565b905061084981610804604085018561316d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610268925050506080860160608701613150565b506109cf565b600161085e6020830183613150565b600281111561086f5761086f613121565b14156108e9576000610884602083018361316d565b8101906108919190613207565b9050610849816108a4604085018561316d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061020a925050506080860160608701613150565b60006108f86020830183613150565b600281111561090957610909613121565b141561098357600061091e602083018361316d565b81019061092b919061323c565b90506108498161093e604085018561316d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610283925050506080860160608701613150565b604051806060016040528060218152602001613595602191396040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a9190612fde565b50806109da816132a0565b915050610780565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161046a565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517eb26dea850e8f7abcee9d808c73344495b426cad63203ec479242fe2bd8013990600090a250565b6002602052600090815260409020805460018201805473ffffffffffffffffffffffffffffffffffffffff83169363ffffffff7401000000000000000000000000000000000000000085048116947801000000000000000000000000000000000000000000000000900416929091610b4d906132d9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b79906132d9565b8015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b5050505050905084565b6000610bdb84611a34565b9050610be8818484611912565b835160008181526003602090815260409182902054825160608101909352602180845273ffffffffffffffffffffffffffffffffffffffff909116151592916135959083013990610c66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a9190612fde565b506000818152600560209081526040918290208251606081018452905463ffffffff80821683526401000000008204811693830184905268010000000000000000909104841b7fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016828501529288015190928116821015610d7b578091506000886040015190508067ffffffffffffffff1916846040015167ffffffffffffffff1916146040518060400160405280601e81526020017f417274626c6f636b734f7261636c653a20494e56414c49445f5354415445000081525090610d78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a9190612fde565b50505b825160005b896020015151811015610ea65760008a602001518281518110610da557610da56130be565b602090810291909101810151805160008a8152600484526040808220838352855281205483850151948b015193955091939192831990921691610de89085611a92565b60408051808201909152601a81527f417274626c6f636b734f7261636c653a20494d4d555441424c45000000000000602082015290831691508115610e5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a9190612fde565b5060008b815260046020908152604080832087845290915290208383179055610e8282611af0565b610e8c908861332d565b965050505050508080610e9e906132a0565b915050610d80565b506000846000015163ffffffff168263ffffffff16148015610ed75750846020015163ffffffff168463ffffffff16145b90508015610eeb5750505050505050505050565b60408581015181517fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008216602082015291820189905290600090606001604051602081830303815290604052805190602001209050600060405180606001604052808663ffffffff1681526020018863ffffffff1681526020018367ffffffffffffffff1916815250905080600560008b815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160086101000a81548177ffffffffffffffffffffffffffffffffffffffffffffffff021916908360401c0217905550905050887f48d6c06b3d8d5c9d72c23c6e09739c9993b52e7c5df425e0882f2719aa12c1898689856040516110859392919063ffffffff93841681529190921660208201527fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000091909116604082015260600190565b60405180910390a250505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161046a565b6111276000611d4e565b565b6111356103dd84611dc3565b6000836060015163ffffffff16116040518060600160405280602181526020016135956021913990611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a9190612fde565b50600073ffffffffffffffffffffffffffffffffffffffff16836020015173ffffffffffffffffffffffffffffffffffffffff161415604051806060016040528060218152602001613595602191399061121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a9190612fde565b5060808301515115156040518060600160405280602181526020016135956021913990611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a9190612fde565b50600061128a846040015185600001516115d5565b600081815260026020908152604091829020548251808401909352601f83527f417274626c6f636b734f7261636c653a20414c52454144595f4558495354530091830191909152919250907801000000000000000000000000000000000000000000000000900463ffffffff161561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a9190612fde565b50604080516080808201835260208088015173ffffffffffffffffffffffffffffffffffffffff90811684528885015163ffffffff9081168386019081526060808c01518316878901908152958c015190870190815260008981526002865297909720865181549251965184167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff9790941674010000000000000000000000000000000000000000027fffffffffffffffff000000000000000000000000000000000000000000000000909316941693909317179390931692909217825592518051929391926114409260018501920190612740565b50905050836040015163ffffffff16817f9ee02502b55934a6377aa1ef42d95753b8e4efd5c104f379a5f29cdd3887533286608001518760000151886060015189602001516040516114959493929190613355565b60405180910390a350505050565b6000806114b083856133a3565b90508060ff81166114cf576114c6878784611e96565b925050506114e6565b60ff811660011415610983576114c6878784611f63565b949350505050565b6003602052600090815260409020805460018201805473ffffffffffffffffffffffffffffffffffffffff8316937401000000000000000000000000000000000000000090930463ffffffff16929190611547906132d9565b80601f0160208091040260200160405190810160405280929190818152602001828054611573906132d9565b80156115c05780601f10611595576101008083540402835291602001916115c0565b820191906000526020600020905b8154815290600101906020018083116115a357829003601f168201915b505050505090806002018054610b4d906132d9565b600080600084846040516020016115ee9392919061341a565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905280516020909101207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169150505b92915050565b60008060018686868660405160200161166d959493929190613446565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905280516020909101207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161046a565b73ffffffffffffffffffffffffffffffffffffffff81166117f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161046a565b6117ff81611d4e565b50565b60007fb84d7bb9525366590d5e514a4abda4ac3023d210647bd545ade6b375f0f1282b82600001518360200151846040015185606001516040516020016118499190613049565b6040516020818303038152906040528051906020012086608001516040516020016118749190613049565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019790975263ffffffff9586169082015273ffffffffffffffffffffffffffffffffffffffff90931660608401529216608082015260a081019190915260c081019190915260e0015b604051602081830303815290604052805190602001209050919050565b60006119a1611999604080517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86660208201527f6c8875fcce1d309aa935bc0e09c360290394c732d3330d675aa8db7bd02649299181019190915246606082015230608082015260009060a00160405160208183030381529060405280519060200120905090565b858585612030565b60015460408051808201909152601d81527f417274626c6f636b734f7261636c653a20554e415554484f52495a4544000000602082015291925073ffffffffffffffffffffffffffffffffffffffff808416911614611a2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a9190612fde565b5050505050565b60007f75680d6fbd41c44bd1cd8f9bec62e450d6117898df7b1687e3a74976cfa183178260000151611a698460200151612195565b60408086015181516020810195909552908401929092526060830152608082015260a0016118f5565b6000600882901b63ffffffff8416811115611ab157600091505061164a565b6000611ac38263ffffffff871661349b565b905060ff811115611ada576000199250505061164a565b611ae7600180831b61349b565b95945050505050565b60007f5555555555555555555555555555555555555555555555555555555555555555600183901c167f55555555555555555555555555555555555555555555555555555555555555558316611b4691906134b2565b91507f3333333333333333333333333333333333333333333333333333333333333333600283901c167f33333333333333333333333333333333333333333333333333333333333333338316611b9c91906134b2565b91507f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f600483901c167f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f8316611bf291906134b2565b91507eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff600883901c167eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff8316611c4691906134b2565b91507dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff601083901c167dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff8316611c9891906134b2565b91507bffffffff00000000ffffffff00000000ffffffff00000000ffffffff602083901c167bffffffff00000000ffffffff00000000ffffffff00000000ffffffff8316611ce691906134b2565b915077ffffffffffffffff0000000000000000ffffffffffffffff604083901c1677ffffffffffffffff0000000000000000ffffffffffffffff8316611d2c91906134b2565b915061164a608083901c6fffffffffffffffffffffffffffffffff84166134b2565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60007ff49b8ee5a0396d720700b2d2fa9384f7dcd3b9e2063cbda42dd8b58bc412fc4d82600001518360200151846040015185606001518660800151604051602001611e0f9190613049565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019790975263ffffffff9586169082015273ffffffffffffffffffffffffffffffffffffffff909316606084015290831660808301529190911660a082015260c081019190915260e0016118f5565b6000818152600260205260408120805473ffffffffffffffffffffffffffffffffffffffff8082169163ffffffff7401000000000000000000000000000000000000000082048116927801000000000000000000000000000000000000000000000000909204169088168314611f13576000945050505050611f5c565b81611f21620f4240896134f9565b14611f33576000945050505050611f5c565b80611f41620f42408961350d565b10611f53576000945050505050611f5c565b60019450505050505b9392505050565b6000818152600360205260408120805473ffffffffffffffffffffffffffffffffffffffff8082169174010000000000000000000000000000000000000000900463ffffffff169087168214611fbf5760009350505050611f5c565b80611fcd620f4240886134f9565b14611fde5760009350505050611f5c565b6000611fed620f424083613521565b611ff7908861349b565b6000878152600460209081526040808320600885901c8452909152902054600160ff9092169190911b1615159450505050509392505050565b600080600183600281111561204757612047613121565b1415612087576040805160208101889052908101869052612080906060016040516020818303038152906040528051906020012061226b565b9050612181565b600283600281111561209b5761209b613121565b14156120fa57604080517f19010000000000000000000000000000000000000000000000000000000000006020808301919091526022820189905260428083018990528351808403909101815260629092019092528051910120612080565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5369676e6174757265436865636b65723a206e6f207369676e6174757265206760448201527f6976656e00000000000000000000000000000000000000000000000000000000606482015260840161046a565b61218b81856122a6565b9695505050505050565b600080825167ffffffffffffffff8111156121b2576121b2612834565b6040519080825280602002602001820160405280156121db578160200160208202803683370190505b50905060005b835181101561223b5761220c8482815181106121ff576121ff6130be565b60200260200101516122ca565b82828151811061221e5761221e6130be565b602090810291909101015280612233816132a0565b9150506121e1565b508060405160200161224d919061355e565b60405160208183030381529060405280519060200120915050919050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c016118f5565b60008060006122b58585612317565b915091506122c281612387565b509392505050565b80516020808301516040516000936118f5937fe203643163d776bdb28d8e91bef9748af842adcb3c101c2e8a32bacd7499cd93939192019283526020830191909152604082015260600190565b60008082516041141561234e5760208301516040840151606085015160001a612342878285856125e0565b94509450505050612380565b825160401415612378576020830151604084015161236d8683836126f8565b935093505050612380565b506000905060025b9250929050565b600081600481111561239b5761239b613121565b14156123a45750565b60018160048111156123b8576123b8613121565b1415612420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161046a565b600281600481111561243457612434613121565b141561249c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161046a565b60038160048111156124b0576124b0613121565b141561253e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161046a565b600481600481111561255257612552613121565b14156117ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161046a565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561261757506000905060036126ef565b8460ff16601b1415801561262f57508460ff16601c14155b1561264057506000905060046126ef565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612694573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166126e8576000600192509250506126ef565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831660ff84901c601b01612732878288856125e0565b935093505050935093915050565b82805461274c906132d9565b90600052602060002090601f01602090048101928261276e57600085556127b4565b82601f1061278757805160ff19168380011785556127b4565b828001600101855582156127b4579182015b828111156127b4578251825591602001919060010190612799565b506127c09291506127c4565b5090565b5b808211156127c057600081556001016127c5565b6000602082840312156127eb57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611f5c57600080fd5b60006020828403121561282d57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff8111828210171561288657612886612834565b60405290565b6040516060810167ffffffffffffffff8111828210171561288657612886612834565b6040805190810167ffffffffffffffff8111828210171561288657612886612834565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561291957612919612834565b604052919050565b803563ffffffff8116811461293557600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff811681146117ff57600080fd5b600082601f83011261296d57600080fd5b813567ffffffffffffffff81111561298757612987612834565b6129b860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016128d2565b8181528460208386010111156129cd57600080fd5b816020850160208301376000918101602001919091529392505050565b600060a082840312156129fc57600080fd5b612a04612863565b9050612a0f82612921565b81526020820135612a1f8161293a565b6020820152612a3060408301612921565b6040820152606082013567ffffffffffffffff80821115612a5057600080fd5b612a5c8583860161295c565b60608401526080840135915080821115612a7557600080fd5b50612a828482850161295c565b60808301525092915050565b600381106117ff57600080fd5b600080600060608486031215612ab057600080fd5b833567ffffffffffffffff80821115612ac857600080fd5b612ad4878388016129ea565b94506020860135915080821115612aea57600080fd5b50612af78682870161295c565b9250506040840135612b0881612a8e565b809150509250925092565b60008060208385031215612b2657600080fd5b823567ffffffffffffffff80821115612b3e57600080fd5b818501915085601f830112612b5257600080fd5b813581811115612b6157600080fd5b8660208260051b8501011115612b7657600080fd5b60209290920196919550909350505050565b600060208284031215612b9a57600080fd5b8135611f5c8161293a565b60005b83811015612bc0578181015183820152602001612ba8565b83811115612bcf576000848401525b50505050565b60008151808452612bed816020860160208601612ba5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff85168152600063ffffffff80861660208401528085166040840152506080606083015261218b6080830184612bd5565b600060608284031215612c7657600080fd5b612c7e61288c565b90508135815260208083013567ffffffffffffffff80821115612ca057600080fd5b818501915085601f830112612cb457600080fd5b813581811115612cc657612cc6612834565b612cd4848260051b016128d2565b818152848101925060069190911b830184019087821115612cf457600080fd5b928401925b81841015612d375760408489031215612d125760008081fd5b612d1a6128af565b843581528585013586820152835260409093019291840191612cf9565b808587015250505050506040820135604082015292915050565b600080600060608486031215612d6657600080fd5b833567ffffffffffffffff80821115612d7e57600080fd5b612ad487838801612c64565b600060a08284031215612d9c57600080fd5b612da4612863565b9050612daf82612921565b81526020820135612dbf8161293a565b6020820152612dd060408301612921565b6040820152612de160608301612921565b6060820152608082013567ffffffffffffffff811115612e0057600080fd5b612a828482850161295c565b600080600060608486031215612e2157600080fd5b833567ffffffffffffffff80821115612e3957600080fd5b612ad487838801612d8a565b60008060008060608587031215612e5b57600080fd5b8435612e668161293a565b935060208501359250604085013567ffffffffffffffff80821115612e8a57600080fd5b818701915087601f830112612e9e57600080fd5b813581811115612ead57600080fd5b886020828501011115612ebf57600080fd5b95989497505060200194505050565b73ffffffffffffffffffffffffffffffffffffffff8516815263ffffffff84166020820152608060408201526000612f096080830185612bd5565b8281036060840152612f1b8185612bd5565b979650505050505050565b60008060408385031215612f3957600080fd5b612f4283612921565b9150612f5060208401612921565b90509250929050565b60008060008060808587031215612f6f57600080fd5b612f7885612921565b9350602085013567ffffffffffffffff80821115612f9557600080fd5b612fa18883890161295c565b94506040870135915080821115612fb757600080fd5b50612fc48782880161295c565b925050612fd360608601612921565b905092959194509250565b602081526000611f5c6020830184612bd5565b60008351613003818460208801612ba5565b7f3a20000000000000000000000000000000000000000000000000000000000000908301908152835161303d816002840160208801612ba5565b01600201949350505050565b6000825161305b818460208701612ba5565b9190910192915050565b6080815260006130786080830187612bd5565b828103602084015261308a8187612bd5565b91505063ffffffff8416604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261305b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561316257600080fd5b8135611f5c81612a8e565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131a257600080fd5b83018035915067ffffffffffffffff8211156131bd57600080fd5b60200191503681900382131561238057600080fd5b6000602082840312156131e457600080fd5b813567ffffffffffffffff8111156131fb57600080fd5b6114e684828501612c64565b60006020828403121561321957600080fd5b813567ffffffffffffffff81111561323057600080fd5b6114e6848285016129ea565b60006020828403121561324e57600080fd5b813567ffffffffffffffff81111561326557600080fd5b6114e684828501612d8a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132d2576132d2613271565b5060010190565b600181811c908216806132ed57607f821691505b60208210811415613327577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600063ffffffff80831681851680830382111561334c5761334c613271565b01949350505050565b6080815260006133686080830187612bd5565b63ffffffff958616602084015293909416604082015273ffffffffffffffffffffffffffffffffffffffff9190911660609091015292915050565b8035602083101561164a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60028110613416577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b6060810161342882866133df565b63ffffffff8085166020840152808416604084015250949350505050565b61345081876133df565b600063ffffffff808716602084015260a0604084015261347360a0840187612bd5565b83810360608501526134858187612bd5565b9250508084166080840152509695505050505050565b6000828210156134ad576134ad613271565b500390565b600082198211156134c5576134c5613271565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613508576135086134ca565b500490565b60008261351c5761351c6134ca565b500690565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561355957613559613271565b500290565b815160009082906020808601845b838110156135885781518552938201939082019060010161356c565b5092969550505050505056fe417274626c6f636b734f7261636c653a20494e56414c49445f415247554d454e54a264697066735822122003a59da2ebb188f29cfaac57a53fe78a240dda3784c82b5a2d48e52c061e502864736f6c63430008090033