@settlemint/solidity-supplychain
Version:
Smart contract set to build a supplychain usecase in SettleMint
1 lines • 103 kB
JSON
{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testCreateLotEmitsEvent","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPackingEmitsEvent","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRegisterFirstProcessEmitsEvent","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRegisterSecondProcessEmitsEvent","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransportEmitsEvent","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"CreateLotEvent","inputs":[{"name":"lotType","type":"string","indexed":false,"internalType":"string"},{"name":"quantity","type":"string","indexed":false,"internalType":"string"},{"name":"operatorId","type":"string","indexed":false,"internalType":"string"},{"name":"originId","type":"string","indexed":false,"internalType":"string"},{"name":"lotNo","type":"string","indexed":false,"internalType":"string"},{"name":"transporterId","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"FirstProcessEvent","inputs":[{"name":"lotNos","type":"string","indexed":false,"internalType":"string"},{"name":"operatorId","type":"string","indexed":false,"internalType":"string"},{"name":"machineId","type":"string","indexed":false,"internalType":"string"},{"name":"processingHouseId","type":"string","indexed":false,"internalType":"string"},{"name":"timestamp","type":"string","indexed":false,"internalType":"string"},{"name":"firstProcessLotId","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"PackagingEvent","inputs":[{"name":"secondProcessLotId","type":"string","indexed":false,"internalType":"string"},{"name":"operatorId","type":"string","indexed":false,"internalType":"string"},{"name":"packageId","type":"string","indexed":false,"internalType":"string"},{"name":"weight","type":"string","indexed":false,"internalType":"string"},{"name":"packagingType","type":"string","indexed":false,"internalType":"string"},{"name":"packingLotId","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SecondProcessEvent","inputs":[{"name":"firstProcessLotIds","type":"string","indexed":false,"internalType":"string"},{"name":"machineId","type":"string","indexed":false,"internalType":"string"},{"name":"operatorId","type":"string","indexed":false,"internalType":"string"},{"name":"secondProcessOutputLotId","type":"string","indexed":false,"internalType":"string"},{"name":"secondProcessLotId","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"TransportEvent","inputs":[{"name":"packageId","type":"string","indexed":false,"internalType":"string"},{"name":"operatorId","type":"string","indexed":false,"internalType":"string"},{"name":"transporterId","type":"string","indexed":false,"internalType":"string"},{"name":"cartonId","type":"string","indexed":false,"internalType":"string"},{"name":"transportLotId","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60808060405234602f57600160ff19600c541617600c55600160ff19601f541617601f55612aed90816100348239f35b5f80fdfe60806040526004361015610011575f80fd5b5f5f3560e01c8063051d3297146113fd5780630a9254e41461133b5780631ed7831c146112b05780632ade3880146110a25780633e5e3c23146110175780633f7286f414610f8c57806366d9a9a014610e4f57806372fc2a8d14610be457806382274c831461096e57806385226c81146108e4578063916a17c61461082d578063ab4bab3e14610576578063b0464fdc146104bf578063b5508aa914610435578063ba414fa614610410578063e20c9f7114610375578063f8a62bf6146101055763fa7626d4146100e0575f80fd5b34610102578060031936011261010257602060ff601f54166040519015158152f35b80fd5b50346101025780600319360112610102578060405161012560408261188e565b600181527f310000000000000000000000000000000000000000000000000000000000000060208201526040519061015e60408361188e565b600a82527f4d616368696e6531323300000000000000000000000000000000000000000000602083015260405161019660408261188e565b600b81527f4f70657261746f723435360000000000000000000000000000000000000000006020820152604051926101cf60408561188e565b600c84527f4f75747075744c6f7437383900000000000000000000000000000000000000006020850152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610366576040517f491cc7c200000000000000000000000000000000000000000000000000000000815285818061026160048201906001606060808401938281528260208201528260408201520152565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af190811561036a578691610351575b50507f14b6c7296a7ef1f1d61274d04d7364309a7a32fbb21087fb4c15a5d1534ac899604051806102bd87868689856118cf565b0390a173ffffffffffffffffffffffffffffffffffffffff601f5460081c1690813b1561034d57858094610320604051978896879586947fe5dbd1ae00000000000000000000000000000000000000000000000000000000865260048601611958565b03925af18015610342576103315750f35b8161033b9161188e565b6101025780f35b6040513d84823e3d90fd5b8580fd5b8161035b9161188e565b61036657845f610289565b8480fd5b6040513d88823e3d90fd5b503461010257806003193601126101025760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106103e4576103e0856103d48187038261188e565b6040519182918261163d565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff168452602090930192600192830192016103bd565b5034610102578060031936011261010257602061042b611ebe565b6040519015158152f35b5034610102578060031936011261010257601954610452816119a0565b91610460604051938461188e565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b8383106104a257604051806103e08782611724565b6001602081926104b1856119b8565b81520192019201919061048d565b5034610102578060031936011261010257601c546104dc816119a0565b916104ea604051938461188e565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b83831061052c57604051806103e087826117a1565b6002602060019260405161053f81611845565b73ffffffffffffffffffffffffffffffffffffffff8654168152610564858701611abb565b83820152815201920192019190610517565b50346101025780600319360112610102578060405161059660408261188e565b600581527f547970653100000000000000000000000000000000000000000000000000000060208201526040516105ce60408261188e565b600381527f3130300000000000000000000000000000000000000000000000000000000000602082015260405161060660408261188e565b600b81527f4f70657261746f7249443100000000000000000000000000000000000000000060208201526040519261063f60408561188e565b600784527f4f726967696e310000000000000000000000000000000000000000000000000060208501526040519261067860408561188e565b600684527f4c6f744e6f31000000000000000000000000000000000000000000000000000060208501526040516106b060408261188e565b600c81527f5472616e73706f727465723100000000000000000000000000000000000000006020820152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561081e576040517f491cc7c200000000000000000000000000000000000000000000000000000000815287818061074260048201906001606060808401938281528260208201528260408201520152565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610822578891610809575b50507f8982a390c0fb1688e369d1ab91e529cae84e472205007ac93be646ec121f9410604051806107a084898b8a898b87611e51565b0390a173ffffffffffffffffffffffffffffffffffffffff601f5460081c1692833b15610805576103208896928793604051998a98899788967fc57397ec00000000000000000000000000000000000000000000000000000000885260048801611e51565b8780fd5b816108139161188e565b61081e57865f61076a565b8680fd5b6040513d8a823e3d90fd5b5034610102578060031936011261010257601d5461084a816119a0565b91610858604051938461188e565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b83831061089a57604051806103e087826117a1565b600260206001926040516108ad81611845565b73ffffffffffffffffffffffffffffffffffffffff86541681526108d2858701611abb565b83820152815201920192019190610885565b5034610102578060031936011261010257601a54610901816119a0565b9161090f604051938461188e565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b83831061095157604051806103e08782611724565b600160208192610960856119b8565b81520192019201919061093c565b50346101025780600319360112610102578060405161098e60408261188e565b600981527f4c6f744e6f7331323300000000000000000000000000000000000000000000006020820152604051906109c760408361188e565b600b82527f4f70657261746f7234353600000000000000000000000000000000000000000060208301526040516109ff60408261188e565b600a81527f4d616368696e6537383900000000000000000000000000000000000000000000602082015260405192610a3860408561188e565b601284527f50726f63657373696e67486f75736558595a0000000000000000000000000000602085015260405190610a7160408361188e565b600982527f31323334353637383900000000000000000000000000000000000000000000006020830152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561034d576040517f491cc7c2000000000000000000000000000000000000000000000000000000008152868180610b0360048201906001606060808401938281528260208201528260408201520152565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610bd9578791610bc4575b50507fd494bd9dcaeef0e3e0fd19a0b13af05abf8ca5ffd5e70724ed987b2fcfa443d360405180610b60858988878b86611d5f565b0390a173ffffffffffffffffffffffffffffffffffffffff601f5460081c1691823b1561081e5786946103208692604051988997889687957fad2f19f300000000000000000000000000000000000000000000000000000000875260048701611df6565b81610bce9161188e565b61034d57855f610b2b565b6040513d89823e3d90fd5b503461010257806003193601126101025780604051610c0460408261188e565b600181527f3100000000000000000000000000000000000000000000000000000000000000602082015260405190610c3d60408361188e565b600b82527f4f70657261746f723132330000000000000000000000000000000000000000006020830152604051610c7560408261188e565b600a81527f5061636b61676534353600000000000000000000000000000000000000000000602082015260405192610cae60408561188e565b600284527f3530000000000000000000000000000000000000000000000000000000000000602085015260405190610ce760408361188e565b600382527f426f7800000000000000000000000000000000000000000000000000000000006020830152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561034d576040517f491cc7c2000000000000000000000000000000000000000000000000000000008152868180610d7960048201906001606060808401938281528260208201528260408201520152565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610bd9578791610e3a575b50507fc779766e64dba61c56c17693faa61ae802bcdc203a1479bfb4970edd3ab7e64f60405180610dd6858988878b86611d5f565b0390a173ffffffffffffffffffffffffffffffffffffffff601f5460081c1691823b1561081e5786946103208692604051988997889687957fe323281000000000000000000000000000000000000000000000000000000000875260048701611df6565b81610e449161188e565b61034d57855f610da1565b5034610102578060031936011261010257601b54610e6c816119a0565b610e79604051918261188e565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b838310610f5157868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210610ee657505050500390f35b91936020610f41827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083610f31835160408452604084019061168c565b92015190848184039101526116cf565b9601920192018594939192610ed7565b60026020600192604051610f6481611845565b610f6d866119b8565b8152610f7a858701611abb565b83820152815201920192019190610ea9565b503461010257806003193601126101025760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b818110610feb576103e0856103d48187038261188e565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610fd4565b503461010257806003193601126101025760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b818110611076576103e0856103d48187038261188e565b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161105f565b5034610102578060031936011261010257601e546110bf816119a0565b6110cc604051918261188e565b818152601e83526020810191837f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350845b83831061121a5786858760405192839260208401906020855251809152604084019160408260051b8601019392815b8383106111385786860387f35b9193957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09086929496030183528551906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b850101940192855b8281106111d15750505050506020806001929701930193019092869594929361112b565b909192939460208061120d837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08760019603018952895161168c565b97019501939291016111ad565b60405161122681611845565b73ffffffffffffffffffffffffffffffffffffffff835416815260018301805461124f816119a0565b9161125d604051938461188e565b8183528a526020808b20908b9084015b8382106112935750505050600192826020928360029501528152019201920191906110fc565b6001602081926112a2866119b8565b81520193019101909161126d565b503461010257806003193601126101025760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b81811061130f576103e0856103d48187038261188e565b825473ffffffffffffffffffffffffffffffffffffffff168452602090930192600192830192016112f8565b5034610102578060031936011261010257604051610b208082019082821067ffffffffffffffff8311176113d057908291611f988339039082f080156113c3577fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff00601f549260081b16911617601f5580f35b50604051903d90823e3d90fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b5034611639575f600319360112611639576040519061141d60408361188e565b600882527f5061636b6167653100000000000000000000000000000000000000000000000060208301526040519161145660408461188e565b600b83527f4f70657261746f7231323300000000000000000000000000000000000000000060208401526040519061148f60408361188e565b600e82527f5472616e73706f727465724142430000000000000000000000000000000000006020830152604051916114c860408461188e565b600983527f436172746f6e34353600000000000000000000000000000000000000000000006020840152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561163957604051947f491cc7c20000000000000000000000000000000000000000000000000000000086525f868061155b60048201906001606060808401938281528260208201528260408201520152565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561162e57611618575b8495507f5a6ec825b52239f3c530cc18dca698150d270962d2021703403dcd6815b1af61604051806115b587868689856118cf565b0390a173ffffffffffffffffffffffffffffffffffffffff601f5460081c1690813b1561034d57858094610320604051978896879586947fac366bc600000000000000000000000000000000000000000000000000000000865260048601611958565b9350935f6116259161188e565b5f928490611580565b6040513d5f823e3d90fd5b5f80fd5b60206040818301928281528451809452019201905f5b8181106116605750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611653565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b8181106116ec5750505090565b82517fffffffff00000000000000000000000000000000000000000000000000000000168452602093840193909201916001016116df565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061175657505050505090565b9091929394602080611792837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08660019603018752895161168c565b97019301930191939290611747565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106117d357505050505090565b9091929394602080611836837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff8151168452015191818582015201906116cf565b970193019301919392906117c4565b6040810190811067ffffffffffffffff82111761186157604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761186157604052565b9261190d906118ff61191b946118f1611955989560a0895260a089019061168c565b90878203602089015261168c565b90858203604087015261168c565b90838203606085015261168c565b906080818303910152604090600181527f310000000000000000000000000000000000000000000000000000000000000060208201520190565b90565b9261198461195595936119766119929460808852608088019061168c565b90868203602088015261168c565b90848203604086015261168c565b91606081840391015261168c565b67ffffffffffffffff81116118615760051b60200190565b90604051915f8154908160011c9260018316928315611ab1575b602085108414611a84578487528693908115611a445750600114611a00575b506119fe9250038361188e565b565b90505f9291925260205f20905f915b818310611a285750509060206119fe928201015f6119f1565b6020919350806001915483858901015201910190918492611a0f565b602093506119fe9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f6119f1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f16936119d2565b90604051918281549182825260208201905f5260205f20925f905b806007830110611cd2576119fe945491818110611c9c575b818110611c66575b818110611c30575b818110611bfa575b818110611bc4575b818110611b8e575b818110611b59575b10611b2c575b50038361188e565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f611b24565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b168152019301611b1e565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b168152019301611b16565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b168152019301611b0e565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b168152019301611b06565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b168152019301611afe565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b168152019301611af6565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b168152019301611aee565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920185929391611ad6565b93611da0611dbc94611d926119559895611d84611dae9660c08b5260c08b019061168c565b9089820360208b015261168c565b90878203604089015261168c565b90858203606087015261168c565b90838203608085015261168c565b9060a0818303910152604090600181527f310000000000000000000000000000000000000000000000000000000000000060208201520190565b93906119559593611e27611e4394611e19611e359460a08a5260a08a019061168c565b9088820360208a015261168c565b90868203604088015261168c565b90848203606086015261168c565b91608081840391015261168c565b949193611e94611eb094611e866119559997611e78611ea29660c08c5260c08c019061168c565b908a820360208c015261168c565b9088820360408a015261168c565b90868203606088015261168c565b90848203608086015261168c565b9160a081840391015261168c565b60085460ff1615611ece57600190565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa90811561162e575f91611f65575b50151590565b90506020813d602011611f8f575b81611f806020938361188e565b8101031261163957515f611f5f565b3d9150611f7356fe608080604052346071573315605e575f8054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3610aaa90816100768239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816334687fc51461050657508063386a0d26146104e9578063715018a61461046d5780637b844d86146104505780638da5cb5b1461041e578063ac366bc6146103cd578063ad2f19f31461037b578063c57397ec14610281578063e323281014610222578063e5dbd1ae14610192578063f2fde38b146100c15763f342554c146100a0575f80fd5b346100bd575f6003193601126100bd576020600454604051908152f35b5f80fd5b346100bd5760206003193601126100bd5760043573ffffffffffffffffffffffffffffffffffffffff81168091036100bd576100fb610851565b80156101665773ffffffffffffffffffffffffffffffffffffffff5f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b346100bd576101a03661060c565b929060025490600182018092116101f5577f14b6c7296a7ef1f1d61274d04d7364309a7a32fbb21087fb4c15a5d1534ac899946101e3836101f09460025561089d565b9160405195869586610789565b0390a1005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b346100bd576102303661069b565b90939160035491600183018093116101f5577fc779766e64dba61c56c17693faa61ae802bcdc203a1479bfb4970edd3ab7e64f95610274846101f09560035561089d565b92604051968796876107e4565b346100bd5760c06003193601126100bd5760043567ffffffffffffffff81116100bd576102b29036906004016105cb565b60243567ffffffffffffffff81116100bd576102d29036906004016105cb565b60443567ffffffffffffffff81116100bd576102f29036906004016105cb565b9160643567ffffffffffffffff81116100bd576103139036906004016105cb565b9260843567ffffffffffffffff81116100bd576103349036906004016105cb565b9060a4359167ffffffffffffffff83116100bd577f8982a390c0fb1688e369d1ab91e529cae84e472205007ac93be646ec121f9410956102746101f09436906004016105cb565b346100bd576103893661069b565b90939160015491600183018093116101f5577fd494bd9dcaeef0e3e0fd19a0b13af05abf8ca5ffd5e70724ed987b2fcfa443d395610274846101f09560015561089d565b346100bd576103db3661060c565b929060045490600182018092116101f5577f5a6ec825b52239f3c530cc18dca698150d270962d2021703403dcd6815b1af61946101e3836101f09460045561089d565b346100bd575f6003193601126100bd57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346100bd575f6003193601126100bd576020600354604051908152f35b346100bd575f6003193601126100bd57610485610851565b5f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346100bd575f6003193601126100bd576020600254604051908152f35b346100bd575f6003193601126100bd576020906001548152f35b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761056457604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff811161056457601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f820112156100bd578035906105ea6105e583610591565b610520565b92828452602083830101116100bd57815f926020809301838601378301015290565b9060806003198301126100bd5760043567ffffffffffffffff81116100bd5782610638916004016105cb565b9160243567ffffffffffffffff81116100bd5781610658916004016105cb565b9160443567ffffffffffffffff81116100bd5782610678916004016105cb565b916064359067ffffffffffffffff82116100bd57610698916004016105cb565b90565b60a06003198201126100bd5760043567ffffffffffffffff81116100bd57816106c6916004016105cb565b9160243567ffffffffffffffff81116100bd57826106e6916004016105cb565b9160443567ffffffffffffffff81116100bd5781610706916004016105cb565b9160643567ffffffffffffffff81116100bd5782610726916004016105cb565b916084359067ffffffffffffffff82116100bd57610698916004016105cb565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b939061069895936107ba6107d6946107ac6107c89460a08a5260a08a0190610746565b9088820360208a0152610746565b908682036040880152610746565b908482036060860152610746565b916080818403910152610746565b94919361082761084394610819610698999761080b6108359660c08c5260c08c0190610746565b908a820360208c0152610746565b9088820360408a0152610746565b908682036060880152610746565b908482036080860152610746565b9160a0818403910152610746565b73ffffffffffffffffffffffffffffffffffffffff5f5416330361087157565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b805f917a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015610a4c575b806d04ee2d6d415b85acef8100000000600a921015610a31575b662386f26fc10000811015610a1d575b6305f5e100811015610a0c575b6127108110156109fd575b60648110156109ef575b10156109e4575b600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602160018501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061097a6109716105e589610591565b97808952610591565b013660208801378501015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a83530480156109df577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a9192610985565b505090565b600190910190610917565b606460029104930192610910565b61271060049104930192610906565b6305f5e100600891049301926108fb565b662386f26fc10000601091049301926108ee565b6d04ee2d6d415b85acef8100000000602091049301926108de565b50604091507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000081046108c456fea2646970667358221220a9c618bfbb85195fed329e4119fa00e951d320f7d0808a565cf033273569107364736f6c634300081b0033a2646970667358221220a4c220bfd08dcd2e4d848a7a77bfe14eb671490b4e6bcd66c570ca986a031e8364736f6c634300081b0033","sourceMap":"134:4584:27:-:0;;;;;;;3166:4:3;134:4584:27;;3166:4:3;134:4584:27;;;3166:4:3;134:4584:27;3166:4:3;134:4584:27;;1087:4:14;134:4584:27;;;1087:4:14;134:4584:27;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f5f3560e01c8063051d3297146113fd5780630a9254e41461133b5780631ed7831c146112b05780632ade3880146110a25780633e5e3c23146110175780633f7286f414610f8c57806366d9a9a014610e4f57806372fc2a8d14610be457806382274c831461096e57806385226c81146108e4578063916a17c61461082d578063ab4bab3e14610576578063b0464fdc146104bf578063b5508aa914610435578063ba414fa614610410578063e20c9f7114610375578063f8a62bf6146101055763fa7626d4146100e0575f80fd5b34610102578060031936011261010257602060ff601f54166040519015158152f35b80fd5b50346101025780600319360112610102578060405161012560408261188e565b600181527f310000000000000000000000000000000000000000000000000000000000000060208201526040519061015e60408361188e565b600a82527f4d616368696e6531323300000000000000000000000000000000000000000000602083015260405161019660408261188e565b600b81527f4f70657261746f723435360000000000000000000000000000000000000000006020820152604051926101cf60408561188e565b600c84527f4f75747075744c6f7437383900000000000000000000000000000000000000006020850152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610366576040517f491cc7c200000000000000000000000000000000000000000000000000000000815285818061026160048201906001606060808401938281528260208201528260408201520152565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af190811561036a578691610351575b50507f14b6c7296a7ef1f1d61274d04d7364309a7a32fbb21087fb4c15a5d1534ac899604051806102bd87868689856118cf565b0390a173ffffffffffffffffffffffffffffffffffffffff601f5460081c1690813b1561034d57858094610320604051978896879586947fe5dbd1ae00000000000000000000000000000000000000000000000000000000865260048601611958565b03925af18015610342576103315750f35b8161033b9161188e565b6101025780f35b6040513d84823e3d90fd5b8580fd5b8161035b9161188e565b61036657845f610289565b8480fd5b6040513d88823e3d90fd5b503461010257806003193601126101025760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106103e4576103e0856103d48187038261188e565b6040519182918261163d565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff168452602090930192600192830192016103bd565b5034610102578060031936011261010257602061042b611ebe565b6040519015158152f35b5034610102578060031936011261010257601954610452816119a0565b91610460604051938461188e565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b8383106104a257604051806103e08782611724565b6001602081926104b1856119b8565b81520192019201919061048d565b5034610102578060031936011261010257601c546104dc816119a0565b916104ea604051938461188e565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b83831061052c57604051806103e087826117a1565b6002602060019260405161053f81611845565b73ffffffffffffffffffffffffffffffffffffffff8654168152610564858701611abb565b83820152815201920192019190610517565b50346101025780600319360112610102578060405161059660408261188e565b600581527f547970653100000000000000000000000000000000000000000000000000000060208201526040516105ce60408261188e565b600381527f3130300000000000000000000000000000000000000000000000000000000000602082015260405161060660408261188e565b600b81527f4f70657261746f7249443100000000000000000000000000000000000000000060208201526040519261063f60408561188e565b600784527f4f726967696e310000000000000000000000000000000000000000000000000060208501526040519261067860408561188e565b600684527f4c6f744e6f31000000000000000000000000000000000000000000000000000060208501526040516106b060408261188e565b600c81527f5472616e73706f727465723100000000000000000000000000000000000000006020820152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561081e576040517f491cc7c200000000000000000000000000000000000000000000000000000000815287818061074260048201906001606060808401938281528260208201528260408201520152565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610822578891610809575b50507f8982a390c0fb1688e369d1ab91e529cae84e472205007ac93be646ec121f9410604051806107a084898b8a898b87611e51565b0390a173ffffffffffffffffffffffffffffffffffffffff601f5460081c1692833b15610805576103208896928793604051998a98899788967fc57397ec00000000000000000000000000000000000000000000000000000000885260048801611e51565b8780fd5b816108139161188e565b61081e57865f61076a565b8680fd5b6040513d8a823e3d90fd5b5034610102578060031936011261010257601d5461084a816119a0565b91610858604051938461188e565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b83831061089a57604051806103e087826117a1565b600260206001926040516108ad81611845565b73ffffffffffffffffffffffffffffffffffffffff86541681526108d2858701611abb565b83820152815201920192019190610885565b5034610102578060031936011261010257601a54610901816119a0565b9161090f604051938461188e565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b83831061095157604051806103e08782611724565b600160208192610960856119b8565b81520192019201919061093c565b50346101025780600319360112610102578060405161098e60408261188e565b600981527f4c6f744e6f7331323300000000000000000000000000000000000000000000006020820152604051906109c760408361188e565b600b82527f4f70657261746f7234353600000000000000000000000000000000000000000060208301526040516109ff60408261188e565b600a81527f4d616368696e6537383900000000000000000000000000000000000000000000602082015260405192610a3860408561188e565b601284527f50726f63657373696e67486f75736558595a0000000000000000000000000000602085015260405190610a7160408361188e565b600982527f31323334353637383900000000000000000000000000000000000000000000006020830152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561034d576040517f491cc7c2000000000000000000000000000000000000000000000000000000008152868180610b0360048201906001606060808401938281528260208201528260408201520152565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610bd9578791610bc4575b50507fd494bd9dcaeef0e3e0fd19a0b13af05abf8ca5ffd5e70724ed987b2fcfa443d360405180610b60858988878b86611d5f565b0390a173ffffffffffffffffffffffffffffffffffffffff601f5460081c1691823b1561081e5786946103208692604051988997889687957fad2f19f300000000000000000000000000000000000000000000000000000000875260048701611df6565b81610bce9161188e565b61034d57855f610b2b565b6040513d89823e3d90fd5b503461010257806003193601126101025780604051610c0460408261188e565b600181527f3100000000000000000000000000000000000000000000000000000000000000602082015260405190610c3d60408361188e565b600b82527f4f70657261746f723132330000000000000000000000000000000000000000006020830152604051610c7560408261188e565b600a81527f5061636b61676534353600000000000000000000000000000000000000000000602082015260405192610cae60408561188e565b600284527f3530000000000000000000000000000000000000000000000000000000000000602085015260405190610ce760408361188e565b600382527f426f7800000000000000000000000000000000000000000000000000000000006020830152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561034d576040517f491cc7c2000000000000000000000000000000000000000000000000000000008152868180610d7960048201906001606060808401938281528260208201528260408201520152565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610bd9578791610e3a575b50507fc779766e64dba61c56c17693faa61ae802bcdc203a1479bfb4970edd3ab7e64f60405180610dd6858988878b86611d5f565b0390a173ffffffffffffffffffffffffffffffffffffffff601f5460081c1691823b1561081e5786946103208692604051988997889687957fe323281000000000000000000000000000000000000000000000000000000000875260048701611df6565b81610e449161188e565b61034d57855f610da1565b5034610102578060031936011261010257601b54610e6c816119a0565b610e79604051918261188e565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b838310610f5157868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210610ee657505050500390f35b91936020610f41827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083610f31835160408452604084019061168c565b92015190848184039101526116cf565b9601920192018594939192610ed7565b60026020600192604051610f6481611845565b610f6d866119b8565b8152610f7a858701611abb565b83820152815201920192019190610ea9565b503461010257806003193601126101025760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b818110610feb576103e0856103d48187038261188e565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610fd4565b503461010257806003193601126101025760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b818110611076576103e0856103d48187038261188e565b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161105f565b5034610102578060031936011261010257601e546110bf816119a0565b6110cc604051918261188e565b818152601e83526020810191837f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350845b83831061121a5786858760405192839260208401906020855251809152604084019160408260051b8601019392815b8383106111385786860387f35b9193957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09086929496030183528551906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b850101940192855b8281106111d15750505050506020806001929701930193019092869594929361112b565b909192939460208061120d837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08760019603018952895161168c565b97019501939291016111ad565b60405161122681611845565b73ffffffffffffffffffffffffffffffffffffffff835416815260018301805461124f816119a0565b9161125d604051938461188e565b8183528a526020808b20908b9084015b8382106112935750505050600192826020928360029501528152019201920191906110fc565b6001602081926112a2866119b8565b81520193019101909161126d565b503461010257806003193601126101025760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b81811061130f576103e0856103d48187038261188e565b825473ffffffffffffffffffffffffffffffffffffffff168452602090930192600192830192016112f8565b5034610102578060031936011261010257604051610b208082019082821067ffffffffffffffff8311176113d057908291611f988339039082f080156113c3577fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff00601f549260081b16911617601f5580f35b50604051903d90823e3d90fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b5034611639575f600319360112611639576040519061141d60408361188e565b600882527f5061636b6167653100000000000000000000000000000000000000000000000060208301526040519161145660408461188e565b600b83527f4f70657261746f7231323300000000000000000000000000000000000000000060208401526040519061148f60408361188e565b600e82527f5472616e73706f727465724142430000000000000000000000000000000000006020830152604051916114c860408461188e565b600983527f436172746f6e34353600000000000000000000000000000000000000000000006020840152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561163957604051947f491cc7c20000000000000000000000000000000000000000000000000000000086525f868061155b60048201906001606060808401938281528260208201528260408201520152565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561162e57611618575b8495507f5a6ec825b52239f3c530cc18dca698150d270962d2021703403dcd6815b1af61604051806115b587868689856118cf565b0390a173ffffffffffffffffffffffffffffffffffffffff601f5460081c1690813b1561034d57858094610320604051978896879586947fac366bc600000000000000000000000000000000000000000000000000000000865260048601611958565b9350935f6116259161188e565b5f928490611580565b6040513d5f823e3d90fd5b5f80fd5b60206040818301928281528451809452019201905f5b8181106116605750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611653565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b8181106116ec5750505090565b82517fffffffff00000000000000000000000000000000000000000000000000000000168452602093840193909201916001016116df565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061175657505050505090565b9091929394602080611792837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08660019603018752895161168c565b97019301930191939290611747565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106117d357505050505090565b9091929394602080611836837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff8151168452015191818582015201906116cf565b970193019301919392906117c4565b6040810190811067ffffffffffffffff82111761186157604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761186157604052565b9261190d906118ff61191b946118f1611955989560a0895260a089019061168c565b90878203602089015261168c565b90858203604087015261168c565b90838203606085015261168c565b906080818303910152604090600181527f310000000000000000000000000000000000000000000000000000000000000060208201520190565b90565b9261198461195595936119766119929460808852608088019061168c565b90868203602088015261168c565b90848203604086015261168c565b91606081840391015261168c565b67ffffffffffffffff81116118615760051b60200190565b90604051915f8154908160011c9260018316928315611ab1575b602085108414611a84578487528693908115611a445750600114611a00575b506119fe9250038361188e565b565b90505f9291925260205f20905f915b818310611a285750509060206119fe928201015f6119f1565b6020919350806001915483858901015201910190918492611a0f565b602093506119fe9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f6119f1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f16936119d2565b90604051918281549182825260208201905f5260205f20925f905b806007830110611cd2576119fe945491818110611c9c575b818110611c66575b818110611c30575b818110611bfa575b818110611bc4575b818110611b8e575b818110611b59575b10611b2c575b50038361188e565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f611b24565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b168152019301611b1e565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b168152019301611b16565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b168152019301611b0e565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b168152019301611b06565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b168152019301611afe565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b168152019301611af6565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b168152019301611aee565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920185929391611ad6565b93611da0611dbc94611d926119559895611d84611dae9660c08b5260c08b019061168c565b9089820360208b015261168c565b90878203604089015261168c565b90858203606087015261168c565b90838203608085015261168c565b9060a0818303910152604090600181527f310000000000000000000000000000000000000000000000000000000000000060208201520190565b93906119559593611e27611e4394611e19611e359460a08a5260a08a019061168c565b9088820360208a015261168c565b90868203604088015261168c565b90848203606086015261168c565b91608081840391015261168c565b949193611e94611eb094611e866119559997611e78611ea29660c08c5260c08c019061168c565b908a820360208c015261168c565b9088820360408a015261168c565b90868203606088015261168c565b90848203608086015261168c565b9160a081840391015261168c565b60085460ff1615611ece57600190565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa90811561162e575f91611f65575b50151590565b90506020813d602011611f8f575b81611f806020938361188e565b8101031261163957515f611f5f565b3d9150611f7356fe608080604052346071573315605e575f8054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3610aaa90816100768239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816334687fc51461050657508063386a0d26146104e9578063715018a61461046d5780637b844d86146104505780638da5cb5b1461041e578063ac366bc6146103cd578063ad2f19f31461037b578063c57397ec14610281578063e323281014610222578063e5dbd1ae14610192578063f2fde38b146100c15763f342554c146100a0575f80fd5b346100bd575f6003193601126100bd576020600454604051908152f35b5f80fd5b346100bd5760206003193601126100bd5760043573ffffffffffffffffffffffffffffffffffffffff81168091036100bd576100fb610851565b80156101665773ffffffffffffffffffffffffffffffffffffffff5f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b346100bd576101a03661060c565b929060025490600182018092116101f5577f14b6c7296a7ef1f1d61274d04d7364309a7a32fbb21087fb4c15a5d1534ac899946101e3836101f09460025561089d565b9160405195869586610789565b0390a1005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b346100bd576102303661069b565b90939160035491600183018093116101f5577fc779766e64dba61c56c17693faa61ae802bcdc203a1479bfb4970edd3ab7e64f95610274846101f09560035561089d565b92604051968796876107e4565b346100bd5760c06003193601126100bd5760043567ffffffffffffffff81116100