mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Allow marking free functions as suffixes
This commit is contained in:
parent
9b000cc5d2
commit
9af3439ff7
@ -1,6 +1,7 @@
|
|||||||
## 0.8.20 (unreleased)
|
## 0.8.20 (unreleased)
|
||||||
|
|
||||||
Language Features:
|
Language Features:
|
||||||
|
* General: Introduce literal suffix functions. Free functions can now be marked as suffixes and applied to literals using a new suffix call syntax.
|
||||||
|
|
||||||
|
|
||||||
Compiler Features:
|
Compiler Features:
|
||||||
@ -18,6 +19,11 @@ Bugfixes:
|
|||||||
* Antlr Grammar: Stricter rules for function definitions. The grammar will no longer accept as valid free functions having specifiers which are exclusive to contract functions.
|
* Antlr Grammar: Stricter rules for function definitions. The grammar will no longer accept as valid free functions having specifiers which are exclusive to contract functions.
|
||||||
|
|
||||||
|
|
||||||
|
AST Changes:
|
||||||
|
* AST: Add ``suffix`` field to ``FunctionDefinition`` AST node, which is ``true`` for free function definitions using the ``suffix`` modifier.
|
||||||
|
* AST: Add ``isSuffixCall`` field to ``FunctionCall`` AST node, which is ``true`` for calls resulting from applying a literal suffix.
|
||||||
|
|
||||||
|
|
||||||
### 0.8.19 (2023-02-22)
|
### 0.8.19 (2023-02-22)
|
||||||
|
|
||||||
Language Features:
|
Language Features:
|
||||||
|
@ -426,6 +426,104 @@ bool TypeChecker::visit(FunctionDefinition const& _function)
|
|||||||
else if (_function.libraryFunction())
|
else if (_function.libraryFunction())
|
||||||
m_errorReporter.typeError(7801_error, _function.location(), "Library functions cannot be \"virtual\".");
|
m_errorReporter.typeError(7801_error, _function.location(), "Library functions cannot be \"virtual\".");
|
||||||
}
|
}
|
||||||
|
if (_function.usableAsSuffix())
|
||||||
|
{
|
||||||
|
if (_function.stateMutability() != StateMutability::Pure)
|
||||||
|
m_errorReporter.typeError(
|
||||||
|
1716_error,
|
||||||
|
_function.location(),
|
||||||
|
"Only pure functions can be used as literal suffixes"
|
||||||
|
);
|
||||||
|
|
||||||
|
optional<string> parameterCountMessage;
|
||||||
|
if (_function.parameterList().parameters().size() == 0)
|
||||||
|
parameterCountMessage = "Functions that take no arguments cannot be used as literal suffixes.";
|
||||||
|
else if (_function.parameterList().parameters().size() >= 3)
|
||||||
|
parameterCountMessage = "Functions that take 3 or more arguments cannot be used as literal suffixes.";
|
||||||
|
|
||||||
|
if (parameterCountMessage.has_value())
|
||||||
|
m_errorReporter.typeError(9128_error, _function.parameterList().location(), parameterCountMessage.value());
|
||||||
|
else if (_function.parameterList().parameters().size() == 2)
|
||||||
|
{
|
||||||
|
auto const* mantissaType = dynamic_cast<IntegerType const*>(_function.parameterList().parameters()[0]->type());
|
||||||
|
auto const* exponentType = dynamic_cast<IntegerType const*>(_function.parameterList().parameters()[1]->type());
|
||||||
|
|
||||||
|
vector<string> mantissaOrExponentTypeErrorMessages;
|
||||||
|
if (!mantissaType)
|
||||||
|
mantissaOrExponentTypeErrorMessages.emplace_back("The mantissa parameter must be an integer.");
|
||||||
|
if (!exponentType)
|
||||||
|
mantissaOrExponentTypeErrorMessages.emplace_back("The exponent parameter must be an unsigned integer.");
|
||||||
|
|
||||||
|
if (!mantissaOrExponentTypeErrorMessages.empty())
|
||||||
|
m_errorReporter.typeError(
|
||||||
|
1587_error,
|
||||||
|
_function.parameterList().location(),
|
||||||
|
"Literal suffix function has invalid parameter types. " +
|
||||||
|
joinHumanReadable(mantissaOrExponentTypeErrorMessages, " ")
|
||||||
|
);
|
||||||
|
|
||||||
|
if (exponentType && exponentType->isSigned())
|
||||||
|
m_errorReporter.typeError(
|
||||||
|
3123_error,
|
||||||
|
_function.parameterList().parameters()[1]->typeName().location(),
|
||||||
|
"The exponent parameter of a literal suffix function must be unsigned. "
|
||||||
|
"Exponent is always either zero or a negative power of 10 but the parameter represents its absolute value."
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else if (_function.parameterList().parameters().size() == 1)
|
||||||
|
{
|
||||||
|
auto const* parameterType = _function.parameterList().parameters()[0]->type();
|
||||||
|
|
||||||
|
if (dynamic_cast<FixedPointType const*>(parameterType))
|
||||||
|
m_errorReporter.typeError(
|
||||||
|
2699_error,
|
||||||
|
_function.parameterList().parameters()[0]->location(),
|
||||||
|
"Parameters of fixed-point types are not allowed in literal suffix functions. "
|
||||||
|
"To support fractional literals the suffix function must accept two integer arguments "
|
||||||
|
"(mantissa and exponent) that such literals can be decomposed into."
|
||||||
|
);
|
||||||
|
|
||||||
|
if (
|
||||||
|
!TypeProvider::boolean()->isImplicitlyConvertibleTo(*parameterType) &&
|
||||||
|
// ASSUMPTION: There are no address payable literals.
|
||||||
|
!TypeProvider::address()->isImplicitlyConvertibleTo(*parameterType) &&
|
||||||
|
// ASSUMPTION: Literal 1 is implicitly convertible to any integer type.
|
||||||
|
!TypeProvider::rationalNumber(1)->isImplicitlyConvertibleTo(*parameterType) &&
|
||||||
|
// ASSUMPTION: bytes1 is implicitly convertible to any fixed-bytes type.
|
||||||
|
!TypeProvider::fixedBytes(1)->isImplicitlyConvertibleTo(*parameterType) &&
|
||||||
|
!TypeProvider::stringLiteral("a")->isImplicitlyConvertibleTo(*parameterType)
|
||||||
|
)
|
||||||
|
m_errorReporter.typeError(
|
||||||
|
2998_error,
|
||||||
|
_function.parameterList().parameters()[0]->location(),
|
||||||
|
"This literal suffix function is not usable as a suffix because no literal is "
|
||||||
|
"implicitly convertible to its parameter type."
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
solAssert(_function.returnParameterList());
|
||||||
|
if (_function.returnParameterList()->parameters().size() != 1)
|
||||||
|
{
|
||||||
|
m_errorReporter.typeError(
|
||||||
|
7848_error,
|
||||||
|
_function.returnParameterList()->location(),
|
||||||
|
"Literal suffix functions must return exactly one value."
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (ASTPointer<VariableDeclaration const> returnParameter: _function.returnParameterList()->parameters())
|
||||||
|
{
|
||||||
|
solAssert(returnParameter);
|
||||||
|
auto referenceType = dynamic_cast<ReferenceType const*>(returnParameter->type());
|
||||||
|
auto mappingType = dynamic_cast<MappingType const*>(returnParameter->type());
|
||||||
|
if (mappingType || (referenceType && !referenceType->dataStoredIn(DataLocation::Memory)))
|
||||||
|
m_errorReporter.typeError(
|
||||||
|
7251_error,
|
||||||
|
returnParameter->location(),
|
||||||
|
"Literal suffix functions can only return value types and reference types stored in memory."
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (_function.overrides() && _function.isFree())
|
if (_function.overrides() && _function.isFree())
|
||||||
m_errorReporter.syntaxError(1750_error, _function.location(), "Free functions cannot override.");
|
m_errorReporter.syntaxError(1750_error, _function.location(), "Free functions cannot override.");
|
||||||
|
|
||||||
|
@ -936,6 +936,7 @@ public:
|
|||||||
bool _free,
|
bool _free,
|
||||||
Token _kind,
|
Token _kind,
|
||||||
bool _isVirtual,
|
bool _isVirtual,
|
||||||
|
bool _usableAsSuffix,
|
||||||
ASTPointer<OverrideSpecifier> const& _overrides,
|
ASTPointer<OverrideSpecifier> const& _overrides,
|
||||||
ASTPointer<StructuredDocumentation> const& _documentation,
|
ASTPointer<StructuredDocumentation> const& _documentation,
|
||||||
ASTPointer<ParameterList> const& _parameters,
|
ASTPointer<ParameterList> const& _parameters,
|
||||||
@ -949,11 +950,14 @@ public:
|
|||||||
m_stateMutability(_stateMutability),
|
m_stateMutability(_stateMutability),
|
||||||
m_free(_free),
|
m_free(_free),
|
||||||
m_kind(_kind),
|
m_kind(_kind),
|
||||||
|
m_usableAsSuffix(_usableAsSuffix),
|
||||||
m_functionModifiers(std::move(_modifiers)),
|
m_functionModifiers(std::move(_modifiers)),
|
||||||
m_body(_body)
|
m_body(_body)
|
||||||
{
|
{
|
||||||
solAssert(_kind == Token::Constructor || _kind == Token::Function || _kind == Token::Fallback || _kind == Token::Receive, "");
|
solAssert(_kind == Token::Constructor || _kind == Token::Function || _kind == Token::Fallback || _kind == Token::Receive, "");
|
||||||
solAssert(isOrdinary() == !name().empty(), "");
|
solAssert(isOrdinary() == !name().empty(), "");
|
||||||
|
if (_usableAsSuffix)
|
||||||
|
solAssert(_free);
|
||||||
}
|
}
|
||||||
|
|
||||||
void accept(ASTVisitor& _visitor) override;
|
void accept(ASTVisitor& _visitor) override;
|
||||||
@ -966,6 +970,7 @@ public:
|
|||||||
bool isFallback() const { return m_kind == Token::Fallback; }
|
bool isFallback() const { return m_kind == Token::Fallback; }
|
||||||
bool isReceive() const { return m_kind == Token::Receive; }
|
bool isReceive() const { return m_kind == Token::Receive; }
|
||||||
bool isFree() const { return m_free; }
|
bool isFree() const { return m_free; }
|
||||||
|
bool usableAsSuffix() const { return m_usableAsSuffix; }
|
||||||
Token kind() const { return m_kind; }
|
Token kind() const { return m_kind; }
|
||||||
bool isPayable() const { return m_stateMutability == StateMutability::Payable; }
|
bool isPayable() const { return m_stateMutability == StateMutability::Payable; }
|
||||||
std::vector<ASTPointer<ModifierInvocation>> const& modifiers() const { return m_functionModifiers; }
|
std::vector<ASTPointer<ModifierInvocation>> const& modifiers() const { return m_functionModifiers; }
|
||||||
@ -1015,6 +1020,7 @@ private:
|
|||||||
StateMutability m_stateMutability;
|
StateMutability m_stateMutability;
|
||||||
bool m_free;
|
bool m_free;
|
||||||
Token const m_kind;
|
Token const m_kind;
|
||||||
|
bool m_usableAsSuffix;
|
||||||
std::vector<ASTPointer<ModifierInvocation>> m_functionModifiers;
|
std::vector<ASTPointer<ModifierInvocation>> m_functionModifiers;
|
||||||
ASTPointer<Block> m_body;
|
ASTPointer<Block> m_body;
|
||||||
};
|
};
|
||||||
|
@ -444,6 +444,7 @@ bool ASTJsonExporter::visit(FunctionDefinition const& _node)
|
|||||||
make_pair("kind", _node.isFree() ? "freeFunction" : TokenTraits::toString(_node.kind())),
|
make_pair("kind", _node.isFree() ? "freeFunction" : TokenTraits::toString(_node.kind())),
|
||||||
make_pair("stateMutability", stateMutabilityToString(_node.stateMutability())),
|
make_pair("stateMutability", stateMutabilityToString(_node.stateMutability())),
|
||||||
make_pair("virtual", _node.markedVirtual()),
|
make_pair("virtual", _node.markedVirtual()),
|
||||||
|
make_pair("suffix", _node.usableAsSuffix()),
|
||||||
make_pair("overrides", _node.overrides() ? toJson(*_node.overrides()) : Json::nullValue),
|
make_pair("overrides", _node.overrides() ? toJson(*_node.overrides()) : Json::nullValue),
|
||||||
make_pair("parameters", toJson(_node.parameterList())),
|
make_pair("parameters", toJson(_node.parameterList())),
|
||||||
make_pair("returnParameters", toJson(*_node.returnParameterList())),
|
make_pair("returnParameters", toJson(*_node.returnParameterList())),
|
||||||
|
@ -552,6 +552,7 @@ ASTPointer<FunctionDefinition> ASTJsonImporter::createFunctionDefinition(Json::V
|
|||||||
freeFunction,
|
freeFunction,
|
||||||
kind,
|
kind,
|
||||||
memberAsBool(_node, "virtual"),
|
memberAsBool(_node, "virtual"),
|
||||||
|
memberAsBool(_node, "suffix"),
|
||||||
_node["overrides"].isNull() ? nullptr : createOverrideSpecifier(member(_node, "overrides")),
|
_node["overrides"].isNull() ? nullptr : createOverrideSpecifier(member(_node, "overrides")),
|
||||||
_node["documentation"].isNull() ? nullptr : createDocumentation(member(_node, "documentation")),
|
_node["documentation"].isNull() ? nullptr : createDocumentation(member(_node, "documentation")),
|
||||||
createParameterList(member(_node, "parameters")),
|
createParameterList(member(_node, "parameters")),
|
||||||
|
@ -528,7 +528,7 @@ StateMutability Parser::parseStateMutability()
|
|||||||
return stateMutability;
|
return stateMutability;
|
||||||
}
|
}
|
||||||
|
|
||||||
Parser::FunctionHeaderParserResult Parser::parseFunctionHeader(bool _isStateVariable)
|
Parser::FunctionHeaderParserResult Parser::parseFunctionHeader(bool _isStateVariable, bool _freeFunction)
|
||||||
{
|
{
|
||||||
RecursionGuard recursionGuard(*this);
|
RecursionGuard recursionGuard(*this);
|
||||||
FunctionHeaderParserResult result;
|
FunctionHeaderParserResult result;
|
||||||
@ -540,7 +540,18 @@ Parser::FunctionHeaderParserResult Parser::parseFunctionHeader(bool _isStateVari
|
|||||||
{
|
{
|
||||||
Token token = m_scanner->currentToken();
|
Token token = m_scanner->currentToken();
|
||||||
if (!_isStateVariable && token == Token::Identifier)
|
if (!_isStateVariable && token == Token::Identifier)
|
||||||
|
{
|
||||||
|
if (_freeFunction && currentLiteral() == "suffix")
|
||||||
|
{
|
||||||
|
if (result.usableAsSuffix)
|
||||||
|
parserError(2878_error, "Suffix already specified.");
|
||||||
|
else
|
||||||
|
result.usableAsSuffix = true;
|
||||||
|
advance();
|
||||||
|
}
|
||||||
|
else
|
||||||
result.modifiers.push_back(parseModifierInvocation());
|
result.modifiers.push_back(parseModifierInvocation());
|
||||||
|
}
|
||||||
else if (TokenTraits::isVisibilitySpecifier(token))
|
else if (TokenTraits::isVisibilitySpecifier(token))
|
||||||
{
|
{
|
||||||
if (result.visibility != Visibility::Default)
|
if (result.visibility != Visibility::Default)
|
||||||
@ -650,7 +661,7 @@ ASTPointer<ASTNode> Parser::parseFunctionDefinition(bool _freeFunction)
|
|||||||
name = make_shared<ASTString>();
|
name = make_shared<ASTString>();
|
||||||
}
|
}
|
||||||
|
|
||||||
FunctionHeaderParserResult header = parseFunctionHeader(false);
|
FunctionHeaderParserResult header = parseFunctionHeader(false /* _isStateVariable */, _freeFunction);
|
||||||
|
|
||||||
ASTPointer<Block> block;
|
ASTPointer<Block> block;
|
||||||
nodeFactory.markEndPosition();
|
nodeFactory.markEndPosition();
|
||||||
@ -669,6 +680,7 @@ ASTPointer<ASTNode> Parser::parseFunctionDefinition(bool _freeFunction)
|
|||||||
_freeFunction,
|
_freeFunction,
|
||||||
kind,
|
kind,
|
||||||
header.isVirtual,
|
header.isVirtual,
|
||||||
|
header.usableAsSuffix,
|
||||||
header.overrides,
|
header.overrides,
|
||||||
documentation,
|
documentation,
|
||||||
header.parameters,
|
header.parameters,
|
||||||
@ -1188,7 +1200,7 @@ ASTPointer<FunctionTypeName> Parser::parseFunctionType()
|
|||||||
RecursionGuard recursionGuard(*this);
|
RecursionGuard recursionGuard(*this);
|
||||||
ASTNodeFactory nodeFactory(*this);
|
ASTNodeFactory nodeFactory(*this);
|
||||||
expectToken(Token::Function);
|
expectToken(Token::Function);
|
||||||
FunctionHeaderParserResult header = parseFunctionHeader(true);
|
FunctionHeaderParserResult header = parseFunctionHeader(true /* _isStateVariable */, false /* _freeFunction */);
|
||||||
return nodeFactory.createNode<FunctionTypeName>(
|
return nodeFactory.createNode<FunctionTypeName>(
|
||||||
header.parameters,
|
header.parameters,
|
||||||
header.returnParameters,
|
header.returnParameters,
|
||||||
|
@ -69,6 +69,7 @@ private:
|
|||||||
struct FunctionHeaderParserResult
|
struct FunctionHeaderParserResult
|
||||||
{
|
{
|
||||||
bool isVirtual = false;
|
bool isVirtual = false;
|
||||||
|
bool usableAsSuffix = false;
|
||||||
ASTPointer<OverrideSpecifier> overrides;
|
ASTPointer<OverrideSpecifier> overrides;
|
||||||
ASTPointer<ParameterList> parameters;
|
ASTPointer<ParameterList> parameters;
|
||||||
ASTPointer<ParameterList> returnParameters;
|
ASTPointer<ParameterList> returnParameters;
|
||||||
@ -99,7 +100,7 @@ private:
|
|||||||
Visibility parseVisibilitySpecifier();
|
Visibility parseVisibilitySpecifier();
|
||||||
ASTPointer<OverrideSpecifier> parseOverrideSpecifier();
|
ASTPointer<OverrideSpecifier> parseOverrideSpecifier();
|
||||||
StateMutability parseStateMutability();
|
StateMutability parseStateMutability();
|
||||||
FunctionHeaderParserResult parseFunctionHeader(bool _isStateVariable);
|
FunctionHeaderParserResult parseFunctionHeader(bool _isStateVariable, bool _freeFunction);
|
||||||
ASTPointer<ASTNode> parseFunctionDefinition(bool _freeFunction = false);
|
ASTPointer<ASTNode> parseFunctionDefinition(bool _freeFunction = false);
|
||||||
ASTPointer<StructDefinition> parseStructDefinition();
|
ASTPointer<StructDefinition> parseStructDefinition();
|
||||||
ASTPointer<EnumDefinition> parseEnumDefinition();
|
ASTPointer<EnumDefinition> parseEnumDefinition();
|
||||||
|
@ -103,6 +103,7 @@
|
|||||||
"scope": 7,
|
"scope": 7,
|
||||||
"src": "40:46:0",
|
"src": "40:46:0",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -80,6 +80,7 @@ JSON AST (compact format):
|
|||||||
"scope": 18,
|
"scope": 18,
|
||||||
"src": "82:63:0",
|
"src": "82:63:0",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
},
|
},
|
||||||
@ -174,6 +175,7 @@ JSON AST (compact format):
|
|||||||
"scope": 18,
|
"scope": 18,
|
||||||
"src": "398:61:0",
|
"src": "398:61:0",
|
||||||
"stateMutability": "view",
|
"stateMutability": "view",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -79,6 +79,7 @@
|
|||||||
"scope": 6,
|
"scope": 6,
|
||||||
"src": "72:27:0",
|
"src": "72:27:0",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -60,6 +60,7 @@
|
|||||||
"scope": 5,
|
"scope": 5,
|
||||||
"src": "23:18:1",
|
"src": "23:18:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "internal"
|
"visibility": "internal"
|
||||||
}
|
}
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
},
|
},
|
||||||
"src": "23:18:1",
|
"src": "23:18:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false
|
"virtual": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -565,6 +565,7 @@
|
|||||||
"scope": 39,
|
"scope": 39,
|
||||||
"src": "67:189:1",
|
"src": "67:189:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -373,6 +373,7 @@
|
|||||||
},
|
},
|
||||||
"src": "67:189:1",
|
"src": "67:189:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -158,6 +158,7 @@
|
|||||||
"scope": 6,
|
"scope": 6,
|
||||||
"src": "17:79:1",
|
"src": "17:79:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -143,6 +143,7 @@
|
|||||||
},
|
},
|
||||||
"src": "17:79:1",
|
"src": "17:79:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -83,6 +83,7 @@
|
|||||||
"scope": 6,
|
"scope": 6,
|
||||||
"src": "17:56:1",
|
"src": "17:56:1",
|
||||||
"stateMutability": "view",
|
"stateMutability": "view",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,7 @@
|
|||||||
},
|
},
|
||||||
"src": "17:56:1",
|
"src": "17:56:1",
|
||||||
"stateMutability": "view",
|
"stateMutability": "view",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -145,6 +145,7 @@
|
|||||||
"scope": 6,
|
"scope": 6,
|
||||||
"src": "17:93:1",
|
"src": "17:93:1",
|
||||||
"stateMutability": "view",
|
"stateMutability": "view",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -130,6 +130,7 @@
|
|||||||
},
|
},
|
||||||
"src": "17:93:1",
|
"src": "17:93:1",
|
||||||
"stateMutability": "view",
|
"stateMutability": "view",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -95,6 +95,7 @@
|
|||||||
"scope": 6,
|
"scope": 6,
|
||||||
"src": "17:71:1",
|
"src": "17:71:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -80,6 +80,7 @@
|
|||||||
},
|
},
|
||||||
"src": "17:71:1",
|
"src": "17:71:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -158,6 +158,7 @@
|
|||||||
"scope": 6,
|
"scope": 6,
|
||||||
"src": "17:99:1",
|
"src": "17:99:1",
|
||||||
"stateMutability": "view",
|
"stateMutability": "view",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -143,6 +143,7 @@
|
|||||||
},
|
},
|
||||||
"src": "17:99:1",
|
"src": "17:99:1",
|
||||||
"stateMutability": "view",
|
"stateMutability": "view",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -163,6 +163,7 @@
|
|||||||
"scope": 8,
|
"scope": 8,
|
||||||
"src": "15:137:1",
|
"src": "15:137:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -130,6 +130,7 @@
|
|||||||
},
|
},
|
||||||
"src": "15:137:1",
|
"src": "15:137:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -239,6 +239,7 @@
|
|||||||
"scope": 12,
|
"scope": 12,
|
||||||
"src": "51:95:1",
|
"src": "51:95:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -184,6 +184,7 @@
|
|||||||
},
|
},
|
||||||
"src": "51:95:1",
|
"src": "51:95:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -100,6 +100,7 @@
|
|||||||
"scope": 6,
|
"scope": 6,
|
||||||
"src": "17:63:1",
|
"src": "17:63:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -85,6 +85,7 @@
|
|||||||
},
|
},
|
||||||
"src": "17:63:1",
|
"src": "17:63:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -191,6 +191,7 @@
|
|||||||
"scope": 6,
|
"scope": 6,
|
||||||
"src": "17:179:1",
|
"src": "17:179:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -122,6 +122,7 @@
|
|||||||
"scope": 6,
|
"scope": 6,
|
||||||
"src": "17:83:1",
|
"src": "17:83:1",
|
||||||
"stateMutability": "view",
|
"stateMutability": "view",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -107,6 +107,7 @@
|
|||||||
},
|
},
|
||||||
"src": "17:83:1",
|
"src": "17:83:1",
|
||||||
"stateMutability": "view",
|
"stateMutability": "view",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -176,6 +176,7 @@
|
|||||||
},
|
},
|
||||||
"src": "17:179:1",
|
"src": "17:179:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -149,6 +149,7 @@
|
|||||||
"scope": 9,
|
"scope": 9,
|
||||||
"src": "17:76:1",
|
"src": "17:76:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -116,6 +116,7 @@
|
|||||||
},
|
},
|
||||||
"src": "17:76:1",
|
"src": "17:76:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -96,6 +96,7 @@
|
|||||||
"scope": 7,
|
"scope": 7,
|
||||||
"src": "13:20:1",
|
"src": "13:20:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
@ -213,6 +214,7 @@
|
|||||||
"scope": 17,
|
"scope": 17,
|
||||||
"src": "54:21:1",
|
"src": "54:21:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -69,6 +69,7 @@
|
|||||||
},
|
},
|
||||||
"src": "13:20:1",
|
"src": "13:20:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false
|
"virtual": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -165,6 +166,7 @@
|
|||||||
},
|
},
|
||||||
"src": "54:21:1",
|
"src": "54:21:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false
|
"virtual": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -60,6 +60,7 @@
|
|||||||
"scope": 5,
|
"scope": 5,
|
||||||
"src": "14:18:1",
|
"src": "14:18:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
},
|
},
|
||||||
"src": "14:18:1",
|
"src": "14:18:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false
|
"virtual": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -253,6 +253,7 @@
|
|||||||
"scope": 23,
|
"scope": 23,
|
||||||
"src": "188:23:3",
|
"src": "188:23:3",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"scope": 41,
|
"scope": 41,
|
||||||
"src": "17:355:1",
|
"src": "17:355:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
},
|
},
|
||||||
@ -478,6 +479,7 @@
|
|||||||
"scope": 41,
|
"scope": 41,
|
||||||
"src": "377:287:1",
|
"src": "377:287:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -246,6 +246,7 @@
|
|||||||
},
|
},
|
||||||
"src": "17:355:1",
|
"src": "17:355:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
},
|
},
|
||||||
@ -345,6 +346,7 @@
|
|||||||
},
|
},
|
||||||
"src": "377:287:1",
|
"src": "377:287:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -363,6 +363,7 @@
|
|||||||
"scope": 27,
|
"scope": 27,
|
||||||
"src": "57:271:1",
|
"src": "57:271:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -248,6 +248,7 @@
|
|||||||
},
|
},
|
||||||
"src": "57:271:1",
|
"src": "57:271:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -192,6 +192,7 @@
|
|||||||
},
|
},
|
||||||
"src": "188:23:3",
|
"src": "188:23:3",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -373,6 +373,7 @@
|
|||||||
"scope": 28,
|
"scope": 28,
|
||||||
"src": "42:223:1",
|
"src": "42:223:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -251,6 +251,7 @@
|
|||||||
},
|
},
|
||||||
"src": "42:223:1",
|
"src": "42:223:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -156,6 +156,7 @@
|
|||||||
"scope": 14,
|
"scope": 14,
|
||||||
"src": "16:45:1",
|
"src": "16:45:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "internal"
|
"visibility": "internal"
|
||||||
}
|
}
|
||||||
|
@ -117,6 +117,7 @@
|
|||||||
},
|
},
|
||||||
"src": "16:45:1",
|
"src": "16:45:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "internal"
|
"visibility": "internal"
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
},
|
},
|
||||||
"src": "0:20:1",
|
"src": "0:20:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
},
|
},
|
||||||
@ -284,6 +285,7 @@
|
|||||||
},
|
},
|
||||||
"src": "61:112:1",
|
"src": "61:112:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -60,6 +60,7 @@
|
|||||||
"scope": 5,
|
"scope": 5,
|
||||||
"src": "15:33:1",
|
"src": "15:33:1",
|
||||||
"stateMutability": "payable",
|
"stateMutability": "payable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "external"
|
"visibility": "external"
|
||||||
}
|
}
|
||||||
|
@ -60,6 +60,7 @@
|
|||||||
"scope": 9,
|
"scope": 9,
|
||||||
"src": "15:32:1",
|
"src": "15:32:1",
|
||||||
"stateMutability": "payable",
|
"stateMutability": "payable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "external"
|
"visibility": "external"
|
||||||
},
|
},
|
||||||
@ -95,6 +96,7 @@
|
|||||||
"scope": 9,
|
"scope": 9,
|
||||||
"src": "50:33:1",
|
"src": "50:33:1",
|
||||||
"stateMutability": "payable",
|
"stateMutability": "payable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "external"
|
"visibility": "external"
|
||||||
}
|
}
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
},
|
},
|
||||||
"src": "15:32:1",
|
"src": "15:32:1",
|
||||||
"stateMutability": "payable",
|
"stateMutability": "payable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "external"
|
"visibility": "external"
|
||||||
},
|
},
|
||||||
@ -80,6 +81,7 @@
|
|||||||
},
|
},
|
||||||
"src": "50:33:1",
|
"src": "50:33:1",
|
||||||
"stateMutability": "payable",
|
"stateMutability": "payable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "external"
|
"visibility": "external"
|
||||||
}
|
}
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
},
|
},
|
||||||
"src": "15:33:1",
|
"src": "15:33:1",
|
||||||
"stateMutability": "payable",
|
"stateMutability": "payable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "external"
|
"visibility": "external"
|
||||||
}
|
}
|
||||||
|
@ -60,6 +60,7 @@
|
|||||||
"scope": 5,
|
"scope": 5,
|
||||||
"src": "14:22:1",
|
"src": "14:22:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "external"
|
"visibility": "external"
|
||||||
}
|
}
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
},
|
},
|
||||||
"src": "14:22:1",
|
"src": "14:22:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "external"
|
"visibility": "external"
|
||||||
}
|
}
|
||||||
|
@ -219,6 +219,7 @@
|
|||||||
"scope": 17,
|
"scope": 17,
|
||||||
"src": "13:116:1",
|
"src": "13:116:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -168,6 +168,7 @@
|
|||||||
},
|
},
|
||||||
"src": "13:116:1",
|
"src": "13:116:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -162,6 +162,7 @@
|
|||||||
"scope": 11,
|
"scope": 11,
|
||||||
"src": "13:39:1",
|
"src": "13:39:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -110,6 +110,7 @@
|
|||||||
},
|
},
|
||||||
"src": "13:39:1",
|
"src": "13:39:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -171,6 +171,7 @@
|
|||||||
"scope": 15,
|
"scope": 15,
|
||||||
"src": "23:45:1",
|
"src": "23:45:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -125,6 +125,7 @@
|
|||||||
},
|
},
|
||||||
"src": "23:45:1",
|
"src": "23:45:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -163,6 +163,7 @@
|
|||||||
"scope": 14,
|
"scope": 14,
|
||||||
"src": "39:27:1",
|
"src": "39:27:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -129,6 +129,7 @@
|
|||||||
},
|
},
|
||||||
"src": "39:27:1",
|
"src": "39:27:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -163,6 +163,7 @@
|
|||||||
"scope": 14,
|
"scope": 14,
|
||||||
"src": "39:27:1",
|
"src": "39:27:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -129,6 +129,7 @@
|
|||||||
},
|
},
|
||||||
"src": "39:27:1",
|
"src": "39:27:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -224,6 +224,7 @@
|
|||||||
"scope": 15,
|
"scope": 15,
|
||||||
"src": "13:65:1",
|
"src": "13:65:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -144,6 +144,7 @@
|
|||||||
},
|
},
|
||||||
"src": "13:65:1",
|
"src": "13:65:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -107,6 +107,7 @@
|
|||||||
},
|
},
|
||||||
"src": "113:16:1",
|
"src": "113:16:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false
|
"virtual": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -69,6 +69,7 @@
|
|||||||
"scope": 5,
|
"scope": 5,
|
||||||
"src": "14:32:1",
|
"src": "14:32:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": true,
|
"virtual": true,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
@ -140,6 +141,7 @@
|
|||||||
"scope": 16,
|
"scope": 16,
|
||||||
"src": "77:30:1",
|
"src": "77:30:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": true,
|
"virtual": true,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
},
|
},
|
||||||
@ -187,6 +189,7 @@
|
|||||||
"scope": 16,
|
"scope": 16,
|
||||||
"src": "109:41:1",
|
"src": "109:41:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": true,
|
"virtual": true,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
@ -277,6 +280,7 @@
|
|||||||
"scope": 29,
|
"scope": 29,
|
||||||
"src": "172:34:1",
|
"src": "172:34:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
},
|
},
|
||||||
@ -324,6 +328,7 @@
|
|||||||
"scope": 29,
|
"scope": 29,
|
||||||
"src": "208:34:1",
|
"src": "208:34:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
},
|
},
|
||||||
"src": "14:32:1",
|
"src": "14:32:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": true,
|
"virtual": true,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
@ -106,6 +107,7 @@
|
|||||||
},
|
},
|
||||||
"src": "77:30:1",
|
"src": "77:30:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": true,
|
"virtual": true,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
},
|
},
|
||||||
@ -147,6 +149,7 @@
|
|||||||
},
|
},
|
||||||
"src": "109:41:1",
|
"src": "109:41:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": true,
|
"virtual": true,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
@ -221,6 +224,7 @@
|
|||||||
},
|
},
|
||||||
"src": "172:34:1",
|
"src": "172:34:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
},
|
},
|
||||||
@ -262,6 +266,7 @@
|
|||||||
},
|
},
|
||||||
"src": "208:34:1",
|
"src": "208:34:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -60,6 +60,7 @@
|
|||||||
"scope": 5,
|
"scope": 5,
|
||||||
"src": "15:32:1",
|
"src": "15:32:1",
|
||||||
"stateMutability": "payable",
|
"stateMutability": "payable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "external"
|
"visibility": "external"
|
||||||
}
|
}
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
},
|
},
|
||||||
"src": "15:32:1",
|
"src": "15:32:1",
|
||||||
"stateMutability": "payable",
|
"stateMutability": "payable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "external"
|
"visibility": "external"
|
||||||
}
|
}
|
||||||
|
@ -116,6 +116,7 @@
|
|||||||
"scope": 11,
|
"scope": 11,
|
||||||
"src": "13:40:1",
|
"src": "13:40:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -88,6 +88,7 @@
|
|||||||
},
|
},
|
||||||
"src": "13:40:1",
|
"src": "13:40:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -127,6 +127,7 @@
|
|||||||
"scope": 12,
|
"scope": 12,
|
||||||
"src": "13:45:1",
|
"src": "13:45:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -95,6 +95,7 @@
|
|||||||
},
|
},
|
||||||
"src": "13:45:1",
|
"src": "13:45:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -159,6 +159,7 @@
|
|||||||
"scope": 12,
|
"scope": 12,
|
||||||
"src": "13:40:1",
|
"src": "13:40:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -114,6 +114,7 @@
|
|||||||
},
|
},
|
||||||
"src": "13:40:1",
|
"src": "13:40:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -123,6 +123,7 @@
|
|||||||
"scope": 9,
|
"scope": 9,
|
||||||
"src": "13:56:1",
|
"src": "13:56:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -91,6 +91,7 @@
|
|||||||
},
|
},
|
||||||
"src": "13:56:1",
|
"src": "13:56:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -69,6 +69,7 @@
|
|||||||
"scope": 5,
|
"scope": 5,
|
||||||
"src": "17:30:1",
|
"src": "17:30:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": true,
|
"virtual": true,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
@ -127,6 +128,7 @@
|
|||||||
"scope": 10,
|
"scope": 10,
|
||||||
"src": "67:30:1",
|
"src": "67:30:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": true,
|
"virtual": true,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
@ -259,6 +261,7 @@
|
|||||||
"scope": 22,
|
"scope": 22,
|
||||||
"src": "125:37:1",
|
"src": "125:37:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
},
|
},
|
||||||
"src": "17:30:1",
|
"src": "17:30:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": true,
|
"virtual": true,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
@ -95,6 +96,7 @@
|
|||||||
},
|
},
|
||||||
"src": "67:30:1",
|
"src": "67:30:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": true,
|
"virtual": true,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
@ -207,6 +209,7 @@
|
|||||||
},
|
},
|
||||||
"src": "125:37:1",
|
"src": "125:37:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -123,6 +123,7 @@
|
|||||||
"scope": 9,
|
"scope": 9,
|
||||||
"src": "13:62:1",
|
"src": "13:62:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -91,6 +91,7 @@
|
|||||||
},
|
},
|
||||||
"src": "13:62:1",
|
"src": "13:62:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -108,6 +108,7 @@
|
|||||||
"scope": 20,
|
"scope": 20,
|
||||||
"src": "11:33:1",
|
"src": "11:33:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "internal"
|
"visibility": "internal"
|
||||||
},
|
},
|
||||||
@ -218,6 +219,7 @@
|
|||||||
"scope": 19,
|
"scope": 19,
|
||||||
"src": "77:28:1",
|
"src": "77:28:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -76,6 +76,7 @@
|
|||||||
},
|
},
|
||||||
"src": "11:33:1",
|
"src": "11:33:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "internal"
|
"visibility": "internal"
|
||||||
},
|
},
|
||||||
@ -162,6 +163,7 @@
|
|||||||
},
|
},
|
||||||
"src": "77:28:1",
|
"src": "77:28:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -206,6 +206,7 @@
|
|||||||
"scope": 28,
|
"scope": 28,
|
||||||
"src": "48:47:1",
|
"src": "48:47:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "internal"
|
"visibility": "internal"
|
||||||
},
|
},
|
||||||
|
@ -154,6 +154,7 @@
|
|||||||
},
|
},
|
||||||
"src": "48:47:1",
|
"src": "48:47:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "internal"
|
"visibility": "internal"
|
||||||
},
|
},
|
||||||
|
@ -268,6 +268,7 @@
|
|||||||
"scope": 50,
|
"scope": 50,
|
||||||
"src": "61:41:1",
|
"src": "61:41:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "internal"
|
"visibility": "internal"
|
||||||
},
|
},
|
||||||
@ -391,6 +392,7 @@
|
|||||||
"scope": 50,
|
"scope": 50,
|
||||||
"src": "103:39:1",
|
"src": "103:39:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "internal"
|
"visibility": "internal"
|
||||||
},
|
},
|
||||||
@ -650,6 +652,7 @@
|
|||||||
"scope": 49,
|
"scope": 49,
|
||||||
"src": "160:78:1",
|
"src": "160:78:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -138,6 +138,7 @@
|
|||||||
"scope": 14,
|
"scope": 14,
|
||||||
"src": "33:19:1",
|
"src": "33:19:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "internal"
|
"visibility": "internal"
|
||||||
},
|
},
|
||||||
|
@ -101,6 +101,7 @@
|
|||||||
},
|
},
|
||||||
"src": "33:19:1",
|
"src": "33:19:1",
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "internal"
|
"visibility": "internal"
|
||||||
},
|
},
|
||||||
|
@ -142,6 +142,7 @@
|
|||||||
"scope": 6,
|
"scope": 6,
|
||||||
"src": "22:192:1",
|
"src": "22:192:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
@ -127,6 +127,7 @@
|
|||||||
},
|
},
|
||||||
"src": "22:192:1",
|
"src": "22:192:1",
|
||||||
"stateMutability": "pure",
|
"stateMutability": "pure",
|
||||||
|
"suffix": false,
|
||||||
"virtual": false,
|
"virtual": false,
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user