diff --git a/Platform/Windows/src/DirectX12PlatformEmitter.cpp b/Platform/Windows/src/DirectX12PlatformEmitter.cpp index a91855d..c7cab88 100644 --- a/Platform/Windows/src/DirectX12PlatformEmitter.cpp +++ b/Platform/Windows/src/DirectX12PlatformEmitter.cpp @@ -111,10 +111,11 @@ namespace AZ::ShaderCompiler const auto& samplerInfo = *memberInfo->m_samplerState; if (!samplerInfo.m_isDynamic) { - rootParam << " \"StaticSampler(s" << std::to_string(param.m_registerBinding.m_pair[querySet].m_registerIndex) - << ", space = " << std::to_string(param.m_registerBinding.m_pair[querySet].m_logicalSpace) - << ", visibility=SHADER_VISIBILITY_ALL" - << samplerInfo << ")"; + Streamable&& s{MakeOStreamStreamable{rootParam}}; + s << " \"StaticSampler(s" << std::to_string(param.m_registerBinding.m_pair[querySet].m_registerIndex) + << ", space = " << std::to_string(param.m_registerBinding.m_pair[querySet].m_logicalSpace) + << ", visibility=SHADER_VISIBILITY_ALL" + << samplerInfo << ")"; rootAttrList.push_back(rootParam.str()); } } diff --git a/Platform/Windows/src/VulkanPlatformEmitter.cpp b/Platform/Windows/src/VulkanPlatformEmitter.cpp index 646f461..7c13b6d 100644 --- a/Platform/Windows/src/VulkanPlatformEmitter.cpp +++ b/Platform/Windows/src/VulkanPlatformEmitter.cpp @@ -57,7 +57,8 @@ namespace AZ::ShaderCompiler stream << "#ifdef AZ_USE_SUBPASSINPUT\n"; inputAttachmentIndexAttribute->m_namespace = "vk"; inputAttachmentIndexAttribute->m_category = AttributeCategory::Sequence; - CodeEmitter::EmitAttribute(*inputAttachmentIndexAttribute, stream); + MakeOStreamStreamable soss(stream); + CodeEmitter::EmitAttribute(*inputAttachmentIndexAttribute, soss); stream << "[[vk::binding(" << bindInfoRegisterIndex; if (stringifiedLogicalSpace) { diff --git a/launch_grun.bat b/launch_grun.bat index a22a2b5..85f6f8e 100644 --- a/launch_grun.bat +++ b/launch_grun.bat @@ -15,8 +15,9 @@ if "%~1" == "" ( pushd cd "%~dp0\src\generated\java" -set antlr4=java org.antlr.v4.Tool -set grun=java org.antlr.v4.gui.TestRig + +SET CLASSPATH=.;"..\..\external\antlr-4.9.3-complete.jar";%CLASSPATH% +set grun=java -cp %CLASSPATH% org.antlr.v4.gui.TestRig %grun% azsl compilationUnit -gui "%thepath%" popd diff --git a/src/AzslcBackend.cpp b/src/AzslcBackend.cpp index 54e1649..9c3faef 100644 --- a/src/AzslcBackend.cpp +++ b/src/AzslcBackend.cpp @@ -69,7 +69,7 @@ namespace AZ::ShaderCompiler // Define emission for sampler states // Reference: https://github.com/Microsoft/DirectXShaderCompiler/blob/master/tools/clang/unittests/HLSL/FunctionTest.cpp - std::ostream &operator << (std::ostream &out, const SamplerStateDesc::AddressMode& addressMode) + Streamable& operator << (Streamable& out, const SamplerStateDesc::AddressMode& addressMode) { return out << ((addressMode == SamplerStateDesc::AddressMode::Wrap) ? "TEXTURE_ADDRESS_WRAP" : (addressMode == SamplerStateDesc::AddressMode::Clamp) ? "TEXTURE_ADDRESS_CLAMP" @@ -78,7 +78,7 @@ namespace AZ::ShaderCompiler : "TEXTURE_ADDRESS_MIRROR_ONCE"); } - std::ostream &operator << (std::ostream &out, const SamplerStateDesc::ComparisonFunc& compFunc) + Streamable& operator << (Streamable& out, const SamplerStateDesc::ComparisonFunc& compFunc) { return out << ((compFunc == SamplerStateDesc::ComparisonFunc::Never) ? "COMPARISON_NEVER" : (compFunc == SamplerStateDesc::ComparisonFunc::Less) ? "COMPARISON_LESS" @@ -90,14 +90,14 @@ namespace AZ::ShaderCompiler : "COMPARISON_ALWAYS"); } - std::ostream &operator << (std::ostream &out, const SamplerStateDesc::BorderColor& borderColor) + Streamable& operator << (Streamable& out, const SamplerStateDesc::BorderColor& borderColor) { return out << ((borderColor == SamplerStateDesc::BorderColor::OpaqueBlack) ? "STATIC_BORDER_COLOR_OPAQUE_BLACK" : (borderColor == SamplerStateDesc::BorderColor::OpaqueWhite) ? "STATIC_BORDER_COLOR_OPAQUE_WHITE" : "STATIC_BORDER_COLOR_TRANSPARENT_BLACK"); } - std::ostream &operator << (std::ostream &out, const SamplerStateDesc& samplerDesc) + Streamable& operator << (Streamable& out, const SamplerStateDesc& samplerDesc) { // Resolving the filter is the hardest part of the emission out << ", filter = FILTER_"; @@ -241,7 +241,7 @@ namespace AZ::ShaderCompiler return pair; } - std::ostream &operator << (std::ostream &out, const SamplerStateDesc::ReductionType& redcType) + Streamable& operator << (Streamable& out, const SamplerStateDesc::ReductionType& redcType) { return out << ((redcType == SamplerStateDesc::ReductionType::Comparison) ? "Comparison" : (redcType == SamplerStateDesc::ReductionType::Filter) ? "Filter" @@ -280,7 +280,7 @@ namespace AZ::ShaderCompiler return token; } - void Backend::GetTextInStream(misc::Interval interval, std::ostream& output) const + void Backend::EmitTranspiledTokens(misc::Interval interval, Streamable& output) const { ssize_t ii = interval.a; while (ii <= interval.b) @@ -291,12 +291,13 @@ namespace AZ::ShaderCompiler } } - string Backend::GetTextAsString(misc::Interval interval) const + string Backend::GetTranspiledTokens(misc::Interval interval) const { static std::stringstream ss; ss.str({}); ss.clear(); - GetTextInStream(interval, ss); + MakeOStreamStreamable soss(ss); + EmitTranspiledTokens(interval, soss); return ss.str(); } @@ -310,7 +311,7 @@ namespace AZ::ShaderCompiler } auto* initClause = varInfo->m_declNode->variableInitializer()->standardVariableInitializer(); - return RemoveWhitespaces(GetTextAsString(initClause->getSourceInterval())); + return RemoveWhitespaces(GetTranspiledTokens(initClause->getSourceInterval())); } void Backend::AppendOptionRange(Json::Value& varOption, const IdentifierUID& varUid, const VarInfo* varInfo, const Options& options) const @@ -355,7 +356,7 @@ namespace AZ::ShaderCompiler if (!rangeAttribute) { throw AzslcEmitterException(EMITTER_INTEGER_HAS_NO_RANGE, - none, none, ConcatString("Option (", varUid.m_name, ") must specify a range with a minimum and maximum values")); + none, none, ConcatString("Option (", varUid.m_name, ") must decorate declaration with an attribute [range(minimum value, maximum value)]")); } if (rangeAttribute->m_argList.size() != 2) @@ -693,7 +694,8 @@ namespace AZ::ShaderCompiler return rootSig; } - const char* Backend::GetInputModifier(TypeQualifier typeQualifier) + //static + const char* Backend::GetInputModifier(const TypeQualifiers& typeQualifier) { const bool in = TypeHasStorageFlag(typeQualifier, StorageFlag::In); const bool out = TypeHasStorageFlag(typeQualifier, StorageFlag::Out); @@ -703,17 +705,60 @@ namespace AZ::ShaderCompiler : (out ? "out" : "")); } - string Backend::GetExtendedTypeInfo(const ExtendedTypeInfo& extTypeInfo, std::function translator) const + // static + string Backend::GetTypeModifier(const ExtendedTypeInfo& typeInfo, const Options& options, Modifiers bannedFlags /*= {}*/) { - string hlslString = ""; + using namespace std::string_literals; + string modifiers; + bool isMatrix = typeInfo.m_coreType.m_arithmeticInfo.IsMatrix(); + if (typeInfo.CheckHasStorageFlag(StorageFlag::ColumnMajor) && !(bannedFlags & StorageFlag::ColumnMajor)) + { + modifiers = "column_major"; + } + else if (typeInfo.CheckHasStorageFlag(StorageFlag::RowMajor) && !(bannedFlags & StorageFlag::RowMajor)) + { + modifiers = "row_major"; + } + else if (options.m_forceEmitMajor && isMatrix) + { + modifiers = options.m_forceMatrixRowMajor ? "row_major" : "column_major"; + } + auto maybeSpace = [&modifiers](){ return modifiers.empty() ? "" : " "; }; + using SF = StorageFlag; + static const StorageFlag toReEmit[] = {SF::Static, SF::Extern, SF::Inline, + SF::Const, SF::Volatile, SF::Precise, SF::Groupshared, + SF::Uniform, SF::Globallycoherent, SF::Unsigned}; + for (int i = 0; i < std::size(toReEmit); ++i) + { + if (typeInfo.CheckHasStorageFlag(toReEmit[i]) && !(bannedFlags & toReEmit[i])) + { + modifiers += maybeSpace() + ToLower(StorageFlag::ToStr(toReEmit[i])); + } + } + + if (typeInfo.CheckHasStorageFlag(StorageFlag::Other) && !(bannedFlags & StorageFlag::Other)) + { + for (const auto& flag : typeInfo.m_qualifiers.m_others) + { + modifiers += " " + flag; + } + } + + return modifiers; + } + + string Backend::GetExtendedTypeInfo(const ExtendedTypeInfo& extTypeInfo, const Options& options, Modifiers banned, std::function translator) const + { + string hlslString = GetTypeModifier(extTypeInfo, options, banned); + hlslString += hlslString.empty() ? "" : " "; if (extTypeInfo.m_coreType.m_typeClass == TypeClass::Alias) { - hlslString = GetExtendedTypeInfo(m_ir->GetSymbolSubAs(extTypeInfo.m_coreType.m_typeId.GetName())->m_canonicalType, translator); + hlslString += GetExtendedTypeInfo(m_ir->GetSymbolSubAs(extTypeInfo.m_coreType.m_typeId.GetName())->m_canonicalType, options, banned, translator); } else if (HasGenericParameter(extTypeInfo.m_coreType.m_typeClass) || !extTypeInfo.m_genericParameter.IsEmpty()) { - hlslString = translator(extTypeInfo.m_coreType) + hlslString += translator(extTypeInfo.m_coreType) + "<" + translator(extTypeInfo.m_genericParameter); if (extTypeInfo.m_genericDims.IsArray()) { @@ -723,7 +768,7 @@ namespace AZ::ShaderCompiler } else { - hlslString = translator(extTypeInfo.m_coreType); + hlslString += translator(extTypeInfo.m_coreType); } return hlslString; @@ -751,7 +796,7 @@ namespace AZ::ShaderCompiler } // GetTotalSize of each member of the structure - uint32_t size = varInfo.m_typeInfoExt.GetTotalSize(options.m_packDataBuffers, options.m_emitRowMajor); + uint32_t size = varInfo.m_typeInfoExt.GetTotalSize(options.m_packDataBuffers, options.m_forceMatrixRowMajor); numberOf32bitRootConstants += (size / 4); } diff --git a/src/AzslcBackend.h b/src/AzslcBackend.h index 18c56c7..d334e80 100644 --- a/src/AzslcBackend.h +++ b/src/AzslcBackend.h @@ -8,6 +8,7 @@ #pragma once #include "AzslcListener.h" +#include "NewLineCounterStream.h" #include "jsoncpp/dist/json/json.h" @@ -30,7 +31,7 @@ namespace AZ::ShaderCompiler bool m_useUniqueIndices = false; bool m_emitConstantBufferBody = false; bool m_emitRootSig = false; - bool m_emitRowMajor = false; //!< False by default (HLSL standard) + bool m_forceMatrixRowMajor = false; //!< False by default (HLSL standard) bool m_forceEmitMajor = false; //!< True if either -Zpc or -Zpr was specified bool m_padRootConstantCB = false; //!< If True, the emitted root constant CB will padded to 16-byte boundary. bool m_skipAlignmentValidation = false; //! < If True, disables validation of a known DXC issue when certain word or 2-words size variables are preceded by some MatrixRxC variables. @@ -132,13 +133,23 @@ namespace AZ::ShaderCompiler class Backend { public: - Backend(IntermediateRepresentation* ir, TokenStream* tokens, std::ostream& out) - : m_ir(ir), m_tokens(tokens), m_out(out) + Backend(IntermediateRepresentation* ir, TokenStream* tokens) + : m_ir(ir), m_tokens(tokens) {} //! Gets the IntermediateRepresentation object const IntermediateRepresentation* GetIR() const { return m_ir; } + //! Make a string that lists all type qualifiers/modifiers in HLSL format + static string GetTypeModifier(const ExtendedTypeInfo&, const Options& options, Modifiers bannedFlags = {}); + + //! Get HLSL form of in/out modifiers + static const char* GetInputModifier(const TypeQualifiers& typeQualifier); + + //! Fabricate a HLSL snippet that represents the type stored in typeInfo. Relevant options relate to matrix qualifiers. + //! \param banned is the Flag you can setup to list a collection of type qualifiers you don't want to reproduce. + string GetExtendedTypeInfo(const ExtendedTypeInfo& extTypeInfo, const Options& options, Modifiers banned, std::function translator) const; + protected: //! Obtains a supplement emitter which provides per-platform emission functionality. const PlatformEmitter& GetPlatformEmitter() const; @@ -146,11 +157,9 @@ namespace AZ::ShaderCompiler //! Gets the next and increments tokenIndex. TokenIndex must be in the [misc::Interval.a, misc::Interval.b] range. Token cannot be nullptr. auto GetNextToken(ssize_t& tokenIndex, size_t channel = Token::DEFAULT_CHANNEL) const -> antlr4::Token*; - //! Extract an interval of text out of the source token stream, and append it to @output - virtual void GetTextInStream(misc::Interval interval, std::ostream& output) const; + virtual void EmitTranspiledTokens(misc::Interval interval, Streamable& output) const; - //! Extract an interval of text out of the source token stream - string GetTextAsString(misc::Interval interval) const; + string GetTranspiledTokens(misc::Interval interval) const; string GetInitializerClause(const AZ::ShaderCompiler::VarInfo* varInfo) const; @@ -166,13 +175,8 @@ namespace AZ::ShaderCompiler Json::Value GetVariantList(const Options& options, bool includeEmpty = false) const; - static const char* GetInputModifier(TypeQualifier typeQualifier); - - string GetExtendedTypeInfo(const ExtendedTypeInfo& extTypeInfo, std::function translator) const; - - std::ostream& m_out; - IntermediateRepresentation* m_ir; - TokenStream* m_tokens; + IntermediateRepresentation* m_ir; + TokenStream* m_tokens; }; // independent utility functions @@ -196,9 +200,9 @@ namespace AZ::ShaderCompiler // don't use for HLSL emission (this doesn't go through translation) string UnmangleTrimedName(const ExtendedTypeInfo& extTypeInfo); - std::ostream &operator << (std::ostream &out, const SamplerStateDesc::AddressMode& addressMode); - std::ostream &operator << (std::ostream &out, const SamplerStateDesc::ComparisonFunc& compFunc); - std::ostream &operator << (std::ostream &out, const SamplerStateDesc::BorderColor& borderColor); - std::ostream &operator << (std::ostream &out, const SamplerStateDesc& samplerDesc); - std::ostream &operator << (std::ostream &out, const SamplerStateDesc::ReductionType& redcType); + Streamable& operator << (Streamable& out, const SamplerStateDesc::AddressMode& addressMode); + Streamable& operator << (Streamable& out, const SamplerStateDesc::ComparisonFunc& compFunc); + Streamable& operator << (Streamable& out, const SamplerStateDesc::BorderColor& borderColor); + Streamable& operator << (Streamable& out, const SamplerStateDesc& samplerDesc); + Streamable& operator << (Streamable& out, const SamplerStateDesc::ReductionType& redcType); } diff --git a/src/AzslcEmitter.cpp b/src/AzslcEmitter.cpp index 47d5dce..bbadef9 100644 --- a/src/AzslcEmitter.cpp +++ b/src/AzslcEmitter.cpp @@ -44,7 +44,7 @@ namespace AZ namespace AZ::ShaderCompiler { // to activate argument dependent lookup from template utilities in AzslcUtils, this must be in a reachable namespace - std::ostream& operator << (std::ostream& out, const AttributeInfo::Argument& arg) + Streamable& operator << (Streamable& out, const AttributeInfo::Argument& arg) { if (holds_alternative(arg)) { @@ -73,7 +73,7 @@ namespace AZ::ShaderCompiler return out; } - std::ostream& operator << (std::ostream& out, const AttributeInfo& attr) + Streamable& operator << (Streamable& out, const AttributeInfo& attr) { if (!attr.m_namespace.empty()) { @@ -117,7 +117,10 @@ namespace AZ::ShaderCompiler const QualifiedNameView iteratedSymbolName = iteratedSymbolUid.GetName(); const Kind iteratedSymbolKind = m_ir->GetKind(iteratedSymbolUid); - EmitPreprocessorLineDirective(iteratedSymbolName); + if (IsTopLevelThroughTranslation(iteratedSymbolUid)) + { + EmitPreprocessorLineDirective(iteratedSymbolName); + } switch (iteratedSymbolKind) { @@ -142,7 +145,7 @@ namespace AZ::ShaderCompiler if (IsTopLevelThroughTranslation(iteratedSymbolUid)) { auto* aliasInfo = m_ir->GetSymbolSubAs(iteratedSymbolName); - EmitTypeAlias(iteratedSymbolUid, *aliasInfo); + EmitTypeAlias(iteratedSymbolUid, *aliasInfo, options); } break; } @@ -190,7 +193,7 @@ namespace AZ::ShaderCompiler auto* funcSub = m_ir->GetSymbolSubAs(iteratedSymbolName); const bool alreadyDeclared = AlreadyEmittedFunctionDeclaration(iteratedSymbolUid); assert(!funcSub->IsEmpty()); - const EmitFunctionAs form = funcSub->HasUniqueDeclarationThroughDefinition() || alreadyDeclared ? + const EmitFunctionAs form = (funcSub->HasUniqueDeclarationThroughDefinition() || alreadyDeclared) ? EmitFunctionAs::Definition : EmitFunctionAs::Declaration; EmitFunction(*funcSub, iteratedSymbolUid, form, options); break; @@ -460,23 +463,35 @@ namespace AZ::ShaderCompiler void CodeEmitter::EmitPreprocessorLineDirective(size_t azslLineNumber) { - const LineDirectiveInfo* lineDirectiveInfo = m_ir->GetNearestPreprocessorLineDirective(azslLineNumber); - if (!lineDirectiveInfo) - { - return; - } - - const auto physicalTokenLine = lineDirectiveInfo->m_physicalTokenLine; - if (m_alreadyEmittedPreprocessorLineDirectives.find(physicalTokenLine) != m_alreadyEmittedPreprocessorLineDirectives.end()) - { - return; - } - - const string& originalFileName = StdFs::absolute(lineDirectiveInfo->m_containingFilename).lexically_normal().generic_string(); - const auto lineNumber = lineDirectiveInfo->m_forcedLineNumber; - m_out << "#line " << lineNumber << " \"" << originalFileName << "\"\n"; - - m_alreadyEmittedPreprocessorLineDirectives.insert(physicalTokenLine); + if (azslLineNumber == 0) + return; // protect for this invalid case. seems to happen for "virtual" symbols (like OverloadSet) + + size_t supposedVirtualLine = m_lineFinder->GetVirtualLineNumber(azslLineNumber); + size_t curHlslLine = m_out.GetLineCount() + 1; // "lines" is a space that is 1-based indexed. + auto lastEmitted = Infimum(m_alreadyEmittedPreprocessorLineDirectives, curHlslLine); + if (lastEmitted != m_alreadyEmittedPreprocessorLineDirectives.cend()) + { + // verify if we can skip the line emission if current stream line feed is still in sync with expectations + // image: + // in sync out of sync + // 1 | #line 1 1 | #line 1 + // 2 | code 2 | code + // 3 | newSymbol 3 | code + // 4 | #line 2 + // 5 | newSymbol + + size_t curHlslPhysicalDistance = curHlslLine - lastEmitted->first; + size_t lastVirtualSet = lastEmitted->second; + size_t nonAdjustedCurrentLandingLine = lastVirtualSet + curHlslPhysicalDistance - 1; // -1 because line directives specify the NEXT line + if (nonAdjustedCurrentLandingLine == supposedVirtualLine) + return; // no need to emit. we can skip + } + // get the original file as absolute path: + const string& originalFileName = StdFs::absolute( m_lineFinder->GetVirtualFileName(azslLineNumber) ).lexically_normal().generic_string(); + // emit the line: + m_out << "#line " << supposedVirtualLine << " \"" << originalFileName << "\"\n"; + // remember it: + m_alreadyEmittedPreprocessorLineDirectives[curHlslLine] = supposedVirtualLine; } void CodeEmitter::EmitPreprocessorLineDirective(QualifiedNameView symbolName) @@ -502,8 +517,6 @@ namespace AZ::ShaderCompiler void CodeEmitter::EmitStruct(const ClassInfo& classInfo, string_view structuredSymName, const Options& options) { - EmitEmptyLinesToLineNumber(classInfo.GetOriginalLineNumber()); - auto HlslStructuredDelcTagFromKind = [](Kind k) { switch (k) @@ -538,7 +551,7 @@ namespace AZ::ShaderCompiler } else if (info.IsKindOneOf(Kind::TypeAlias)) { - EmitTypeAlias(uid, info.GetSubRefAs()); + EmitTypeAlias(uid, info.GetSubRefAs(), options); } else if (info.IsKindOneOf(Kind::Enum)) { @@ -622,16 +635,17 @@ namespace AZ::ShaderCompiler static string Undecorate(string_view decoration, const AttributeInfo::Argument& arg) { std::stringstream ss; - ss << arg; + MakeOStreamStreamable soss(ss); + (Streamable&)soss << arg; return string{AZ::Undecorate(decoration, ss.str())}; } void CodeEmitter::EmitAttribute(const AttributeInfo& attrInfo) const { - return EmitAttribute(attrInfo, Backend::m_out); + return EmitAttribute(attrInfo, m_out); } - void CodeEmitter::EmitAttribute(const AttributeInfo& attrInfo, std::ostream& outstream) + void CodeEmitter::EmitAttribute(const AttributeInfo& attrInfo, Streamable& outstream) { if (attrInfo.m_attribute == "verbatim") { @@ -648,7 +662,6 @@ namespace AZ::ShaderCompiler if (holds_alternative(attrInfo.m_argList[0])) { string poFormat{ Trim(get(attrInfo.m_argList[0]), "\"") }; - OutputFormat hint = OutputFormat::FromStr(poFormat); outstream << "#pragma OutputFormatHint(default " << poFormat << ")\n"; } else if (attrInfo.m_argList.size() > 1 && @@ -659,7 +672,6 @@ namespace AZ::ShaderCompiler if (rtIndex >= 0 && rtIndex <= 7) { string poFormat{ Trim(get(attrInfo.m_argList[1]), "\"") }; - OutputFormat hint = OutputFormat::FromStr(poFormat); outstream << "#pragma OutputFormatHint(target " << rtIndex << " " << poFormat << ")\n"; } } @@ -682,22 +694,21 @@ namespace AZ::ShaderCompiler { // We don't block any attributes we don't understand - pass them through outstream << ((attrInfo.m_category == AttributeCategory::Single) ? "[" : "[[") - << attrInfo - << ((attrInfo.m_category == AttributeCategory::Single) ? "]" : "]]") - << "\n"; + << attrInfo + << ((attrInfo.m_category == AttributeCategory::Single) ? "]" : "]]") + << "\n"; } } - void CodeEmitter::EmitTypeAlias(const IdentifierUID& uid, const TypeAliasInfo& aliasInfo) const + void CodeEmitter::EmitTypeAlias(const IdentifierUID& uid, const TypeAliasInfo& aliasInfo, const Options& options) const { - m_out << "typedef " << GetTranslatedName(aliasInfo.m_canonicalType, UsageContext::ReferenceSite) + using SF = StorageFlag; + m_out << "typedef " << GetTranslatedName(aliasInfo.m_canonicalType, UsageContext::ReferenceSite, options) << " " << GetTranslatedName(uid, UsageContext::DeclarationSite) << ";\n"; } void CodeEmitter::EmitEnum(const IdentifierUID& uid, const ClassInfo& classInfo, const Options& options) { - EmitEmptyLinesToLineNumber(classInfo.GetOriginalLineNumber()); - const auto& enumInfo = get(classInfo.m_subInfo); EmitAllAttachedAttributes(uid); @@ -746,20 +757,19 @@ namespace AZ::ShaderCompiler AstFuncSig* node = funcSub.m_defNode ? funcSub.m_defNode : funcSub.m_declNode; - EmitEmptyLinesToLineNumber(funcSub.GetOriginalLineNumber(emitAsDefinition)); - EmitAllAttachedAttributes(uid); - // emit modifiers in case of first declaration/definition + // emit some modifiers only in case of first declaration/definition // because: class C{ static vd A(); }; // static vd C::A(){} // ill-formed HLSL. we can't repeat static here. - if (!AlreadyEmittedFunctionDeclaration(uid)) + Modifiers forbidden; + bool firstDecl = !AlreadyEmittedFunctionDeclaration(uid); + if (!firstDecl) { - m_out << GetTypeModifier(funcSub, options) << " "; + forbidden = Modifiers{StorageFlag::Static} | StorageFlag::Inline | StorageFlag::Extern; } - // emit return type: - m_out << GetTranslatedName(funcSub.m_returnType, UsageContext::ReferenceSite) << " "; + m_out << GetTranslatedName(funcSub.m_returnType, UsageContext::ReferenceSite, options, forbidden) << " "; // emit Name if (entityConfiguration == EmitFunctionAs::Definition && funcSub.HasDeportedDefinition()) { @@ -798,92 +808,14 @@ namespace AZ::ShaderCompiler auto funcDefNode = ExtractSpecificParent(astNode); auto blockInterval = funcDefNode->block()->getSourceInterval(); m_out << "\n"; - EmitText(blockInterval); + EmitTranspiledTokens(blockInterval); m_out << "\n\n"; m_alreadyEmittedFunctionDefinitions.insert(uid); } } - // static - string CodeEmitter::GetTypeModifier(const VarInfo& var, const Options& options) - { - using namespace std::string_literals; - string modifiers; - bool isMatrix = IsArithmetic(var.GetTypeClass()) && var.m_typeInfoExt.m_coreType.m_arithmeticInfo.IsMatrix(); - if (var.CheckHasStorageFlag(StorageFlag::ColumnMajor)) - { - modifiers = "column_major"; - } - else if (var.CheckHasStorageFlag(StorageFlag::RowMajor)) - { - modifiers = "row_major"; - } - else if (options.m_forceEmitMajor && isMatrix) - { - modifiers = options.m_emitRowMajor ? "row_major" : "column_major"; - } - - auto maybeSpace = [&modifiers](){ return modifiers.empty() ? "" : " "; }; - if (var.CheckHasStorageFlag(StorageFlag::Volatile)) - { - modifiers += maybeSpace() + "volatile"s; - } - if (var.CheckHasStorageFlag(StorageFlag::Precise)) - { - modifiers += maybeSpace() + "precise"s; - } - if (var.CheckHasStorageFlag(StorageFlag::Groupshared)) - { - modifiers += maybeSpace() + "groupshared"s; - } - if (var.CheckHasStorageFlag(StorageFlag::Extern)) - { - assert(false); // should never get there. extern is banned from azsl - } - if (var.CheckHasStorageFlag(StorageFlag::Static)) - { - modifiers += maybeSpace() + "static"s; - } - if (var.CheckHasStorageFlag(StorageFlag::Const)) - { - modifiers += maybeSpace() + "const"s; - } - if (var.CheckHasStorageFlag(StorageFlag::Inline)) - { - // inline should not be added as modifier for variables in HLSL. But in HLSL6 can be useful for functions - } - if (var.CheckHasStorageFlag(StorageFlag::Unknown)) - { - for (const auto& flag : var.m_unknownQualifiers) - { - modifiers += " " + flag; - } - } - return modifiers; - } - - // static - string CodeEmitter::GetTypeModifier(const FunctionInfo& func, const Options& options) - { - using namespace std::string_literals; - string modifiers; - - auto maybeSpace = [&modifiers](){ return modifiers.empty() ? "" : " "; }; - if (func.CheckHasStorageFlag(StorageFlag::Static)) - { - modifiers += maybeSpace() + "static"s; - } - if (func.CheckHasStorageFlag(StorageFlag::Inline)) - { - modifiers += maybeSpace() + "inline"s; - } - return modifiers; - } - void CodeEmitter::EmitVariableDeclaration(const VarInfo& varInfo, const IdentifierUID& uid, const Options& options, VarDeclHasFlag declOptions) const { - EmitEmptyLinesToLineNumber(varInfo.GetOriginalLineNumber()); - // from MSDN: https://docs.microsoft.com/en-us/windows/desktop/direct3dhlsl/dx-graphics-hlsl-variable-syntax // [Storage_Class] [Type_Modifier] Type Name[Index] [: Semantic] [: Packoffset] [: Register]; [Annotations] [= Initial_Value] // example of valid HLSL statement: @@ -913,17 +845,13 @@ namespace AZ::ShaderCompiler // parameter in/out modifiers if (declOptions & VarDeclHas::InOutModifiers) { - m_out << GetInputModifier(varInfo.m_typeQualifier) << " "; - } - // type qualifiers (storage class, modifiers...) - if (!(declOptions & VarDeclHas::NoModifiers)) - { - m_out << GetTypeModifier(varInfo, options) << " "; + m_out << GetInputModifier(varInfo.m_typeInfoExt.m_qualifiers) << " "; } // type if (!(declOptions & VarDeclHas::NoType) || (declOptions & VarDeclHas::OptionDefine)) { - m_out << GetTranslatedName(varInfo.m_typeInfoExt, UsageContext::ReferenceSite) + " "; + auto bannedModifiers = (declOptions & VarDeclHas::NoModifiers) ? ~Modifiers{(StorageFlag::EnumType)0} : Modifiers{}; + m_out << GetTranslatedName(varInfo.m_typeInfoExt, UsageContext::ReferenceSite, options, bannedModifiers) + " "; } // var name m_out << GetTranslatedName(uid.m_name, UsageContext::DeclarationSite); @@ -933,7 +861,7 @@ namespace AZ::ShaderCompiler for (auto* rankCtx : varInfo.m_declNode->ArrayRankSpecifiers) { // the brackets are included by the rule arrayRankSpecifier - EmitText(rankCtx->getSourceInterval()); + EmitTranspiledTokens(rankCtx->getSourceInterval()); } } else if (!varInfo.GetArrayDimensions().Empty()) @@ -967,7 +895,7 @@ namespace AZ::ShaderCompiler if (initClause) { m_out << " "; - EmitText(initClause->getSourceInterval()); + EmitTranspiledTokens(initClause->getSourceInterval()); } else // fallback on a potentially folded value, that has chances to work for constants like enumerators { @@ -1063,8 +991,6 @@ namespace AZ::ShaderCompiler const auto* varInfo = m_ir->GetSymbolSubAs(cId.m_name); auto cbName = ReplaceSeparators(cId.m_name, Underscore); - EmitEmptyLinesToLineNumber(varInfo->GetOriginalLineNumber()); - assert(varInfo->IsConstantBuffer()); // note: instead of redoing this work ad-hoc, EmitText could be used directly on the ext type. const auto genericType = "<" + GetTranslatedName(varInfo->m_typeInfoExt.m_genericParameter, UsageContext::ReferenceSite) + ">"; @@ -1090,8 +1016,6 @@ namespace AZ::ShaderCompiler const auto& bindInfo = rootSig.Get(sId); const auto* varInfo = m_ir->GetSymbolSubAs(sId.m_name); - EmitEmptyLinesToLineNumber(varInfo->GetOriginalLineNumber()); - const string spaceX = ", space" + std::to_string(bindInfo.m_registerBinding.m_pair[bindSet].m_logicalSpace); m_out << (varInfo->m_samplerState->m_isComparison ? "SamplerComparisonState " : "SamplerState ") << ReplaceSeparators(sId.m_name, Underscore); @@ -1108,25 +1032,25 @@ namespace AZ::ShaderCompiler } //! For scope-migration-aware name emission of symbol names - string CodeEmitter::GetTranslatedName(QualifiedNameView mangledName, UsageContext qualification, ssize_t tokenId /*= NotOverToken*/) const + string CodeEmitter::GetTranslatedName(QualifiedNameView mangledName, UsageContext context, ssize_t tokenId /*= NotOverToken*/) const { - return m_translations.GetTranslatedName(mangledName, qualification, tokenId); + return m_translations.GetTranslatedName(mangledName, context, tokenId); } - string CodeEmitter::GetTranslatedName(const IdentifierUID& uid, UsageContext qualification, ssize_t tokenId /*= NotOverToken*/) const + string CodeEmitter::GetTranslatedName(const IdentifierUID& uid, UsageContext context, ssize_t tokenId /*= NotOverToken*/) const { - return GetTranslatedName(uid.m_name, qualification, tokenId); + return GetTranslatedName(uid.m_name, context, tokenId); } - string CodeEmitter::GetTranslatedName(const TypeRefInfo& typeRef, UsageContext qualification, ssize_t tokenId /*= NotOverToken*/) const + string CodeEmitter::GetTranslatedName(const TypeRefInfo& typeRef, UsageContext context, ssize_t tokenId /*= NotOverToken*/) const { - return GetTranslatedName(typeRef.m_typeId, qualification, tokenId); + return GetTranslatedName(typeRef.m_typeId, context, tokenId); } - string CodeEmitter::GetTranslatedName(const ExtendedTypeInfo& extTypeInfo, UsageContext qualification, ssize_t tokenId /*= NotOverToken*/) const + string CodeEmitter::GetTranslatedName(const ExtendedTypeInfo& extTypeInfo, UsageContext context, const Options& options, Modifiers forbidden /*= {}*/, ssize_t tokenId /*= NotOverToken*/) const { - return GetExtendedTypeInfo(extTypeInfo, - [this, qualification, tokenId](const TypeRefInfo& tri){ return GetTranslatedName(tri, qualification, tokenId); }); + return GetExtendedTypeInfo(extTypeInfo, options, forbidden, + [this, context, tokenId](const TypeRefInfo& tri){ return GetTranslatedName(tri, context, tokenId); }); } void CodeEmitter::EmitSRGDataView(const IdentifierUID& tId, const Options& options, const RootSigDesc& rootSig) const @@ -1135,12 +1059,10 @@ namespace AZ::ShaderCompiler auto bindSet = BindingPair::Set::Merged; auto& bindInfo = rootSig.Get(tId); auto* varInfo = m_ir->GetSymbolSubAs(tId.m_name); - string varType = GetTranslatedName(varInfo->m_typeInfoExt, UsageContext::DeclarationSite); + string varType = GetTranslatedName(varInfo->m_typeInfoExt, UsageContext::DeclarationSite, options); auto registerTypeLetter = ToLower(BindingType::ToStr(RootParamTypeToBindingType(bindInfo.m_type))); optional stringifiedLogicalSpace = std::to_string(bindInfo.m_registerBinding.m_pair[bindSet].m_logicalSpace); - EmitEmptyLinesToLineNumber(varInfo->GetOriginalLineNumber()); - // depending on platforms we may have supplementary attributes or/and type modifier. auto [prefix, suffix] = GetPlatformEmitter().GetDataViewHeaderFooter(*this, tId, bindInfo.m_registerBinding.m_pair[bindSet].m_registerIndex, registerTypeLetter, stringifiedLogicalSpace); m_out << prefix; @@ -1159,7 +1081,7 @@ namespace AZ::ShaderCompiler m_out << suffix; auto interval = m_ir->m_scope.m_scopeIntervals[tId]; - EmitText(interval); + EmitTranspiledTokens(interval); m_out << ";\n\n"; } @@ -1223,8 +1145,6 @@ namespace AZ::ShaderCompiler RootSigDesc::SrgDesc srgDesc; srgDesc.m_uid = srgId; - EmitEmptyLinesToLineNumber(srgInfo.GetOriginalLineNumber()); - m_out << "/* Generated code from "; // We don't emit the SRG attributes (only as a comment), but they can be accessed by the srgId if needed EmitAllAttachedAttributes(srgId); @@ -1277,8 +1197,7 @@ namespace AZ::ShaderCompiler } // override of the base method, to incorporate symbol and expression mutations - template - void CodeEmitter::GetTextInStreamInternal(misc::Interval interval, StreamLike& output, bool emitNewLines) const + void CodeEmitter::EmitTranspiledTokens(misc::Interval interval, Streamable& output) const { const ICodeEmissionMutator* codeMutator = m_codeMutator; @@ -1288,11 +1207,6 @@ namespace AZ::ShaderCompiler { auto* token = GetNextToken(ii /*inout*/); - if (emitNewLines) - { - EmitEmptyLinesToLineNumber(token->getLine()); - } - const auto tokenIndex = token->getTokenIndex(); const CodeMutation* codeMutation = codeMutator ? codeMutator->GetMutation(tokenIndex) : nullptr; @@ -1359,30 +1273,4 @@ namespace AZ::ShaderCompiler } } } - - void CodeEmitter::GetTextInStream(misc::Interval interval, std::ostream& output) const - { - if (m_out.IsTheSameStream(output)) - { - GetTextInStreamInternal(interval, m_out, true); - } - else - { - GetTextInStreamInternal(interval, output, false); - } - } - - void CodeEmitter::EmitText(misc::Interval interval) const - { - // extract interval (with necessary internal translations) and add it to m_out stream - GetTextInStream(interval, Backend::m_out); - } - - void CodeEmitter::EmitEmptyLinesToLineNumber(size_t originalLineNumber) const - { - while (m_out.GetLineCount() < originalLineNumber) - { - m_out << "\n"; - } - } } diff --git a/src/AzslcEmitter.h b/src/AzslcEmitter.h index 061007c..c6cb70c 100644 --- a/src/AzslcEmitter.h +++ b/src/AzslcEmitter.h @@ -10,7 +10,6 @@ #include "AzslcBackend.h" #include "AzslcSymbolTranslation.h" #include "AzslcCodeEmissionMutator.h" -#include "NewLineCounterStream.h" namespace Json { @@ -27,12 +26,11 @@ namespace AZ::ShaderCompiler struct CodeEmitter : Backend { - using Backend::Backend; - - CodeEmitter(IntermediateRepresentation* ir, TokenStream* tokens, std::ostream& out) + CodeEmitter(IntermediateRepresentation* ir, TokenStream* tokens, std::ostream& out, PreprocessorLineDirectiveFinder* lineFinder) : - Backend(ir, tokens, out), - m_out(out) + Backend(ir, tokens), + m_out(out), + m_lineFinder(lineFinder) {} //! Create a companion database of mutations on the IR, through which the emitter backend can query symbols scope and names. @@ -45,19 +43,28 @@ namespace AZ::ShaderCompiler void Run(const Options& options); //! For scope-migration-aware name emission of symbol names - string GetTranslatedName(QualifiedNameView mangledName, UsageContext qualification, ssize_t tokenId = NotOverToken) const; + string GetTranslatedName(QualifiedNameView mangledName, UsageContext context, ssize_t tokenId = NotOverToken) const; - string GetTranslatedName(const IdentifierUID& uid, UsageContext qualification, ssize_t tokenId = NotOverToken) const; + string GetTranslatedName(const IdentifierUID& uid, UsageContext context, ssize_t tokenId = NotOverToken) const; - string GetTranslatedName(const TypeRefInfo& typeRef, UsageContext qualification, ssize_t tokenId = NotOverToken) const; + string GetTranslatedName(const TypeRefInfo& typeRef, UsageContext context, ssize_t tokenId = NotOverToken) const; - string GetTranslatedName(const ExtendedTypeInfo& extType, UsageContext qualification, ssize_t tokenId = NotOverToken) const; + string GetTranslatedName(const ExtendedTypeInfo& extType, UsageContext context, const Options& options, Modifiers banned = {}, ssize_t tokenId = NotOverToken) const; //! Write the HLSL formatted shape of an attribute into a stream - static void EmitAttribute(const AttributeInfo& attrInfo, std::ostream& outstream); + static void EmitAttribute(const AttributeInfo& attrInfo, Streamable& outstream); void SetCodeMutator(ICodeEmissionMutator* codeMutator) { m_codeMutator = codeMutator; } + //! It would be nice that the clients don't push text through the passed "out" stream since it's not observed by the line counter; + //! use this API in case of custom client text pushing. + template< typename Streamable > + CodeEmitter& operator << (Streamable&& s) + { + m_out << s; + return *this; + } + protected: //! Emits the closest preprocessor generated "#line " directive located before @@ -74,7 +81,7 @@ namespace AZ::ShaderCompiler void EmitFunction(const FunctionInfo& funcSub, const IdentifierUID& id, EmitFunctionAs entityConfiguration, const Options& options); - void EmitTypeAlias(const IdentifierUID& uid, const TypeAliasInfo& aliasInfo) const; + void EmitTypeAlias(const IdentifierUID& uid, const TypeAliasInfo& aliasInfo, const Options& options) const; void EmitEnum(const IdentifierUID& uid, const ClassInfo& classInfo, const Options& options); @@ -92,12 +99,6 @@ namespace AZ::ShaderCompiler //! Emits get function definitions for root constants void EmitGetFunctionsForRootConstants(const ClassInfo& classInfo, string_view bufferName) const; - // for all sorts of const/static/groupshared/matrixmajor.... - static string GetTypeModifier(const VarInfo&, const Options& options); - - // for all sorts of inline/static/.... - static string GetTypeModifier(const FunctionInfo&, const Options& options); - //! That is a list of code elements we possibly want to emit (e.g when we emit a variable declaration) MAKE_REFLECTABLE_ENUM_POWER( VarDeclHas, InOutModifiers, // when we emit in the context of function parameters, HLSL in out keywords are important @@ -130,15 +131,15 @@ namespace AZ::ShaderCompiler } else { - m_out << GetInputModifier(param.m_typeQualifier) << " "; + m_out << GetInputModifier(param.m_typeInfo.m_qualifiers) << " "; - m_out << GetTranslatedName(param.m_typeInfo, UsageContext::ReferenceSite); + m_out << GetTranslatedName(param.m_typeInfo, UsageContext::ReferenceSite, options); if (!param.m_arrayRankSpecifiers.empty()) { for (auto* rankCtx : param.m_arrayRankSpecifiers) { - EmitText(rankCtx->getSourceInterval()); + EmitTranspiledTokens(rankCtx->getSourceInterval()); } } @@ -149,7 +150,7 @@ namespace AZ::ShaderCompiler if (param.m_defaultValueExpression) { - EmitText(param.m_defaultValueExpression->getSourceInterval()); + EmitTranspiledTokens(param.m_defaultValueExpression->getSourceInterval()); } } @@ -180,10 +181,10 @@ namespace AZ::ShaderCompiler void EmitSRG(const SRGInfo& srgInfo, const IdentifierUID& srgId, const Options& options, const RootSigDesc& rootSig); //! Advanced logic (targeted transpilation transforms included) interval-as-text extractor from source token stream - void GetTextInStream(misc::Interval interval, std::ostream& output) const override; - //! Will copy function body original tokens, skipping comments, reformatting if possible, and translating variable declarations when needed, as well as mutating reference names of migrated SRG contents. - void EmitText(misc::Interval interval) const; + void EmitTranspiledTokens(misc::Interval interval, Streamable& output) const override; + + void EmitTranspiledTokens(misc::Interval interval) const { EmitTranspiledTokens(interval, m_out); } //! Move a symbol to a different scope. Currently used to strip SRGs of their symbols, so that SRGs are effectively erased. void MigrateASTSubTree(const IdentifierUID& azslSymbol, QualifiedNameView landingScope); @@ -211,7 +212,7 @@ namespace AZ::ShaderCompiler SymbolTranslation m_translations; unordered_set m_alreadyEmittedFunctionDeclarations; unordered_set m_alreadyEmittedFunctionDefinitions; - unordered_set m_alreadyEmittedPreprocessorLineDirectives; + map m_alreadyEmittedPreprocessorLineDirectives; IdentifierUID m_shaderVariantFallbackUid; @@ -220,19 +221,15 @@ namespace AZ::ShaderCompiler ICodeEmissionMutator* m_codeMutator = nullptr; //! We keep track here of the number of lines that have been emitted. - //! The idea is to try to keep the number of lines between the input and the output files - //! as close to each other as possible. - //! Each symbol has an original line number where it appeared and if the number of output lines - //! is less We fill with '\n' (new line) characters until they match. + //! Each symbol has an original line number (virtual and physical) where it appeared, + //! and emission will also have line directives to remap errors from further tools to the original azsl. + //! To avoid spamming the output with line directives, we can keep track of whether a deviation + //! has been introduced since the last emitted line directive and the desired virtual line of the currently emitted code construct. mutable NewLineCounterStream m_out; - void EmitEmptyLinesToLineNumber(size_t originalLineNumber) const; - - //! This template takes over the previous implementation of - //! void GetTextInStream(misc::Interval interval, std::ostream& output) const override; - //! The idea is that by using the template We only have to write the same code once - //! whether We are using a regular std::ostream or an instance of NewLineCounterStream. - template - void GetTextInStreamInternal(misc::Interval interval, StreamLike& output, bool emitNewLines) const; + + PreprocessorLineDirectiveFinder* m_lineFinder; + + //! This is a readability function for class emission code. Serves for HLSL declarator of classes string EmitInheritanceList(const ClassInfo& clInfo); diff --git a/src/AzslcException.h b/src/AzslcException.h index fb03bad..24133e8 100644 --- a/src/AzslcException.h +++ b/src/AzslcException.h @@ -103,8 +103,6 @@ namespace AZ::ShaderCompiler EMITTER_UNDEFINED_SRG_MEMBER = 267u, // others - ADVANCED_SYNTAX_CONSTANT_BUFFER_RESTRICTION = 512u, - ADVANCED_SYNTAX_CONSTANT_BUFFER_ONLY_IN_SRG = 513u, ADVANCED_SYNTAX_DOUBLE_SCOPE_RESOLUTION = 514u, ADVANCED_RESERVED_NAME_USED = 515u, ADVANCED_SYNTAX_FUNCTION_IN_STRUCT = 516u, @@ -115,21 +113,21 @@ namespace AZ::ShaderCompiler public: AzslcException(uint32_t errorCode, const char* const errorType, optional line, optional column, const string& message) : antlr4::RuntimeException(message), - m_errorCode(errorCode), - m_errorType(errorType), - m_line(line), - m_column(column), - m_errorMessage("") + m_errorCode(errorCode), + m_errorType(errorType), + m_line(line), + m_column(column), + m_errorMessage("") { BakeErrorMessage(); } AzslcException(uint32_t errorCode, const char* const errorType, Token* token, const string& message) : RuntimeException(message), - m_token(token), - m_errorCode(errorCode), - m_errorType(errorType), - m_errorMessage("") + m_token(token), + m_errorCode(errorCode), + m_errorType(errorType), + m_errorMessage("") { if (m_token) { @@ -146,13 +144,13 @@ namespace AZ::ShaderCompiler } AzslcException(uint32_t errorCode, const char* const errorType, const string& message) - : RuntimeException(message), - m_token(nullptr), - m_errorCode(errorCode), - m_errorType(errorType), - m_line(none), - m_column(none), - m_errorMessage("") + : RuntimeException(message), + m_token(nullptr), + m_errorCode(errorCode), + m_errorType(errorType), + m_line(none), + m_column(none), + m_errorMessage("") { BakeErrorMessage(); } @@ -167,9 +165,12 @@ namespace AZ::ShaderCompiler return m_errorCode; } - static string MakeErrorMessage(string_view line, string_view column, string_view errorType, bool error, string_view code, string_view message) + static string MakeErrorMessage(string_view filename, string_view line, string_view column, string_view errorType, bool error, string_view code, string_view message) { - return ConcatString(s_currentSourceFileName, + // global filename for error messages. visual studio standard build-tool error format is: + // {filename(line# [, column#]) | toolname} : [ any text ] {error | warning} code+number:localizable string [ any text ] + // so to respect this, we're going to simplify the API by setting the report file here. + return ConcatString(filename, "(", line, ",", column, ") : ", errorType, error ? " error" : " warning", @@ -180,11 +181,8 @@ namespace AZ::ShaderCompiler protected: void BakeErrorMessage() { - if (s_sourceFileLineNumber) - { - m_line = *s_sourceFileLineNumber; - } - m_errorMessage = MakeErrorMessage(m_line ? ToString(*m_line) : "", + m_errorMessage = MakeErrorMessage(s_lineFinder->GetVirtualFileName(m_line ? *m_line : 0), + m_line ? ToString(s_lineFinder->GetVirtualLineNumber(*m_line)) : "", m_column ? ToString(*m_column) : "", m_errorType ? m_errorType : "", m_errorCode != WX_WARNINGS_AS_ERRORS, @@ -193,13 +191,7 @@ namespace AZ::ShaderCompiler } public: - //! global filename for error messages. visual studio standard build-tool error format is: - //! {filename(line# [, column#]) | toolname} : [ any text ] {error | warning} code+number:localizable string [ any text ] - //! so to respect this, we're going to simplify the API by setting the report file here. - static inline string s_currentSourceFileName; - - //! If set, it overrides @m_line. - static inline optional s_sourceFileLineNumber; + static inline PreprocessorLineDirectiveFinder* s_lineFinder; protected: const uint16_t m_errorCode; @@ -216,29 +208,26 @@ namespace AZ::ShaderCompiler inline static const char* const ErrorType = "Semantic"; public: - AzslcOrchestratorException(uint32_t errorCode, optional line,optional column, const string& message) + AzslcOrchestratorException(uint32_t errorCode, optional line, optional column, const string& message) : AzslcException(errorCode, - ErrorType, - line, - column, - message) - { - } + ErrorType, + line, + column, + message) + {} AzslcOrchestratorException(uint32_t errorCode, Token* token, const string& message) - : AzslcException(errorCode, - ErrorType, - token, - message) - { - } + : AzslcException(errorCode, + ErrorType, + token, + message) + {} AzslcOrchestratorException(uint32_t errorCode, const string& message) : AzslcException(errorCode, - ErrorType, - message) - { - } + ErrorType, + message) + {} }; class AzslcIrException final : public AzslcException @@ -247,12 +236,13 @@ namespace AZ::ShaderCompiler inline static const char* const ErrorType = "IR"; public: - AzslcIrException(uint32_t errorCode, const string& message) - : AzslcException(errorCode, - ErrorType, - message) - { - } + AzslcIrException(uint32_t errorCode, const string& message, optional line = none) + : AzslcException(errorCode, + ErrorType, + line, + none, + message) + {} }; class AzslcEmitterException final : public AzslcException @@ -263,61 +253,41 @@ namespace AZ::ShaderCompiler public: AzslcEmitterException(uint32_t errorCode, optional line, optional column, const string& message) : AzslcException(errorCode, - ErrorType, - line, - column, - message) - { - } + ErrorType, + line, + column, + message) + {} AzslcEmitterException(uint32_t errorCode, Token* token, const string& message) - : AzslcException(errorCode, - ErrorType, - token, - message) - { - } + : AzslcException(errorCode, + ErrorType, + token, + message) + {} AzslcEmitterException(uint32_t errorCode, const string& message) : AzslcException(errorCode, - ErrorType, - message) - { - } + ErrorType, + message) + {} }; class AzslParserEventListener final : public antlr4::BaseErrorListener { public: - explicit AzslParserEventListener(PreprocessorLineDirectiveFinder& lineDirectiveFinder) : m_lineDirectiveFinder(lineDirectiveFinder) {} - AzslParserEventListener() = delete; - ~AzslParserEventListener() override = default; - void syntaxError(antlr4::Recognizer* recognizer, antlr4::Token* offendingSymbol, size_t line, - size_t charPositionInLine, const string &msg, std::exception_ptr e) override + size_t charPositionInLine, const string& msg, std::exception_ptr e) override { - string errorMessage; - const LineDirectiveInfo* lineDirectiveInfo = m_lineDirectiveFinder.GetNearestPreprocessorLineDirective(line); - if (!lineDirectiveInfo) - { - errorMessage = std::move(AzslcException::MakeErrorMessage(ToString(line), - ToString(charPositionInLine + 1), - "syntax", - true, - ToString(static_cast(PARSER_SYNTAX_ERROR)), - msg)); - } - else - { - auto absoluteLineNumberInIncludedFile = m_lineDirectiveFinder.GetLineNumberInOriginalSourceFile(*lineDirectiveInfo, line); - AzslcException::s_currentSourceFileName = lineDirectiveInfo->m_containingFilename; - errorMessage = std::move(AzslcException::MakeErrorMessage(ToString(absoluteLineNumberInIncludedFile), - ToString(charPositionInLine + 1), - "syntax", - true, - ToString(static_cast(PARSER_SYNTAX_ERROR)), - msg)); - } + bool isKeyword = m_isKeywordPredicate(recognizer, offendingSymbol); + using Ex = AzslcException; + string errorMessage = Ex::MakeErrorMessage(Ex::s_lineFinder->GetVirtualFileName(line), + ToString(Ex::s_lineFinder->GetVirtualLineNumber(line)), + ToString(charPositionInLine + 1), + "syntax", + true, + ToString(PARSER_SYNTAX_ERROR), + ConcatString(msg, " (", offendingSymbol->getText(), isKeyword ? " is a keyword)" : " was unexpected)")); antlr4::ParseCancellationException parseException(errorMessage); if (e) @@ -330,6 +300,8 @@ namespace AZ::ShaderCompiler } } + std::function m_isKeywordPredicate; + void reportAmbiguity(antlr4::Parser *recognizer, const antlr4::dfa::DFA &dfa, size_t startIndex, size_t stopIndex, bool exact, const antlrcpp::BitSet &ambigAlts, antlr4::atn::ATNConfigSet *configs) override { @@ -344,9 +316,6 @@ namespace AZ::ShaderCompiler size_t prediction, antlr4::atn::ATNConfigSet *configs) override { } - - private: - PreprocessorLineDirectiveFinder& m_lineDirectiveFinder; }; inline void OutputNestedAndException(const exception& e) diff --git a/src/AzslcIntermediateRepresentation.cpp b/src/AzslcIntermediateRepresentation.cpp index 3333374..9cb5716 100644 --- a/src/AzslcIntermediateRepresentation.cpp +++ b/src/AzslcIntermediateRepresentation.cpp @@ -110,7 +110,8 @@ namespace AZ::ShaderCompiler } //! execute any logic that relates to intermediate treatment that would need to be done between front end and back end - void IntermediateRepresentation::MiddleEnd(const MiddleEndConfiguration& middleEndconfigration) + void IntermediateRepresentation::MiddleEnd(const MiddleEndConfiguration& middleEndconfigration, + PreprocessorLineDirectiveFinder* lineFinder) { // At this point we have an order apparition vector that stores symbols in the immediate naive // order in which they are first seen in the source code. @@ -129,7 +130,7 @@ namespace AZ::ShaderCompiler if (!middleEndconfigration.m_skipAlignmentValidation) { - ValidateAlignmentIssueWhenScalarOrFloat2PrecededByMatrix(middleEndconfigration); + ValidateAlignmentIssueWhenScalarOrFloat2PrecededByMatrix(middleEndconfigration, lineFinder); } } @@ -305,9 +306,15 @@ namespace AZ::ShaderCompiler void DumpSymbols(IntermediateRepresentation& ir) { + std::unordered_set seen; // avoid functions delc/def repetitions // in YAML form for (auto& uid : ir.m_symbols.GetOrderedSymbols()) { + if (seen.find(uid) != seen.end()) + { + continue; + } + seen.insert(uid); auto& [_, sym] = *ir.m_symbols.GetIdAndKindInfo(uid.m_name); assert(uid == _); cout << "Symbol " << Decorate("'", uid.m_name) << ":\n"; @@ -322,17 +329,9 @@ namespace AZ::ShaderCompiler // but they don't have actual type or declaration line, so we skip them here. cout << " line: " << (sub.m_declNode ? std::to_string(sub.m_declNode->start->getLine()) : "NA") << "\n"; cout << " type:\n" << ToYaml(sub.m_typeInfoExt, ir, " ") << "\n"; + cout << " storage: " << sub.m_typeInfoExt.m_qualifiers.GetDisplayName() << "\n"; cout << " array dim: \"" << sub.m_typeInfoExt.m_arrayDims.ToString() << "\"\n"; cout << " has sampler state: " << (sub.m_samplerState ? "yes\n" : "no\n"); - cout << " storage: "; - for (auto sf : StorageFlag::Enumerate{}) - { - auto flag = StorageFlag{sf}; - if (sub.CheckHasStorageFlag(flag)) - { - cout << StorageFlag::ToStr(flag) << " "; - } - } cout << "\n"; if (!holds_alternative(sub.m_constVal)) { @@ -365,6 +364,7 @@ namespace AZ::ShaderCompiler cout << " is method: " << sub.m_isMethod << "\n"; cout << " is virtual: " << sub.m_isVirtual << "\n"; cout << " return type:\n" << ToYaml(sub.m_returnType, ir, " ") << "\n"; + cout << " storage: " << sub.m_returnType.m_qualifiers.GetDisplayName() << "\n"; cout << " has overriding children:\n" << ToYaml(sub.m_overrides.begin(), sub.m_overrides.end(), " "); cout << " is hiding base symbol: '" << (sub.m_base ? sub.m_base->m_name.c_str() : "") << "'\n"; cout << " parameters:\n"; @@ -631,8 +631,8 @@ namespace AZ::ShaderCompiler string typeName = FormatString("uint%d", padSize / 4); ExtractedTypeExt padType = { UnqualifiedNameView(typeName), nullptr }; - varInfo.m_typeInfoExt = ExtendedTypeInfo{ m_sema.CreateTypeRefInfo(padType), - {}, {}, {}, Packing::MatrixMajor::Default }; + varInfo.m_typeInfoExt = ExtendedTypeInfo{m_sema.CreateTypeRefInfo(padType), {}, + {}, {}, {}, Packing::MatrixMajor::Default }; newVarKind.GetSubRefAs() = varInfo; rootConstantStructKindInfo.GetSubRefAs().PushMember(newVarUid, Kind::Variable); @@ -642,7 +642,8 @@ namespace AZ::ShaderCompiler m_rootConstantStructUID = rootConstantStructUid; } - void IntermediateRepresentation::ValidateAlignmentIssueWhenScalarOrFloat2PrecededByMatrix(const MiddleEndConfiguration& middleEndconfigration) + void IntermediateRepresentation::ValidateAlignmentIssueWhenScalarOrFloat2PrecededByMatrix(const MiddleEndConfiguration& middleEndconfigration, + PreprocessorLineDirectiveFinder* lineFinder) { //! Helper lambda to check if a symbol is a matrix, it also returns //! the number of columns in @numColumns @@ -876,25 +877,22 @@ namespace AZ::ShaderCompiler } // Let's get the line number where @insertBeforeThisUid was found in the flat AZSL file. - const auto * tmpThis = this; // To disambiguate which version of GetSymbolSubAs<> to call. - const auto * varInfo = tmpThis->GetSymbolSubAs(insertBeforeThisUid.GetName()); + const auto* constThis = this; // To disambiguate which cv-version of GetSymbolSubAs<> to call. + const auto* varInfo = constThis->GetSymbolSubAs(insertBeforeThisUid.GetName()); size_t lineOfDeclaration = varInfo->GetOriginalLineNumber(); - const LineDirectiveInfo* lineInfo = GetNearestPreprocessorLineDirective(lineOfDeclaration); - if (!lineInfo) + const LineDirectiveInfo* lineInfo = lineFinder->GetNearestPreprocessorLineDirective(lineOfDeclaration); + if (!lineInfo || lineOfDeclaration == 0) { - // When the LineDirectiveInfo* is null, it means We have detected a variable that was added + // When the LineDirectiveInfo* is null (or at 0), it means We have detected a variable that was added // by AZSLc itself. e.g. Root Constant padding, etc. // In such case, this is not an issue We want to interfere with. return {}; } - const auto originallineNumber = GetLineNumberInOriginalSourceFile(*lineInfo, lineOfDeclaration); - + const auto virtualLine = lineFinder->GetVirtualLineNumber(*lineInfo, lineOfDeclaration); string solution = FormatString("- A 'float%d' variable should be added before the variable '%s' in '%s %s' at Line number %zu of '%s'\n", - prepadType == PrepadType::Float2 ? 2 : 3, insertBeforeThisUid.GetNameLeaf().c_str(), typeName.c_str(), parentName.data(), - originallineNumber, lineInfo->m_containingFilename.c_str()); - + prepadType == PrepadType::Float2 ? 2 : 3, insertBeforeThisUid.GetNameLeaf().c_str(), typeName.c_str(), parentName.data(), + virtualLine, lineInfo->m_containingFilename.c_str()); return solution; - }; string solutionsReport; @@ -953,35 +951,4 @@ namespace AZ::ShaderCompiler return memberList[memberList.size() - 1]; } - - ////////////////////////////////////////////////////////////////////////// - // PreprocessorLineDirective overrides... - const LineDirectiveInfo* IntermediateRepresentation::GetNearestPreprocessorLineDirective(size_t azslLineNumber) const - { - if (!azslLineNumber) - { - return nullptr; - } - - auto lineBefore = m_lineMap.lower_bound(azslLineNumber); - if (lineBefore != m_lineMap.begin() && (lineBefore != m_lineMap.end() || m_lineMap.size() > 0)) - { - lineBefore--; - return &lineBefore->second; - } - return nullptr; - } - - void IntermediateRepresentation::OverrideAzslcExceptionFileAndLine(size_t azslLineNumber) const - { - const LineDirectiveInfo* lineInfo = GetNearestPreprocessorLineDirective(azslLineNumber); - if (!lineInfo) - { - return; - } - AzslcException::s_currentSourceFileName = lineInfo->m_containingFilename; - AzslcException::s_sourceFileLineNumber = GetLineNumberInOriginalSourceFile(*lineInfo, azslLineNumber); - } - /////////////////////////////////////////////////////////////////////////// - } // end of namespace AZ::ShaderCompiler diff --git a/src/AzslcIntermediateRepresentation.h b/src/AzslcIntermediateRepresentation.h index 504b946..ab7c43b 100644 --- a/src/AzslcIntermediateRepresentation.h +++ b/src/AzslcIntermediateRepresentation.h @@ -10,7 +10,6 @@ #include "AzslcSemanticOrchestrator.h" #include "AzslcTokenToAst.h" #include "AzslcKindInfo.h" -#include "PreprocessorLineDirectiveFinder.h" #include "PadToAttributeMutator.h" namespace AZ::ShaderCompiler @@ -33,7 +32,7 @@ namespace AZ::ShaderCompiler // Holder responsible for owning post-parsed source data (in the form of an object graph). // Note that this is not IL. e.g. not a serialized form of IR with op-codes (like DXIL). - struct IntermediateRepresentation : public PreprocessorLineDirectiveFinder + struct IntermediateRepresentation { IntermediateRepresentation(azslLexer* lexer) : m_scope{[&](QualifiedNameView sym) // Initialize the scope object with a decoupled identifier getter. (SOLID's D.I.P) @@ -42,7 +41,7 @@ namespace AZ::ShaderCompiler } } , m_lexer{ lexer } - , m_sema{&m_symbols, &m_scope, lexer, this} + , m_sema{&m_symbols, &m_scope, lexer} , m_padToAttributeMutator(*this) { // Default output format for all targets @@ -187,7 +186,8 @@ namespace AZ::ShaderCompiler const AZ::ShaderCompiler::Packing::Layout layoutPacking) const; //! execute any logic that relates to intermediate treatment that would need to be done between front end and back end - void MiddleEnd(const MiddleEndConfiguration& middleEndconfig); + void MiddleEnd(const MiddleEndConfiguration& middleEndconfig, + PreprocessorLineDirectiveFinder* lineFinder); bool Validate(); @@ -298,19 +298,8 @@ namespace AZ::ShaderCompiler //! float2 m_value; //! } //! - void ValidateAlignmentIssueWhenScalarOrFloat2PrecededByMatrix(const MiddleEndConfiguration& middleEndconfigration); - - ////////////////////////////////////////////////////////////////////////// - // PreprocessorLineDirective overrides... - const LineDirectiveInfo* GetNearestPreprocessorLineDirective(size_t azslLineNumber) const override; - void OverrideAzslcExceptionFileAndLine(size_t azslLineNumber) const override; - ////////////////////////////////////////////////////////////////////////// - - void ThrowAzslcIrException(uint32_t errorCode, size_t lineNumber, const string& message) - { - OverrideAzslcExceptionFileAndLine(lineNumber); - throw AzslcIrException(errorCode, message); - } + void ValidateAlignmentIssueWhenScalarOrFloat2PrecededByMatrix(const MiddleEndConfiguration& middleEndconfigration, + PreprocessorLineDirectiveFinder* lineFinder); // Returns info for the last variable inside the struct or class named @structUid. // If @structUid is not struct or class, then it returns nullptr. @@ -329,9 +318,7 @@ namespace AZ::ShaderCompiler // the structure that holds root constants (it's a generated thing, and there is only one) IdentifierUID m_rootConstantStructUID; - map m_lineMap; - - IRMetaData m_metaData; + IRMetaData m_metaData; // Helper to deal with the [[pad_to(N)]] attribute. PadToAttributeMutator m_padToAttributeMutator; diff --git a/src/AzslcKindInfo.h b/src/AzslcKindInfo.h index 95db939..9bd0eac 100644 --- a/src/AzslcKindInfo.h +++ b/src/AzslcKindInfo.h @@ -77,6 +77,12 @@ namespace AZ::ShaderCompiler vector m_argList; }; + static bool TypeHasStorageFlag(const TypeQualifiers& typeQualifier, StorageFlag flag) + { + // The mask operation returns an rvalue and it isn't converted to bool + return static_cast(typeQualifier.m_flag & flag); + } + //! store base list, member list... struct ClassInfo { @@ -225,7 +231,7 @@ namespace AZ::ShaderCompiler //! an extended type information gathers: //! + core type info (immutable and limited amount, all stored in the fixed symbol table) //! + array dimensions - //! + matrix majorness storage flag + //! + matrix majorness storage flag / all other qualifiers (unsigned, const, volatile, precise, inline, groupshared...) struct ExtendedTypeInfo { const auto& GetDimensions() const @@ -261,9 +267,18 @@ namespace AZ::ShaderCompiler void SetMatrixMajor(Packing::MatrixMajor mtxMajor) { m_mtxMajor = mtxMajor; + m_qualifiers.m_flag &= StorageFlag::ColumnMajor; + m_qualifiers.m_flag &= StorageFlag::RowMajor; + if (mtxMajor == Packing::MatrixMajor::ColumnMajor) + { + m_qualifiers.m_flag |= StorageFlag::ColumnMajor; + } + else if (mtxMajor == Packing::MatrixMajor::RowMajor) + { + m_qualifiers.m_flag |= StorageFlag::RowMajor; + } } - //! True if the storage type is in row major. False if the storage type is column major (default). const Packing::MatrixMajor GetMatrixMajor() const { return m_mtxMajor; @@ -289,11 +304,21 @@ namespace AZ::ShaderCompiler && (m_genericParameter.IsEmpty() || m_genericParameter.m_typeClass != TypeClass::IsNotType); } + bool CheckHasStorageFlag(StorageFlag flag) const + { + return TypeHasStorageFlag(m_qualifiers, flag); + } + friend bool operator == (const ExtendedTypeInfo& lhs, const ExtendedTypeInfo& rhs) { + static const Modifiers inconsequentialModifiers = Modifiers{StorageFlag::Extern} + | StorageFlag::Inline | StorageFlag::Static | StorageFlag::Volatile | StorageFlag::Uniform; + Modifiers lhsTM = lhs.m_qualifiers.m_flag & ~inconsequentialModifiers; + Modifiers rhsTM = rhs.m_qualifiers.m_flag & ~inconsequentialModifiers; return lhs.m_coreType == rhs.m_coreType && lhs.m_genericParameter == rhs.m_genericParameter - && lhs.m_arrayDims == rhs.m_arrayDims; + && lhs.m_arrayDims == rhs.m_arrayDims + && lhsTM == rhsTM; } friend bool operator != (const ExtendedTypeInfo& lhs, const ExtendedTypeInfo& rhs) { @@ -304,7 +329,8 @@ namespace AZ::ShaderCompiler //! this is not rigorous and does not constitute a mangling. the full feature is better served at emission side by GetExtendedTypeInfo function. string GetDisplayName() const { - return m_coreType.m_typeId.m_name + (m_genericParameter.IsEmpty() ? "" : Decorate("<", m_genericParameter.m_typeId.m_name, ">")); + return m_qualifiers.GetDisplayName() + " " + m_coreType.m_typeId.m_name + + (m_genericParameter.IsEmpty() ? "" : Decorate("<", m_genericParameter.m_typeId.m_name, ">")); } //! only use leaf form of names to compose a displayable reconstituted name @@ -320,9 +346,9 @@ namespace AZ::ShaderCompiler // This is because of a limitation called array collapsing. (which is kind of important for typeof and the seenat feature) // If we store the array dimensions directly in TypeRefInfo, it will not be possible // to support multiple different arrays of `int`s throughout the whole compilation unit. - // Finally m_mtxMajor is not part of the type; we only provide it here as a cache for convenience TypeRefInfo m_coreType; TypeRefInfo m_genericParameter; // in case of Buffer coreType is Buffer, genericParameter is float. note that genericParams can't be arrays since brackets are not part of the "type:" rule + TypeQualifiers m_qualifiers; ArrayDimensions m_arrayDims; ArrayDimensions m_genericDims; Packing::MatrixMajor m_mtxMajor = Packing::MatrixMajor::Default; // Can be changed by #pragmapack_matrix directive, or with the row_major or the column_major qualifiers. @@ -335,12 +361,6 @@ namespace AZ::ShaderCompiler ExtendedTypeInfo m_canonicalType; // ultimate (existing) target of the alias }; - static bool TypeHasStorageFlag(TypeQualifier typeQualifier, StorageFlag flag) - { - // The mask operation returns an rvalue and it isn't converted to bool - return static_cast(typeQualifier & flag); - } - struct VarInfo { inline bool CheckHasStorageFlag(StorageFlag flag) const; @@ -373,8 +393,6 @@ namespace AZ::ShaderCompiler AstUnnamedVarDecl* m_declNode = nullptr; UnqualifiedName m_identifier; - TypeQualifier m_typeQualifier; - vector m_unknownQualifiers; // For qualifiers we didn't add to the enum bool m_srgMember = false; bool m_isPublic = true; ConstNumericVal m_constVal; // (attempted folded) initializer value for simple scalars @@ -382,10 +400,10 @@ namespace AZ::ShaderCompiler ExtendedTypeInfo m_typeInfoExt; }; - // deported method definitions + // VarInfo methods definitions bool VarInfo::CheckHasStorageFlag(StorageFlag flag) const { - return TypeHasStorageFlag(m_typeQualifier, flag); + return m_typeInfoExt.CheckHasStorageFlag(flag); } bool VarInfo::CheckHasAllStorageFlags(std::initializer_list vararg) const @@ -660,16 +678,6 @@ namespace AZ::ShaderCompiler return m_isMethod && HasPreDeclarationAndLaterDefinition(); } - bool CheckHasStorageFlag(StorageFlag flag) const - { - return (m_typeQualifier & flag).AsBool(); - } - - bool HasStorageFlags() const - { - return !m_typeQualifier.IsEmpty(); - } - //! queries whether this function has a default value, registered for at least one of its parameters. //! e.g such as in "f(int i = 2)" bool HasAnyDefaultParameterValue() const @@ -680,12 +688,11 @@ namespace AZ::ShaderCompiler } //! add a parameter - void PushParameter(IdentifierUID varName, const ExtendedTypeInfo& typeInfo, TypeQualifier typeQualifier, AstUnnamedVarDecl* unnamedCtx) + void PushParameter(IdentifierUID varName, const ExtendedTypeInfo& typeInfo, AstUnnamedVarDecl* unnamedCtx) { Parameter param; param.m_varId = varName; param.m_typeInfo = typeInfo; - param.m_typeQualifier = typeQualifier; param.m_semanticCtx = unnamedCtx->SemanticOpt; param.m_arrayRankSpecifiers = unnamedCtx->ArrayRankSpecifiers; param.m_defaultValueExpression = unnamedCtx->variableInitializer(); @@ -774,12 +781,10 @@ namespace AZ::ShaderCompiler bool m_isVirtual = false; //!< is a method from an interface vector< IdentifierUID > m_overrides; //!< list of implementing functions in child classes optional< IdentifierUID > m_base; //!< points to the overridden function in the base interface, if applies. only supports one base - TypeQualifier m_typeQualifier; struct Parameter { IdentifierUID m_varId; ExtendedTypeInfo m_typeInfo; - TypeQualifier m_typeQualifier; azslParser::HlslSemanticContext* m_semanticCtx = nullptr; std::vector m_arrayRankSpecifiers; AstVarInitializer* m_defaultValueExpression = nullptr; @@ -996,7 +1001,7 @@ namespace AZ::ShaderCompiler // usings for data model. of particular relevance for the SymbolTable. using IdToKindMap = unordered_map< IdentifierUID, KindInfo >; - using IdAndKind = IdToKindMap::value_type; // nicely destructurable ! assign it like this: `auto& [uid, kind] = GetIdAndKind..` + using IdAndKind = IdToKindMap::value_type; // nicely destructurable! assign it like this: `auto& [uid, kind] = GetIdAndKind..` struct GetSubKindInfoTypeName_Visitor @@ -1126,7 +1131,7 @@ namespace AZ::ShaderCompiler { const string errorMessage = ConcatString( "redeclaration of ", symbolName, " with a different kind: ", Kind::ToStr(newKind), - " but was ", Kind::ToStr(kindInfo.GetKind()), GetFirstSeenLineMessage(kindInfo)); + " but was ", Kind::ToStr(kindInfo.GetKind()), ", ", GetFirstSeenLineMessage(kindInfo)); throw AzslcOrchestratorException(ORCHESTRATOR_ODR_VIOLATION, lineNumber, none, errorMessage); } diff --git a/src/AzslcListener.cpp b/src/AzslcListener.cpp index 4074ca7..3c21c7e 100644 --- a/src/AzslcListener.cpp +++ b/src/AzslcListener.cpp @@ -31,7 +31,7 @@ namespace AZ::ShaderCompiler else if (auto* typeofExpression = As(ctx->parent)) { QualifiedName startupScope = typeofExpression->Expr ? m_ir->m_sema.TypeofExpr(typeofExpression->Expr) - : m_ir->m_sema.TypeofExpr(typeofExpression->functionType()); + : m_ir->m_sema.TypeofExpr(typeofExpression->type()); if (m_ir->m_sema.VerifyTypeIsScopeComposable(startupScope).first) { m_ir->m_sema.RegisterSeenat(ctx, startupScope); @@ -96,48 +96,6 @@ namespace AZ::ShaderCompiler m_ir->m_scope.ExitScope(ctx->RightBrace()->getSourceInterval().b); } - void SemaCheckListener::enterConstantBufferTemplated(azslParser::ConstantBufferTemplatedContext* ctx) - { - // Diagnose undue usage: any scope/contexts are not OK for constant buffers (which are not view types). - // Originally the grammar was strictly enforcing at the syntax level that CB appears only in SRG scope. - // But for canonicalization with predefined types, now their presence will parse correctly at any place a type rule can appear. - - // the current rule has only one parent: predefinedType, itself has only one parent: type - auto* typeNode = As(ctx->parent->parent); - // but the type rule has many parents, exhaustively: - // streamOutputPredefinedType, structuredBufferPredefinedType (as generics) - // constantBufferTemplated (yes ! because it's generic it has an unrestricted type rule -> risk of recursion. let's forbid it semantically) - // and - // functionType not tolerable to return a constantbuffer, except if parent rule is typealias - // functionParam not tolerable to pass as argument - // typedefStatement tolerable anywhere - // CastExpression let's go the lenient route and accept it whatever it will end up meaning - // variableDeclaration tolerable depending on scope (SRG: ok, other: no) - - bool isFunctionTypeInTypeAlias = Is(typeNode->parent) && Is3ParentRuleOfType(typeNode); - if (DynamicTypeIsAnyOf(typeNode->parent) - && !isFunctionTypeInTypeAlias) - { - throw AzslcException(ADVANCED_SYNTAX_CONSTANT_BUFFER_RESTRICTION, - "Syntax", - ctx->start, - "impossible to use ConstantBuffer in that context"); - } - - bool immediateScopeIsSRG = m_ir->m_sema.GetCurrentScopeIdAndKind().second.GetKind() == Kind::ShaderResourceGroup; - if (Is(typeNode->parent) && !immediateScopeIsSRG) - { // note that it's only OK in immediate scope, not "as one of the parents, however distant". - throw AzslcException(ADVANCED_SYNTAX_CONSTANT_BUFFER_ONLY_IN_SRG, - "Syntax", - ctx->start, - "ConstantBuffer variable declarations may only appear in ShaderResourceGroup"); - } - } - void SemaCheckListener::enterSrgDefinition(azslParser::SrgDefinitionContext* ctx) { m_ir->m_sema.RegisterSRG(ctx); diff --git a/src/AzslcListener.h b/src/AzslcListener.h index 514690c..82f9c06 100644 --- a/src/AzslcListener.h +++ b/src/AzslcListener.h @@ -29,7 +29,6 @@ namespace AZ::ShaderCompiler void enterEnumeratorDeclarator(azslParser::EnumeratorDeclaratorContext* ctx) override; void enterSamplerBodyDeclaration(azslParser::SamplerBodyDeclarationContext* ctx) override; void exitSamplerBodyDeclaration(azslParser::SamplerBodyDeclarationContext* ctx) override; - void enterConstantBufferTemplated(azslParser::ConstantBufferTemplatedContext* ctx) override; void enterSrgDefinition(azslParser::SrgDefinitionContext* ctx) override; void exitSrgDefinition(azslParser::SrgDefinitionContext* ctx) override; void enterSrgSemanticMemberDeclaration(azslParser::SrgSemanticMemberDeclarationContext* ctx) override; diff --git a/src/AzslcMain.cpp b/src/AzslcMain.cpp index dd3a9a3..08c0070 100644 --- a/src/AzslcMain.cpp +++ b/src/AzslcMain.cpp @@ -21,9 +21,11 @@ namespace StdFs = std::filesystem; // Correspond to the supported version of the AZSL language. #define AZSLC_MAJOR "1" // For large features or milestones. Minor version allows for breaking changes. Existing tests can change. -#define AZSLC_MINOR "8" // introduction of class inheritance +#define AZSLC_MINOR "8" // last change: introduction of class inheritance // For small features or bug fixes. They cannot introduce breaking changes. Existing tests shouldn't change. -#define AZSLC_REVISION "4" +#define AZSLC_REVISION "8" // last change: enhanced grammar compliance with HLSL & robust line directive support & refactor of type qualifiler into typeinfoext + + namespace AZ::ShaderCompiler { DiagnosticStream verboseCout; @@ -32,15 +34,14 @@ namespace AZ::ShaderCompiler using MapOfStringViewToSetOfString = map>; - // out argument: classifiedTokens - // filter: is a predicate for condition to check to pass registration - template - void ClassifyAllTokens(const azslLexer* lexer, MapOfStringViewToSetOfString& classifiedTokens, FilterFunction&& filter = nullptr) + template + void VisitTokens(const antlr4::Recognizer* recognizer, + MapOfStringViewToSetOfString& acceptedToken, set& notTypes1, // out + TypeClassFilterPredicate tcFilter = nullptr) { // loop over all keywords - const auto& vocabulary = lexer->getVocabulary(); + const auto& vocabulary = recognizer->getVocabulary(); size_t maxToken = vocabulary.getMaxTokenType(); - set notTypes1; for (size_t ii = 0; ii < maxToken; ++ii) { string token = vocabulary.getLiteralName(ii); @@ -49,9 +50,9 @@ namespace AZ::ShaderCompiler { TypeClass tc = AnalyzeTypeClass(TentativeName{token}); bool accept = true; - if constexpr (!is_same_v>) + if constexpr (!is_same_v>) { - accept = filter(tc); + accept = tcFilter(tc); } if (tc == TypeClass::IsNotType) @@ -61,11 +62,19 @@ namespace AZ::ShaderCompiler if (accept) { - classifiedTokens[TypeClass::ToStr(tc)].emplace(std::move(token)); + acceptedToken[TypeClass::ToStr(tc)].emplace(std::move(token)); } } } + } + // out argument: classifiedTokens + // filter: is a predicate for condition to check to pass registration + template + void ClassifyAllTokens(const azslLexer* lexer, MapOfStringViewToSetOfString& classifiedTokens, FilterFunction filter) + { + set notTypes1; + VisitTokens(lexer, classifiedTokens, notTypes1, filter); // now. because of names such as StructuredBuffer or matrix, need to have a generic appendix to mean something, // they will be classified as IsNotType. So we need to re-attempt analysis by appending something parseable. @@ -130,6 +139,17 @@ namespace AZ::ShaderCompiler } // end for } + bool IsKeyword(const antlr4::Recognizer* r, antlr4::Token* token) + { + MapOfStringViewToSetOfString byTypeClass; + set notTypes; + VisitTokens(r, byTypeClass, notTypes); + bool notType = notTypes.find(token->getText()) != notTypes.end(); + bool notIdentifier = r->getVocabulary().getSymbolicName(token->getType()) != "Identifier"; + bool firstIsalpha(isalpha(token->getText()[0])); + return notType && notIdentifier && firstIsalpha; + } + void DumpClassifiedTokensToYaml(const MapOfStringViewToSetOfString& classifiedTokens) { for (const auto& [category, tokens] : classifiedTokens) @@ -151,9 +171,9 @@ namespace AZ::ShaderCompiler } //! iterates on tokens and build the line number mapping (from preprocessor line directives) - void ConstructLineMap(vector>* allTokens, IntermediateRepresentation* irOut) + void ConstructLineMap(vector>* allTokens, PreprocessorLineDirectiveFinder* lineFinder) { - string lastNonEmptyFileName = AzslcException::s_currentSourceFileName; + string lastNonEmptyFileName = lineFinder->m_physicalSourceFileName; for (auto& token : *allTokens) // auto& because each element is a unique_ptr we can't copy { if (token->getType() == azslLexer::LineDirective) @@ -183,14 +203,13 @@ namespace AZ::ShaderCompiler { lastNonEmptyFileName = directiveInfo.m_containingFilename; } - irOut->m_lineMap[token->getLine()] = directiveInfo; + lineFinder->PushLineDirective(directiveInfo); } } - if (irOut->m_lineMap.find(1) == irOut->m_lineMap.end()) + if (lineFinder->m_lineMap.find(1) == lineFinder->m_lineMap.end()) { - // if we have no line directives, add one that can be found by lower_bound - LineDirectiveInfo catchAllDirective{1, 1, AzslcException::s_currentSourceFileName}; - irOut->m_lineMap[1] = catchAllDirective; + // if we have no line directives on line 1, add one before the file's first line (at 0), that can always be found by Infimum + lineFinder->PushLineDirective({0, 1, lineFinder->m_physicalSourceFileName}); } } } @@ -466,7 +485,10 @@ int main(int argc, const char* argv[]) } const string inputFileName = useStdin ? "" : inputFile; - AzslcException::s_currentSourceFileName = useStdin ? "stdin" : inputFile; + PreprocessorLineDirectiveFinder lineFinder; + lineFinder.m_physicalSourceFileName = useStdin ? "stdin" : inputFile; + // setup the line finder address on the exception system so that errors are canonically mutated to "virtual line space" + AzslcException::s_lineFinder = &lineFinder; bool useOutputFile = !output.empty(); const string outputFileName = output; @@ -480,14 +502,21 @@ int main(int argc, const char* argv[]) { throw std::runtime_error("syntax errors present"); } - ConstructLineMap(&allTokens, &ir); + ConstructLineMap(&allTokens, &lineFinder); lexer.reset(); - auto azslParserEventListener = AzslParserEventListener(ir); + AzslParserEventListener azslParserEventListener; azslParser parser(&tokens); parser.removeErrorListeners(); + azslParserEventListener.m_isKeywordPredicate = IsKeyword; parser.addErrorListener(&azslParserEventListener); tree::ParseTree *tree = parser.compilationUnit(); + if (ast) + { + PrintAst(tree, parser); + syntax = true; // ast print is a syntax only build. + } + if (parser.getNumberOfSyntaxErrors() > 0) { throw std::runtime_error("grammatic errors present"); @@ -504,7 +533,7 @@ int main(int argc, const char* argv[]) ir.m_metaData.m_insource = StdFs::absolute(inSource).lexically_normal().generic_string(); } tree::ParseTreeWalker walker; - Texture2DMSto2DCodeMutator texture2DMSto2DCodeMutator(&ir); + Texture2DMSto2DCodeMutator texture2DMSto2DCodeMutator(&ir, &tokens); SemaCheckListener semanticListener{&ir}; warningCout.m_onErrorCallback = [](string_view message) { throw AzslcException{WX_WARNINGS_AS_ERRORS, "as-error", string{message}}; @@ -566,12 +595,12 @@ int main(int argc, const char* argv[]) } else if (Zpr) { - emitOptions.m_emitRowMajor = true; + emitOptions.m_forceMatrixRowMajor = true; emitOptions.m_forceEmitMajor = true; } else if (Zpc) { - emitOptions.m_emitRowMajor = false; // Default + emitOptions.m_forceMatrixRowMajor = false; // Default emitOptions.m_forceEmitMajor = true; } @@ -597,10 +626,10 @@ int main(int argc, const char* argv[]) MiddleEndConfiguration middleEndConfigration{emitOptions.m_rootConstantsMaxSize, emitOptions.m_packConstantBuffers, emitOptions.m_packDataBuffers, - emitOptions.m_emitRowMajor, + emitOptions.m_forceMatrixRowMajor, emitOptions.m_padRootConstantCB, emitOptions.m_skipAlignmentValidation}; - ir.MiddleEnd(middleEndConfigration); + ir.MiddleEnd(middleEndConfigration, &lineFinder); if (noMS) { texture2DMSto2DCodeMutator.RunMiddleEndMutations(); @@ -626,11 +655,6 @@ int main(int argc, const char* argv[]) DumpSymbols(ir); doEmission = false; } - else if (ast) - { - PrintAst(tree, parser); - doEmission = false; - } else if (!visitName.empty()) { using RE = RelationshipExtent; @@ -697,17 +721,17 @@ int main(int argc, const char* argv[]) if (full) { // Combine the default emission and the ia, om, srg, options, bindingdep commands - CodeEmitter emitter{&ir, &tokens, out}; + CodeEmitter emitter{&ir, &tokens, out, &lineFinder}; if (noMS) { emitter.SetCodeMutator(&texture2DMSto2DCodeMutator); } - out << "// HLSL emission by " << versionString << "\n"; + emitter << "// HLSL emission by " << versionString << "\n"; emitter.Run(emitOptions); prepareOutputAndCall("ia", [&](CodeReflection& r) { r.DumpShaderEntries(); }); prepareOutputAndCall("om", [&](CodeReflection& r) { r.DumpOutputMergerLayout(); }); - prepareOutputAndCall("srg", [&](CodeReflection& r) { r.DumpSRGLayout(emitOptions); }); + prepareOutputAndCall("srg", [&](CodeReflection& r) { r.DumpSRGLayout(emitOptions, &lineFinder); }); prepareOutputAndCall("options", [&](CodeReflection& r) { r.DumpVariantList(emitOptions); }); prepareOutputAndCall("bindingdep", [&](CodeReflection& r) { r.DumpResourceBindingDependencies(emitOptions); }); } @@ -721,7 +745,7 @@ int main(int argc, const char* argv[]) } else if (srg) { // Reflect the Shader Resource Groups layout - reflecter.DumpSRGLayout(emitOptions); + reflecter.DumpSRGLayout(emitOptions, &lineFinder); } else if (options) { // Reflect the list of available variant options for this shader @@ -733,12 +757,12 @@ int main(int argc, const char* argv[]) } else { // Emit the shader source code - CodeEmitter emitter{&ir, &tokens, out}; + CodeEmitter emitter{&ir, &tokens, out, &lineFinder}; if (noMS) { emitter.SetCodeMutator(&texture2DMSto2DCodeMutator); } - out << "// HLSL emission by " << versionString << "\n"; + emitter << "// HLSL emission by " << versionString << "\n"; emitter.Run(emitOptions); } } diff --git a/src/AzslcPredefinedTypes.h b/src/AzslcPredefinedTypes.h index 430a1a3..8b37999 100644 --- a/src/AzslcPredefinedTypes.h +++ b/src/AzslcPredefinedTypes.h @@ -1,10 +1,10 @@ /* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ +* Copyright (c) Contributors to the Open 3D Engine Project. +* For complete copyright and license terms please see the LICENSE at the root of this distribution. +* +* SPDX-License-Identifier: Apache-2.0 OR MIT +* +*/ #pragma once // THIS FILE IS AUTO-GENERATED BY exportKeywords.py @@ -165,25 +165,27 @@ static constexpr std::array OtherPredefined = { static constexpr std::array OtherViewBufferType = { "RaytracingAccelerationStructure"}; -static constexpr std::array Sampler = { +static constexpr std::array Sampler = { "Sampler", "SamplerComparisonState", "SamplerState", -"sampler"}; +"sampler", +"sampler_state"}; -static constexpr std::array Scalar = { +static constexpr std::array Scalar = { "bool", "double", "dword", "float", "half", "int", +"int16_t", "int32_t", "int64_t", "uint", +"uint16_t", "uint32_t", -"uint64_t", -"unsigned int"}; +"uint64_t"}; static constexpr std::array StreamOutput = { "LineStream", @@ -262,8 +264,8 @@ static constexpr auto All = std::make_tuple(Bag<3>{"Buffer", Buffer}, Bag<2>{"MultisampledTexture", MultisampledTexture}, Bag<2>{"OtherPredefined", OtherPredefined}, Bag<1>{"OtherViewBufferType", OtherViewBufferType}, - Bag<4>{"Sampler", Sampler}, - Bag<12>{"Scalar", Scalar}, + Bag<5>{"Sampler", Sampler}, + Bag<13>{"Scalar", Scalar}, Bag<3>{"StreamOutput", StreamOutput}, Bag<5>{"StructuredBuffer", StructuredBuffer}, Bag<19>{"Texture", Texture}, diff --git a/src/AzslcReflection.cpp b/src/AzslcReflection.cpp index 21998cf..c5d7134 100644 --- a/src/AzslcReflection.cpp +++ b/src/AzslcReflection.cpp @@ -21,7 +21,8 @@ namespace AZ::ShaderCompiler Json::Value ToJson(const OStreamable& streamableObj) { std::ostringstream baseStr; - baseStr << streamableObj; + Streamable&& s{MakeOStreamStreamable{baseStr}}; + s << streamableObj; return baseStr.str(); } @@ -497,7 +498,7 @@ namespace AZ::ShaderCompiler IsProductType(varClass) ? "Struct" : TypeClass::ToStr(varClass).data(); memberLayout["typeName"] = varInfo.GetTypeId().m_name; - size = varInfo.m_typeInfoExt.GetTotalSize(layoutPacking, options.m_emitRowMajor); + size = varInfo.m_typeInfoExt.GetTotalSize(layoutPacking, options.m_forceMatrixRowMajor); auto startAt = offset; // Alignment start @@ -583,7 +584,7 @@ namespace AZ::ShaderCompiler else if (varInfo.m_typeInfoExt.IsArray()) { // Get the size of one element from total size - size = varInfo.m_typeInfoExt.GetSingleElementSize(layoutPacking, options.m_emitRowMajor); + size = varInfo.m_typeInfoExt.GetSingleElementSize(layoutPacking, options.m_forceMatrixRowMajor); } else if (varInfo.GetTypeClass() == TypeClass::Enum) { @@ -640,7 +641,7 @@ namespace AZ::ShaderCompiler output["space-merged"] = bindInfo.m_registerBinding.m_pair[BindingPair::Set::Merged].m_logicalSpace; } - void CodeReflection::DumpSRGLayout(const Options& options) const + void CodeReflection::DumpSRGLayout(const Options& options, PreprocessorLineDirectiveFinder* lineFinder) const { uint32_t numOf32bitConst = GetNumberOf32BitConstants(options, m_ir->m_rootConstantStructUID); RootSigDesc rootSig = BuildSignatureDescription(options, numOf32bitConst); @@ -658,16 +659,10 @@ namespace AZ::ShaderCompiler srgLayout["id"] = srgInfo->m_declNode->Name->getText(); // Try to locate the original filename where this SRG is declared - auto lineBefore = m_ir->m_lineMap.lower_bound(srgInfo->m_declNode->getStart()->getLine()); - if (lineBefore != m_ir->m_lineMap.begin() && (lineBefore != m_ir->m_lineMap.end() || m_ir->m_lineMap.size() > 0)) - { - lineBefore--; - const string& containing = lineBefore->second.m_containingFilename; - srgLayout["originalFileName"] = StdFs::absolute(containing).lexically_normal().generic_string(); - srgLayout["originalLineNumber"] = static_cast(lineBefore->second.m_forcedLineNumber); // TODO: fix according to following concept: - /*auto nearestLineDirective = lineBefore->second.m_forcedLineNumber; - srgLayout["originalLineNumber"] = CurrentLine - nearestLineDirective;*/ - } + size_t physical = srgInfo->m_declNode->getStart()->getLine(); + srgLayout["originalFileName"] = StdFs::absolute(lineFinder->GetVirtualFileName(physical)).lexically_normal().generic_string(); + srgLayout["originalLineNumber"] = lineFinder->GetVirtualLineNumber(physical); + auto semantic = m_ir->GetSymbolSubAs(srgInfo->m_semantic->GetName())->Get(); srgLayout["bindingSlot"] = *semantic->m_frequencyId; // Semantic check has asserted that we have it, so we can dereference here. diff --git a/src/AzslcReflection.h b/src/AzslcReflection.h index 3e7dadf..c3c0bc4 100644 --- a/src/AzslcReflection.h +++ b/src/AzslcReflection.h @@ -13,7 +13,10 @@ namespace AZ::ShaderCompiler { struct CodeReflection : Backend { - using Backend::Backend; + CodeReflection(IntermediateRepresentation* ir, TokenStream* tokens, std::ostream& out) + : Backend(ir, tokens), + m_out(out) + {} // bring all non code emitting features here. @@ -31,7 +34,7 @@ namespace AZ::ShaderCompiler //! Reflect resource groups layout //! @param options user configuration parsed from command line - void DumpSRGLayout(const Options& options) const; + void DumpSRGLayout(const Options& options, PreprocessorLineDirectiveFinder* lineFinder) const; //! Reflect shader options //! @param options user configuration parsed from command line @@ -71,5 +74,7 @@ namespace AZ::ShaderCompiler bool IsNonOverloaded(const IdentifierUID& uid) const; bool IsPotentialEntryPoint(const IdentifierUID& uid) const; + + std::ostream& m_out; }; } diff --git a/src/AzslcSemanticOrchestrator.cpp b/src/AzslcSemanticOrchestrator.cpp index cdbd6a3..20efc18 100644 --- a/src/AzslcSemanticOrchestrator.cpp +++ b/src/AzslcSemanticOrchestrator.cpp @@ -1,7 +1,7 @@ /* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * + * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ @@ -12,49 +12,62 @@ namespace AZ::ShaderCompiler { namespace // utility helpers to raise the abstraction level of SemanticOrchestrator's methods. { - Packing::MatrixMajor ExtractMatrixMajorness(VarInfo& varInfo) + Packing::MatrixMajor ExtractMatrixMajorness(TypeQualifiers variableQualificationFlags) { Packing::MatrixMajor major = Packing::MatrixMajor::Default; - if (varInfo.CheckHasStorageFlag(StorageFlag::RowMajor)) + if (TypeHasStorageFlag(variableQualificationFlags, StorageFlag::RowMajor)) { major = Packing::MatrixMajor::RowMajor; } - else if (varInfo.CheckHasStorageFlag(StorageFlag::ColumnMajor)) + else if (TypeHasStorageFlag(variableQualificationFlags, StorageFlag::ColumnMajor)) { major = Packing::MatrixMajor::ColumnMajor; } return major; } - TypeQualifier ExtractTypeQualifiers(azslParser::StorageFlagsContext* flags, vector* unknownQualifiers = nullptr) + TypeQualifiers ExtractTypeQualifiers(azslParser::StorageFlagsContext* flags) { - TypeQualifier qualifiers; + TypeQualifiers qualifiers; for (auto* flagCtx : flags->storageFlag()) { - const auto& newFlag = AsFlag(flagCtx); - qualifiers |= newFlag; - if (newFlag == StorageFlag::Unknown && unknownQualifiers) + StorageFlag newFlag = AsFlag(flagCtx); + qualifiers.m_flag |= newFlag; + if (newFlag == StorageFlag::Other) { - unknownQualifiers->push_back(flagCtx->getText()); + qualifiers.m_others.push_back(flagCtx->getText()); } } return qualifiers; } - TypeQualifier ExtractTypeQualifiers(AstUnnamedVarDecl* ctx, vector* unknownQualifiers = nullptr) + TypeQualifiers ExtractTypeQualifiers(AstType* ctx) + { + return ctx->storageFlags() ? ExtractTypeQualifiers(ctx->storageFlags()) : TypeQualifiers{}; + } + + TypeQualifiers ExtractTypeQualifiers(AstUnnamedVarDecl* ctx) + { + azslParser::StorageFlagsContext* flags = ExtractStorageFlagsFromUnnamedVariableDeclarator(ctx); + return flags ? ExtractTypeQualifiers(flags) : TypeQualifiers{}; + } + + void CheckFunctionReturnTypeModifierNotOptionNorRootconstant(const TypeQualifiers& qualifier, size_t line) { - azslParser::StorageFlagsContext* flags = ExtractStorageFlagsFromVariableDeclarator(ctx); - return flags ? ExtractTypeQualifiers(flags, unknownQualifiers) : TypeQualifier{}; + auto ngFlags = Modifiers{StorageFlag::Option} | StorageFlag::Rootconstant; + if (qualifier.m_flag & ngFlags) + { + throw AzslcOrchestratorException{ORCHESTRATOR_DISALLOWED_FUNCTION_MODIFIER, line, + none, " Functions can't have option or rootconstant qualified return types."}; + } } } - SemanticOrchestrator::SemanticOrchestrator(SymbolAggregator* sema, ScopeTracker* scope, azslLexer* lexer, - PreprocessorLineDirectiveFinder* preprocessorLineDirectiveFinder /*= nullptr*/) + SemanticOrchestrator::SemanticOrchestrator(SymbolAggregator* sema, ScopeTracker* scope, azslLexer* lexer) : m_symbols{ sema }, m_scope{ scope }, m_lexer{ lexer }, - m_anonymousCounter{ 0 }, - m_preprocessorLineDirectiveFinder { preprocessorLineDirectiveFinder } + m_anonymousCounter{ 0 } { assert(sema != nullptr && scope != nullptr); } @@ -96,22 +109,22 @@ namespace AZ::ShaderCompiler IdAndKind* scopeIdKind = LookupSymbol(extracted.m_core.m_name); if (!scopeIdKind) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_SCOPE_NOT_FOUND, + throw AzslcOrchestratorException{ORCHESTRATOR_SCOPE_NOT_FOUND, ctx->start, ConcatString("scope ", extracted.m_core.m_name, - " for method ", uqName, " not found")); + " for method ", uqName, " not found")}; } auto [scopeUid, scopeKind] = *scopeIdKind; if (!scopeKind.IsKindOneOf(Kind::Class, Kind::ShaderResourceGroup)) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_DEPORTED_METHOD_DEFINITION, - ctx->start, "Only class and SRG may have deported method definitions"); + throw AzslcOrchestratorException{ORCHESTRATOR_DEPORTED_METHOD_DEFINITION, + ctx->start, "Only class and SRG may have deported method definitions"}; } IdentifierUID holdingScope = GetCurrentScopeIdAndKind().first; if (! (holdingScope.m_name == "/" || holdingScope == scopeUid)) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_DEFINITION_FOREIGN_SCOPE, + throw AzslcOrchestratorException{ORCHESTRATOR_DEFINITION_FOREIGN_SCOPE, ctx->start, ConcatString("definition of (", uqName, - ") method of ", scopeUid.m_name, " in foreign scope ", holdingScope.m_name, " is forbidden")); + ") method of ", scopeUid.m_name, " in foreign scope ", holdingScope.m_name, " is forbidden")}; } // between function name and the entrance into the function scope, the class scope is briefly activated. // this way, parameters may be specified as if in the scope of their holding function. e.g `ObjectOfCurrentScope MyClass::MyMethod(ObjectOfMyClass)` @@ -128,19 +141,19 @@ namespace AZ::ShaderCompiler // for now, it will be forbidden to inject methods in classes from outside. if (!optionalIdentifier) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_NO_DECLERATION, ctx->start, - ConcatString((scopeIsClass ? "class " : "SRG "), scopeUid.m_name, " doesn't have a declaration for ", decoratedUqName)); + throw AzslcOrchestratorException{ORCHESTRATOR_NO_DECLERATION, ctx->start, + ConcatString((scopeIsClass ? "class " : "SRG "), scopeUid.m_name, " doesn't have a declaration for ", decoratedUqName)}; } // verify also the kind of the member auto* originalDeclarationAsFunc = m_symbols->GetAsSub(*optionalIdentifier); if (!originalDeclarationAsFunc) { Kind realKindOfOriginallyDeclaredMember = m_symbols->GetIdAndKindInfo(optionalIdentifier->GetName())->second.GetKind(); - ThrowAzslcOrchestratorException(ORCHESTRATOR_UNEXPECTED_KIND, + throw AzslcOrchestratorException{ORCHESTRATOR_UNEXPECTED_KIND, ctx->start, ConcatString((scopeIsClass ? "class " : "SRG "), scopeUid.m_name, - " holds a member ", optionalIdentifier->m_name, - " but it is of kind ", string{ Kind::ToStr(realKindOfOriginallyDeclaredMember) }, - " instead of expected ", string{ Kind::ToStr(Kind::Function) })); + " holds a member ", optionalIdentifier->m_name, + " but it is of kind ", string{ Kind::ToStr(realKindOfOriginallyDeclaredMember) }, + " instead of expected ", string{ Kind::ToStr(Kind::Function) })}; } // now we're good. // merge the type and the method name and call the classic register. RegisterFunction is going to re-run the decoration so just pass the naked name. @@ -199,13 +212,13 @@ namespace AZ::ShaderCompiler { if (isScopeCompositeType) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_OVERLY_QUALIFIED, ctx->Name, - ConcatString(ctx->getText(), " is overly qualified. In-class declarations spawn new identifiers, and don't have to refer to existing symbols.")); + throw AzslcOrchestratorException{ORCHESTRATOR_OVERLY_QUALIFIED, ctx->Name, + ConcatString(ctx->getText(), " is overly qualified. In-class declarations spawn new identifiers, and don't have to refer to existing symbols.")}; } else { - ThrowAzslcOrchestratorException(ORCHESTRATOR_DEPORTED_METHOD, ctx->Name, - ConcatString(ctx->getText(), "is a deported method declaration, which is considered ill-formed. You can make it a definition (with a body), or delete that statement.")); + throw AzslcOrchestratorException{ORCHESTRATOR_DEPORTED_METHOD, ctx->Name, + ConcatString(ctx->getText(), "is a deported method declaration, which is considered ill-formed. You can make it a definition (with a body), or delete that statement.")}; } } IdAndKind* symbol = m_symbols->GetIdAndKindInfo(decoratedName); @@ -235,9 +248,9 @@ namespace AZ::ShaderCompiler if (alreadyDefined) // verify that it's not a second definition { - ThrowAzslcOrchestratorException(ORCHESTRATOR_FUNCTION_ALREADY_DEFINED, ctx->Name, + throw AzslcOrchestratorException{ORCHESTRATOR_FUNCTION_ALREADY_DEFINED, ctx->Name, ConcatString("One Definition Rule: function ", symbol->first.m_name, - " is already defined ", GetFirstSeenLineMessage(symbol->second))); + " is already defined ", GetFirstSeenLineMessage(symbol->second))}; } // this function was already declared before. (like a forward) @@ -273,10 +286,6 @@ namespace AZ::ShaderCompiler // decompose the Id and Kind of this function auto& [newUID, newKind] = *symbol; - // Add storage flags - funcInfo->m_typeQualifier |= ExtractTypeQualifiers(ctx->storageFlags()); - CheckQualifersAreOnlyInlineOrStatic(funcInfo->m_typeQualifier, line); // throws a diagnostic if needed - // keep track of original AST node if (statementGenre == AsFunc::Definition) { @@ -289,19 +298,22 @@ namespace AZ::ShaderCompiler // OR fusion between decl and def sites funcInfo->m_mustOverride = funcInfo->m_mustOverride || ctx->Override() != nullptr; // return types must match (between redeclaration of this concrete function) - ExtendedTypeInfo returnType = CreateExtendedTypeInfo(ctx->functionType(), {}, Packing::MatrixMajor::Default); + // at the exception of inconsequential type modifiers (extern, inline, static, volatile, uniform) that we must merge to preserve in case of difference + ExtendedTypeInfo returnType = CreateExtendedTypeInfo(ctx->type(), {}); if (alreadyDeclared && funcInfo->m_returnType != returnType) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_FUNCTION_INCONSISTENT_RETURN_TYPE, ctx->functionType()->start, + throw AzslcOrchestratorException{ORCHESTRATOR_FUNCTION_INCONSISTENT_RETURN_TYPE, ctx->type()->start, ConcatString("function definition ", decoratedName, ", ", GetFirstSeenLineMessage(symbol->second), ", had a different return type: ", - funcInfo->m_returnType.GetDisplayName(), ", versus now seen: ", returnType.GetDisplayName())); + funcInfo->m_returnType.GetDisplayName(), ", versus now seen: ", returnType.GetDisplayName())}; } + CheckFunctionReturnTypeModifierNotOptionNorRootconstant(returnType.m_qualifiers, line); // throws a diagnostic if needed + returnType.m_qualifiers.OrMerge(funcInfo->m_returnType.m_qualifiers); funcInfo->m_returnType = returnType; assert(!funcInfo->m_returnType.IsEmpty()); if (!funcInfo->m_returnType.IsClassFound()) { - PrintWarning(Warn::W2, ctx->functionType()->start, "return type ", ctx->functionType()->getText(), " not understood.", + PrintWarning(Warn::W2, ctx->type()->start, "return type ", ctx->type()->getText(), " not understood.", " (for function ", decoratedName, ")"); } @@ -383,12 +395,11 @@ namespace AZ::ShaderCompiler varInfo.m_constVal = FoldEvalStaticConstExprNumericValue(ctx->Value); } varInfo.m_declNode = nullptr; - varInfo.m_typeQualifier |= StorageFlag::Static; - varInfo.m_typeQualifier |= StorageFlag::Const; - varInfo.m_typeQualifier |= StorageFlag::Enumerator; + Modifiers modifiers = Modifiers{StorageFlag::Static} | + StorageFlag::Const | StorageFlag::Enumerator; - varInfo.m_typeInfoExt = ExtendedTypeInfo{CreateTypeRefInfo(UnqualifiedNameView{enumQn}, OnNotFoundOrWrongKind::Diagnose), - {}, {}, {}, Packing::MatrixMajor::Default }; + varInfo.m_typeInfoExt = ExtendedTypeInfo{CreateTypeRefInfo(UnqualifiedNameView{enumQn}, OnNotFoundOrWrongKind::Diagnose), {}, + {modifiers}, {}, {}}; enumInfo.PushMember(uid, Kind::Variable); } @@ -408,7 +419,7 @@ namespace AZ::ShaderCompiler auto& varInfo = var.GetSubAfterInitAs(); varInfo.m_constVal = FoldEvalStaticConstExprNumericValue(intLit); varInfo.m_declNode = nullptr; - varInfo.m_typeInfoExt = ExtendedTypeInfo{CreateTypeRefInfo(UnqualifiedNameView{"int"}, OnNotFoundOrWrongKind::Diagnose), + varInfo.m_typeInfoExt = ExtendedTypeInfo{CreateTypeRefInfo(UnqualifiedNameView{"int"}, OnNotFoundOrWrongKind::Diagnose), {}, {}, {}, {}, Packing::MatrixMajor::Default }; srgSemanticInfo.PushMember(uid, Kind::Variable); } @@ -424,26 +435,25 @@ namespace AZ::ShaderCompiler auto& varInfo = var.GetSubAfterInitAs(); varInfo.m_constVal = FoldEvalStaticConstExprNumericValue(intLit); varInfo.m_declNode = nullptr; - varInfo.m_typeInfoExt = ExtendedTypeInfo{CreateTypeRefInfo(UnqualifiedNameView{"int"}, OnNotFoundOrWrongKind::Diagnose), + varInfo.m_typeInfoExt = ExtendedTypeInfo{CreateTypeRefInfo(UnqualifiedNameView{"int"}, OnNotFoundOrWrongKind::Diagnose), {}, {}, {}, {}, Packing::MatrixMajor::Default }; srgSemanticInfo.PushMember(uid, Kind::Variable); } } } - IdAndKind& SemanticOrchestrator::RegisterTypeAlias(string_view newIdentifier, AstFuncType* existingTypeCtx, azslParser::TypeAliasingDefinitionStatementContext* ctx) + IdAndKind& SemanticOrchestrator::RegisterTypeAlias(string_view newIdentifier, AstType* existingTypeCtx, azslParser::TypeAliasingDefinitionStatementContext* ctx) { UnqualifiedNameView newId { newIdentifier }; auto& idKind = AddIdentifier(newId, Kind::TypeAlias, ctx->start->getLine()); auto& [uid, kinfo] = idKind; TypeAliasInfo& aliasInfo = kinfo.GetSubAfterInitAs(); aliasInfo.m_declNode = ctx; - aliasInfo.m_canonicalType = CreateExtendedTypeInfo(existingTypeCtx, {}, Packing::MatrixMajor::Default); + aliasInfo.m_canonicalType = CreateExtendedTypeInfo(existingTypeCtx, {}); if (!aliasInfo.m_canonicalType.IsClassFound()) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_INVALID_TYPEALIAS_TARGET, - existingTypeCtx->start, - ConcatString("target type ", existingTypeCtx->getText() + " not understood in typealias expression")); + throw AzslcOrchestratorException{ORCHESTRATOR_INVALID_TYPEALIAS_TARGET, existingTypeCtx->start, + ConcatString("target type ", existingTypeCtx->getText() + " not understood in typealias expression")}; } assert(aliasInfo.m_canonicalType.m_coreType.m_typeClass != TypeClass::Alias); // further registration in containing scopes @@ -486,28 +496,34 @@ namespace AZ::ShaderCompiler IdAndKind* SemanticOrchestrator::RegisterVar(Token* nameIdentifier, AstUnnamedVarDecl* ctx) { azslParser::FunctionParamContext* paramCtx = nullptr; - auto typeCtx = ExtractTypeFromVariableDeclarator(ctx, ¶mCtx); - auto&& idText = nameIdentifier->getText(); - size_t line = nameIdentifier->getLine(); - const string verboseMessage = ConcatString(line, ": var decl: ", idText, "\n"); - verboseCout << verboseMessage; - auto uqNameView = UnqualifiedNameView{idText}; - auto& varSymbol = AddIdentifier(uqNameView, Kind::Variable, line); - auto& [uid, info] = varSymbol; - // now fillup what we can about that variable in the IR: - VarInfo& varInfo = info.GetSubRefAs(); - // discover the storage flags: - varInfo.m_typeQualifier = ExtractTypeQualifiers(ctx, &varInfo.m_unknownQualifiers); - varInfo.m_declNode = ctx; - varInfo.m_identifier = uqNameView; - // discover array dimensions + auto typeCtx = ExtractTypeFromUnnamedVariableDeclarator(ctx, ¶mCtx); + auto&& idText = nameIdentifier->getText(); + size_t line = nameIdentifier->getLine(); + verboseCout << ConcatString(line, ": var decl: ", idText, "\n"); + auto uqNameView = UnqualifiedNameView{idText}; + // Register the variable in the symbol table early: + IdAndKind& symbolRef = AddIdentifier(uqNameView, Kind::Variable, line); + auto& [uid, kindInfo] = symbolRef; + VarInfo& varInfo = kindInfo.GetSubRefAs(); + // Discover array dimensions: ArrayDimensions arrayDims; TryFoldArrayDimensions(ctx, arrayDims); - // discover matrix majorness - Packing::MatrixMajor major = ExtractMatrixMajorness(varInfo); - // finally make the structure to hold all type information from the type context (will lookup/resolve type/typeof and compose the data) - varInfo.m_typeInfoExt = CreateExtendedTypeInfo(typeCtx, arrayDims, major); + // Finally make the structure to hold all type information from the type context: + // this will perform a lookup/resolve type/typeof, extract the qualifiers and compose the data. + // + // note: this syntax: "A A;" is allowed in C++/HLSL but not in AZSL. + // Because originally in C you can disambiguate lookup using a repetition of the type tag: "struct A A;" + // To make it work (I argue that it's undesirable though), it would require: + // - an evolution of the grammar to tolerate tags + // - an inversion between CreateExtendedTypeInfo call AddIdentifier call + // - an evolution in the mangling to be able to store 2 symbols of the same name in the same scope + // E.g "/!A" for type ::A (bang mark would mirror built-ins "?float") + varInfo.m_typeInfoExt = CreateExtendedTypeInfo(typeCtx, arrayDims); assert(!varInfo.m_typeInfoExt.IsEmpty()); + // now fillup what we can, and already know, about that variable in the IR: + varInfo.m_declNode = ctx; + varInfo.m_identifier = uqNameView; + if (!varInfo.m_typeInfoExt.IsClassFound()) { PrintWarning(Warn::W2, typeCtx->start, "variable type ", typeCtx->getText(), " not understood.", @@ -533,8 +549,8 @@ namespace AZ::ShaderCompiler // Some semantic checks if (varInfo.CheckHasStorageFlag(StorageFlag::Inline)) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_INVALID_INLINED_QUALIFIER, ctx->start, - "inline qualification on variables is ill-formed"); + throw AzslcOrchestratorException{ORCHESTRATOR_INVALID_INLINED_QUALIFIER, ctx->start, + "inline qualification on variables is ill-formed"}; } bool global = curScopeId.GetName() == "/"; bool isOption = varInfo.CheckHasStorageFlag(StorageFlag::Option); @@ -545,23 +561,23 @@ namespace AZ::ShaderCompiler { if (arrayDims.IsArray()) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_INVALID_NONGLOBAL_OPTION_OR_ROOTCONSTANT, ctx->start, - "arrays can not be declared as rootconstants."); + throw AzslcOrchestratorException{ORCHESTRATOR_INVALID_NONGLOBAL_OPTION_OR_ROOTCONSTANT, ctx->start, + "arrays can not be declared as rootconstants."}; } if (!global) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_INVALID_NONGLOBAL_OPTION_OR_ROOTCONSTANT, ctx->start, - "rootconstant or option qualifier is only accepted at top-level scope"); + throw AzslcOrchestratorException{ORCHESTRATOR_INVALID_NONGLOBAL_OPTION_OR_ROOTCONSTANT, ctx->start, + "rootconstant or option qualifier is only accepted at top-level scope"}; } if (hasExplicitLocalFlag) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_INVALID_QUALIFIER_MIX, ctx->start, - "static, groupshared qualifiers cannot be used with the rootconstant or option qualifier"); + throw AzslcOrchestratorException{ORCHESTRATOR_INVALID_QUALIFIER_MIX, ctx->start, + "static, groupshared qualifiers cannot be used with the rootconstant or option qualifier"}; } if (varInfo.CheckHasStorageFlag(StorageFlag::Const)) { PrintWarning(Warn::W2, ctx->start, "const ignored in conjunction with rootconstant or option (because already immutable)."); - varInfo.m_typeQualifier &= StorageFlag::EnumType(~StorageFlag::Const); + varInfo.m_typeInfoExt.m_qualifiers.m_flag &= StorageFlag::EnumType(~StorageFlag::Const); } } @@ -571,11 +587,11 @@ namespace AZ::ShaderCompiler { const string message = FormatString("Unknown type '%s' for shader option '%.*s'", varInfo.m_typeInfoExt.GetDisplayName().c_str(), static_cast(uqNameView.size()), uqNameView.data()); - ThrowAzslcOrchestratorException(ORCHESTRATOR_UNKNOWN_OPTION_TYPE, ctx->start, message); + throw AzslcOrchestratorException{ORCHESTRATOR_UNKNOWN_OPTION_TYPE, ctx->start, message}; } // we'll set that here, an option is better flagged as static const for simplicity during emission - varInfo.m_typeQualifier |= StorageFlag::Static; - varInfo.m_typeQualifier |= StorageFlag::Const; + varInfo.m_typeInfoExt.m_qualifiers.m_flag |= StorageFlag::Static; + varInfo.m_typeInfoExt.m_qualifiers.m_flag |= StorageFlag::Const; // we don't do the same for rootconstant because they exist through a ConstantBuffer } @@ -606,7 +622,7 @@ namespace AZ::ShaderCompiler { // We need to register each newly registered parameter variable ID, in the list of the function subinfo too: auto& funcSub = GetCurrentScopeSubInfoAs(); - funcSub.PushParameter(uid, varInfo.m_typeInfoExt, varInfo.m_typeQualifier, varInfo.m_declNode); + funcSub.PushParameter(uid, varInfo.m_typeInfoExt, varInfo.m_declNode); } bool isExtern = !varInfo.StorageFlagIsLocalLinkage(global || enclosedBySRG); @@ -615,13 +631,13 @@ namespace AZ::ShaderCompiler { if (global && !varInfo.CheckHasStorageFlag(StorageFlag::Rootconstant)) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_ILLEGAL_GLOBAL_VARIABLE, nameIdentifier, - ConcatString(Decorate("'", idText), " extern global variables are ill-formed in AZSL. You might want an internal variable (static or groupshared), a rootconstant, an option, or to put your resource in a ShaderResourceGroup.") ); + throw AzslcOrchestratorException{ORCHESTRATOR_ILLEGAL_GLOBAL_VARIABLE, nameIdentifier, + ConcatString(Decorate("'", idText), " extern global variables are ill-formed in AZSL. You might want an internal variable (static or groupshared), a rootconstant, an option, or to put your resource in a ShaderResourceGroup.") }; } if (HasStandardInitializer(ctx)) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_EXTERNAL_VARIABLE_WITH_INITIALIZER, nameIdentifier, - ConcatString(Decorate("'", idText), " extern variables can't be initialized from the shader side, since their values are set by bindings.") ); + throw AzslcOrchestratorException{ORCHESTRATOR_EXTERNAL_VARIABLE_WITH_INITIALIZER, nameIdentifier, + ConcatString(Decorate("'", idText), " extern variables can't be initialized from the shader side, since their values are set by bindings.") }; } } @@ -634,16 +650,16 @@ namespace AZ::ShaderCompiler if (HasStandardInitializer(ctx) && !isStaticConst) { - ThrowAzslcOrchestratorException( ORCHESTRATOR_MEMBER_VARIABLE_WITH_INITIALIZER, nameIdentifier, - ConcatString(idText, " default-member-initializers are not supported.") ); + throw AzslcOrchestratorException{ ORCHESTRATOR_MEMBER_VARIABLE_WITH_INITIALIZER, nameIdentifier, + ConcatString(idText, " default-member-initializers are not supported.") }; } } if (curScopeKind.GetKind() == Kind::Interface) { // this is an impossible case because the parser doesn't accept these constructs. // but let's say one day we have an API that allows constructing AST programmatically. - ThrowAzslcOrchestratorException(ORCHESTRATOR_ILLEGAL_MEMBER_VARIABLE_IN_INTERFACE, - nameIdentifier, "member variables in interfaces are forbidden."); + throw AzslcOrchestratorException{ORCHESTRATOR_ILLEGAL_MEMBER_VARIABLE_IN_INTERFACE, + nameIdentifier, "member variables in interfaces are forbidden."}; } if (enclosedBySRG) { @@ -653,18 +669,15 @@ namespace AZ::ShaderCompiler // note to maintainers: do NOT try to avoid bloat in the verbose stream, by protecting this in `if (ctx->variableInitializer())` // it will result in the "static no-init-assignment zero initialization" case being instead of 0. varInfo.m_constVal = FoldEvalStaticConstExprNumericValue(varInfo); - return &varSymbol; + return &symbolRef; } void SemanticOrchestrator::RegisterNamelessFunctionParameter(azslParser::FunctionParamContext* ctx) { - TypeQualifier typeQualifier = ExtractTypeQualifiers(ctx->storageFlags()); - CheckQualifersAreOnlyInlineOrStatic(typeQualifier, ctx->start->getLine()); // throws a diagnostic if needed - ArrayDimensions arrayDims; TryFoldArrayDimensions(ctx->unnamedVariableDeclarator(), arrayDims); - auto paramType = CreateExtendedTypeInfo(ctx->type(), arrayDims, Packing::MatrixMajor::Default); - GetCurrentScopeSubInfoAs().PushParameter({}, paramType, typeQualifier, ctx->unnamedVariableDeclarator()); + auto paramType = CreateExtendedTypeInfo(ctx->type(), arrayDims); + GetCurrentScopeSubInfoAs().PushParameter({}, paramType, ctx->unnamedVariableDeclarator()); } // Helper to avoid code redundancy for a message that is used in three different places. @@ -680,8 +693,8 @@ namespace AZ::ShaderCompiler const bool isUnboundedArray = arrayDims.IsUnbounded(); if (!isUnboundedArray && !arrayDims.AreAllDimsFullyConstantFolded()) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_ILLEGAL_FOLDABLE_ARRAY_DIMENSIONS, ctx->start - , GetNonEasyToFoldMessage(arrayDims)); + throw AzslcOrchestratorException{ORCHESTRATOR_ILLEGAL_FOLDABLE_ARRAY_DIMENSIONS, ctx->start, + GetNonEasyToFoldMessage(arrayDims)}; } auto& [srgUid, srgKind] = GetCurrentScopeIdAndKind(); @@ -693,7 +706,7 @@ namespace AZ::ShaderCompiler string errorMessage; if (!m_unboundedArraysValidator.CheckFieldCanBeAddedToSrg(isUnboundedArray, srgUid, srgInfo, varUid, varInfo, typeClass, &errorMessage)) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_UNBOUNDED_RESOURCE_ISSUE, ctx->start, errorMessage); + throw AzslcOrchestratorException{ORCHESTRATOR_UNBOUNDED_RESOURCE_ISSUE, ctx->start, errorMessage}; } if (typeClass == TypeClass::ConstantBuffer) @@ -712,16 +725,16 @@ namespace AZ::ShaderCompiler { if (isUnboundedArray) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_ILLEGAL_FOLDABLE_ARRAY_DIMENSIONS, ctx->start - , GetNonEasyToFoldMessage(arrayDims)); + throw AzslcOrchestratorException{ORCHESTRATOR_ILLEGAL_FOLDABLE_ARRAY_DIMENSIONS, ctx->start, + GetNonEasyToFoldMessage(arrayDims)}; } if (!varInfo.GetTypeRefInfo().IsPackable()) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_NON_PACKABLE_TYPE_IN_SRG_CONSTANT, ctx->start, - ConcatString(varInfo.GetTypeId().m_name, - " is of kind ", - TypeClass::ToStr(varInfo.GetTypeClass()), - " which is a non packable kind of type.")); + throw AzslcOrchestratorException{ORCHESTRATOR_NON_PACKABLE_TYPE_IN_SRG_CONSTANT, ctx->start, + ConcatString(varInfo.GetTypeId().m_name, + " is of kind ", + TypeClass::ToStr(varInfo.GetTypeClass()), + " which is a non packable kind of type.")}; } auto& classInfo = srgInfo.m_implicitStruct; classInfo.PushMember(varUid, Kind::Variable); @@ -730,8 +743,8 @@ namespace AZ::ShaderCompiler { if (isUnboundedArray) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_ILLEGAL_FOLDABLE_ARRAY_DIMENSIONS, ctx->start - , GetNonEasyToFoldMessage(arrayDims)); + throw AzslcOrchestratorException{ORCHESTRATOR_ILLEGAL_FOLDABLE_ARRAY_DIMENSIONS, ctx->start, + GetNonEasyToFoldMessage(arrayDims)}; } assert(varInfo.StorageFlagIsLocalLinkage(true)); srgInfo.m_nonexternVariables.push_back(varUid); @@ -885,21 +898,21 @@ namespace AZ::ShaderCompiler SRGInfo& srgInfo = srgSym->second.GetSubRefAs(); if (!srgInfo.IsPartial()) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_TRYING_TO_EXTEND_NOT_PARTIAL_SRG, + throw AzslcOrchestratorException{ORCHESTRATOR_TRYING_TO_EXTEND_NOT_PARTIAL_SRG, ctx->Partial()->getSymbol(), ConcatString("Cannot extend ShaderResourceGroup ", uqNameView, " ", GetFirstSeenLineMessage(srgSym->second), - " because its original declaration isn't 'partial'")); + " because its original declaration isn't 'partial'")}; } return *srgSym; // valid: both original and current SRG declaration statements carry partial. } - ThrowAzslcOrchestratorException(ORCHESTRATOR_ODR_VIOLATION, + throw AzslcOrchestratorException{ORCHESTRATOR_ODR_VIOLATION, ctx->Name, ConcatString("ShaderResourceGroup ", uqNameView, " already exists, ", GetFirstSeenLineMessage(srgSym->second), - ". Consider using the 'partial' keyword (on both declaration sites) to extend a ShaderResourceGroup.")); + ". Consider using the 'partial' keyword (on both declaration sites) to extend a ShaderResourceGroup.")}; } if (!ctx->Partial() && !ctx->Semantic) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_INVALID_SEMANTIC_DECLARATION, - ctx->Name, "A semantic is mandatory on the declaration of a non-partial ShaderResourceGroup."); + throw AzslcOrchestratorException{ORCHESTRATOR_INVALID_SEMANTIC_DECLARATION, + ctx->Name, "A semantic is mandatory on the declaration of a non-partial ShaderResourceGroup."}; } auto& symbol = AddIdentifier(uqNameView, Kind::ShaderResourceGroup, line); // now fillup what we can about the kindinfo: @@ -925,8 +938,8 @@ namespace AZ::ShaderCompiler auto baseSymbol = LookupSymbol(baseName); if (!baseSymbol) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_UNSPECIFIED_BASE_SYMBOL, - ctx->start, ConcatString("Base symbol "s, baseName, " not found")); + throw AzslcOrchestratorException{ORCHESTRATOR_UNSPECIFIED_BASE_SYMBOL, + ctx->start, ConcatString("Base symbol "s, baseName, " not found")}; } // register base in the class info IR targetClassInfo->PushBase(baseSymbol->first); @@ -992,9 +1005,9 @@ namespace AZ::ShaderCompiler } else { - ThrowAzslcOrchestratorException(ORCHESTRATOR_OVERLOAD_RESOLUTION_HARD_FAILURE, argumentListCtx ? argumentListCtx->start : nullptr, + throw AzslcOrchestratorException{ORCHESTRATOR_OVERLOAD_RESOLUTION_HARD_FAILURE, argumentListCtx ? argumentListCtx->start : nullptr, ConcatString(message.str(), " This is an error because functions belonging to this overload-set have heterogeneous return types.\n", - "Consider using type-casts to help type resolution.")); + "Consider using type-casts to help type resolution.")}; } } else @@ -1172,11 +1185,6 @@ namespace AZ::ShaderCompiler return LookupType(ctx).GetName(); } - QualifiedName SemanticOrchestrator::TypeofExpr(AstFuncType* ctx) const - { - return LookupType(ctx).GetName(); - } - QualifiedName SemanticOrchestrator::TypeofExpr(AstIdExpr* ctx) const { // idExpression will represent registered symbol. if not, it's a fail. @@ -1268,12 +1276,12 @@ namespace AZ::ShaderCompiler QualifiedName SemanticOrchestrator::TypeofExpr(azslParser::TypeofExpressionContext* ctx) const { // typeof(typeof(..)) is typeof(..) | and typeof(A)::id is type of the symbol composed by `lookup-of-A`/id auto leftType = ctx->Expr ? TypeofExpr(ctx->Expr) - : TypeofExpr(ctx->functionType()); + : TypeofExpr(ctx->type()); if (ctx->SubQualification) { auto [valid, lhsType] = VerifyTypeIsScopeComposable(leftType, ctx->Expr ? ctx->Expr->getText() - : ctx->functionType()->getText(), + : ctx->type()->getText(), ctx->start->getLine()); return valid ? ComposeMemberNameWithScopeAndGetType(lhsType, ctx->SubQualification) : QualifiedName{""}; @@ -1372,16 +1380,16 @@ namespace AZ::ShaderCompiler auto& [baseUid, wannabeInfo] = *infoBase; if (!wannabeInfo.IsKindOneOf(Kind::Interface, Kind::Class)) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_INVALID_INTERFACE, declNode->Class()->getSymbol(), + throw AzslcOrchestratorException{ORCHESTRATOR_INVALID_INTERFACE, declNode->Class()->getSymbol(), ConcatString("base ", baseUid.m_name, " is not an interface or class (it is a "s, - Kind::ToStr(wannabeInfo.GetKind()).data(), ")")); + Kind::ToStr(wannabeInfo.GetKind()).data(), ")")}; } concreteBase += wannabeInfo.GetKind() == Kind::Class; if (concreteBase > 1) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_INVALID_INTERFACE, declNode->Class()->getSymbol(), + throw AzslcOrchestratorException{ORCHESTRATOR_INVALID_INTERFACE, declNode->Class()->getSymbol(), ConcatString("class ", declNode->Name->getText(), - " has multiple concrete bases. Only 1 concrete base allowed"s)); + " has multiple concrete bases. Only 1 concrete base allowed"s)}; } // verify interfaces full implementation if (wannabeInfo.GetKind() == Kind::Interface) @@ -1391,8 +1399,8 @@ namespace AZ::ShaderCompiler { // Check that any member present in base is present in this class if (!classSubInfo.HasMember(basemember.GetNameLeaf())) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_CLASS_REDEFINE, declNode->Class()->getSymbol(), - ConcatString("class ", m_scope->m_currentScopeUID.m_name, " does not redefine ", basemember.m_name)); + throw AzslcOrchestratorException{ORCHESTRATOR_CLASS_REDEFINE, declNode->Class()->getSymbol(), + ConcatString("class ", m_scope->m_currentScopeUID.m_name, " does not redefine ", basemember.m_name)}; } } } @@ -1417,8 +1425,8 @@ namespace AZ::ShaderCompiler if (baseKind != Kind::Function) { auto baseKindStr = Kind::ToStr(baseKind).data(); - ThrowAzslcOrchestratorException(ORCHESTRATOR_HIDING_SYMBOL_BASE, ctx->Identifier()->getSymbol(), - ConcatString("function ", thisFuncId.m_name, " is hiding a symbol of a base, that is not of Function kind, but is ", baseKindStr)); + throw AzslcOrchestratorException{ORCHESTRATOR_HIDING_SYMBOL_BASE, ctx->Identifier()->getSymbol(), + ConcatString("function ", thisFuncId.m_name, " is hiding a symbol of a base, that is not of Function kind, but is ", baseKindStr)}; } auto& baseFuncSubInfo = baseFuncKind.GetSubRefAs(); if (std::find(baseFuncSubInfo.m_overrides.begin(), baseFuncSubInfo.m_overrides.end(), thisFuncId) == baseFuncSubInfo.m_overrides.end()) @@ -1435,15 +1443,15 @@ namespace AZ::ShaderCompiler { if (GetCurrentParentScopeIdAndKind().second.GetKind() != Kind::Class) { // free function case (or in interface !) - ThrowAzslcOrchestratorException(ORCHESTRATOR_INVALID_OVERRIDE_SPECIFIER_CLASS, ctx->Identifier()->getSymbol(), - ConcatString("function ", thisFuncId.m_name, " has override specifier but is not part of a class")); + throw AzslcOrchestratorException{ORCHESTRATOR_INVALID_OVERRIDE_SPECIFIER_CLASS, ctx->Identifier()->getSymbol(), + ConcatString("function ", thisFuncId.m_name, " has override specifier but is not part of a class")}; } else { // in-class case if (!parentFunction) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_INVALID_OVERRIDE_SPECIFIER_BASE, ctx->Identifier()->getSymbol(), - ConcatString("method ", thisFuncId.m_name, " has override specifier but is not found in any base")); + throw AzslcOrchestratorException{ORCHESTRATOR_INVALID_OVERRIDE_SPECIFIER_BASE, ctx->Identifier()->getSymbol(), + ConcatString("method ", thisFuncId.m_name, " has override specifier but is not found in any base")}; } } } @@ -1461,10 +1469,10 @@ namespace AZ::ShaderCompiler bool previousFuncIsCulprit = overloadSet->AnyOf([this](auto&& uid){return this->HasAnyDefaultParameterValue(uid);}); if (thisFuncIsCulprit || previousFuncIsCulprit) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_NO_DEFAULT_PARAM_WITH_OVERLOADS, ctx->Identifier()->getSymbol(), + throw AzslcOrchestratorException{ORCHESTRATOR_NO_DEFAULT_PARAM_WITH_OVERLOADS, ctx->Identifier()->getSymbol(), ConcatString("can't use default arguments in conjunction with function overloading. (function ", thisFuncId.m_name, thisFuncIsCulprit ? " has defaults arguments, but overloads exist)" - : " overloads a function that has default arguments)")); + : " overloads a function that has default arguments)")}; } } } @@ -1481,11 +1489,11 @@ namespace AZ::ShaderCompiler // We only care the specified semantic is the same as the currently defined semantic for the srg. if (srgInfo.m_semantic->GetNameLeaf() != semanticName) { - const LineDirectiveInfo* originalSrglineInfo = m_preprocessorLineDirectiveFinder->GetNearestPreprocessorLineDirective(srgInfo.m_declNode->Semantic->getLine()); + const LineDirectiveInfo* originalSrglineInfo = AzslcException::s_lineFinder->GetNearestPreprocessorLineDirective(srgInfo.m_declNode->Semantic->getLine()); string errorMsg = FormatString("'partial' extension of ShaderResourceGroup [%s] with semantic [%s] shall not bind a different semantic than [%s] found in line %u of %s", ctx->Name->getText().c_str(), semanticName.c_str(), srgInfo.m_semantic->GetNameLeaf().c_str(), originalSrglineInfo->m_forcedLineNumber, originalSrglineInfo->m_containingFilename.c_str()); - ThrowAzslcOrchestratorException(ORCHESTRATOR_SRG_EXTENSION_HAS_DIFFERENT_SEMANTIC, ctx->Semantic, errorMsg); + throw AzslcOrchestratorException{ORCHESTRATOR_SRG_EXTENSION_HAS_DIFFERENT_SEMANTIC, ctx->Semantic, errorMsg}; } // All is good. return; @@ -1496,18 +1504,18 @@ namespace AZ::ShaderCompiler auto semanticSymbol = LookupSymbol(uqName); if (!semanticSymbol) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_INVALID_SEMANTIC_DECLARATION, ctx->ShaderResourceGroup()->getSymbol(), - ConcatString("Declaration for semantic ", semanticName, " used in SRG ", ctx->Name->getText(), " was not found")); + throw AzslcOrchestratorException{ORCHESTRATOR_INVALID_SEMANTIC_DECLARATION, ctx->ShaderResourceGroup()->getSymbol(), + ConcatString("Declaration for semantic ", semanticName, " used in SRG ", ctx->Name->getText(), " was not found")}; } auto& [semanticSymId, semanticSymKind] = *semanticSymbol; Kind kind = semanticSymKind.GetKind(); if (kind != Kind::ShaderResourceGroupSemantic) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_INVALID_SEMANTIC_DECLARATION_TYPE, ctx->ShaderResourceGroup()->getSymbol(), + throw AzslcOrchestratorException{ORCHESTRATOR_INVALID_SEMANTIC_DECLARATION_TYPE, ctx->ShaderResourceGroup()->getSymbol(), ConcatString("Declaration for ", semanticName, " used in SRG ", ctx->Name->getText(), " is a ", Kind::ToStr(kind).data(), - " but expected a ", Kind::ToStr(Kind::ShaderResourceGroupSemantic).data())); + " but expected a ", Kind::ToStr(Kind::ShaderResourceGroupSemantic).data())}; } const IdentifierUID& srgId = GetCurrentScopeIdAndKind().first; auto* srgSemanticInfo = semanticSymKind.GetSubRefAs().Get(); @@ -1518,10 +1526,10 @@ namespace AZ::ShaderCompiler } else if (userSrgIterator->second != srgId) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_SRG_REUSES_A_FREQUENCY, ctx->ShaderResourceGroup()->getSymbol(), + throw AzslcOrchestratorException{ORCHESTRATOR_SRG_REUSES_A_FREQUENCY, ctx->ShaderResourceGroup()->getSymbol(), ConcatString("SRG ", ctx->Name->getText(), " reuses frequencyId " , userSrgIterator->first, " already used by ", - userSrgIterator->second)); + userSrgIterator->second)}; } // Good, the SRGSemantic is valid, remember a reference to its ID on the SRG: srgInfo.m_semantic = semanticSymId; @@ -1555,7 +1563,7 @@ namespace AZ::ShaderCompiler ArrayDimensions arrayDims; arrayDims.PushBack(keyLength / kShaderVariantKeyRegisterSize); - varInfo.m_typeInfoExt = ExtendedTypeInfo{ CreateTypeRefInfo(UnqualifiedNameView{"uint4"}, OnNotFoundOrWrongKind::Diagnose), + varInfo.m_typeInfoExt = ExtendedTypeInfo{CreateTypeRefInfo(UnqualifiedNameView{"uint4"}, OnNotFoundOrWrongKind::Diagnose), {}, {}, arrayDims, {}, Packing::MatrixMajor::Default }; srgInfo.m_implicitStruct.PushMember(uid, Kind::Variable); @@ -1576,8 +1584,8 @@ namespace AZ::ShaderCompiler bool genericTypeLooksGood = IsFundamental(genericClass) || IsUserDefined(genericClass); if (!genericTypeLooksGood) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_INVALID_EXTERNAL_BOUND_RESOURCE_VIEW, memberInfo.m_declNode->start, - "externally bound resources can't be type-parameterized on view-types"); + throw AzslcOrchestratorException{ORCHESTRATOR_INVALID_EXTERNAL_BOUND_RESOURCE_VIEW, memberInfo.m_declNode->start, + "externally bound resources can't be type-parameterized on view-types"}; } } } @@ -1591,24 +1599,24 @@ namespace AZ::ShaderCompiler auto genericClass = memberInfo.GetGenericParameterTypeClass(); if (!IsUserDefined(genericClass)) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_INVALID_GENERIC_TYPE_CONSTANTBUFFER, memberInfo.m_declNode->start, + throw AzslcOrchestratorException{ORCHESTRATOR_INVALID_GENERIC_TYPE_CONSTANTBUFFER, memberInfo.m_declNode->start, ConcatString("ConstantBuffer's generic type ", genericName, - " must be user defined, but seen as ", TypeClass::ToStr(genericClass).data())); + " must be user defined, but seen as ", TypeClass::ToStr(genericClass).data())}; } // further checks by actually fetching the symbol IdAndKind* idkind = m_symbols->GetIdAndKindInfo(genericName); if (!idkind) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_UNDECLARED_GENERIC_TYPE_CONSTANTBUFFER, memberInfo.m_declNode->start, + throw AzslcOrchestratorException{ORCHESTRATOR_UNDECLARED_GENERIC_TYPE_CONSTANTBUFFER, memberInfo.m_declNode->start, ConcatString("ConstantBuffer's generic type ", genericName, - " is not declared!")); + " is not declared!")}; } auto& [id, kind] = *idkind; if (kind.GetKind() != Kind::Struct) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_INVALID_GENERIC_TYPE_CONSTANTBUFFER_STRUCT, memberInfo.m_declNode->start, + throw AzslcOrchestratorException{ORCHESTRATOR_INVALID_GENERIC_TYPE_CONSTANTBUFFER_STRUCT, memberInfo.m_declNode->start, ConcatString("ConstantBuffer's generic type ", genericName, - " must be a struct, but seen as ", Kind::ToStr(kind.GetKind()).data())); + " must be a struct, but seen as ", Kind::ToStr(kind.GetKind()).data())}; } } } @@ -1627,8 +1635,8 @@ namespace AZ::ShaderCompiler return none; } - ThrowAzslcOrchestratorException(ORCHESTRATOR_LITERAL_REQUIRED_SRG_SEMANTIC, ctx->start, - ConcatString(intrinsicVarName, " is required in SRG semantic")); + throw AzslcOrchestratorException{ORCHESTRATOR_LITERAL_REQUIRED_SRG_SEMANTIC, ctx->start, + ConcatString(intrinsicVarName, " is required in SRG semantic")}; } auto&[sId, sKind] = *semanticSymbol; auto& srgSubInfo = GetCurrentScopeSubInfoAs(); @@ -1642,8 +1650,8 @@ namespace AZ::ShaderCompiler int64_t retValue = 0; if (!TryGetConstExprValueAsInt64(varInfo.m_constVal, retValue)) { - throw AzslcOrchestratorException(ORCHESTRATOR_INVALID_INTEGER_CONSTANT, - ConcatString("Semantic pass error: couldn't get a meaningful integer constant for ", intrinsicVarName)); + throw AzslcOrchestratorException{ORCHESTRATOR_INVALID_INTEGER_CONSTANT, + ConcatString("Semantic pass error: couldn't get a meaningful integer constant for ", intrinsicVarName)}; } return retValue; @@ -1656,8 +1664,8 @@ namespace AZ::ShaderCompiler (*semanticInfo).m_frequencyId = TryFoldSRGSemantic(ctx, azslParser::FrequencyId, true); if (*((*semanticInfo).m_frequencyId) > SRGSemanticInfo_MaxAllowedFrequency) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_INVALID_RANGE_FREQUENCY_ID, ctx->Identifier()->getSymbol(), - ConcatString("ShaderResourceGroupSemantic must define a FrequencyId with value between 0 and ", SRGSemanticInfo_MaxAllowedFrequency)); + throw AzslcOrchestratorException{ORCHESTRATOR_INVALID_RANGE_FREQUENCY_ID, ctx->Identifier()->getSymbol(), + ConcatString("ShaderResourceGroupSemantic must define a FrequencyId with value between 0 and ", SRGSemanticInfo_MaxAllowedFrequency)}; } (*semanticInfo).m_variantFallback = TryFoldSRGSemantic(ctx, azslParser::ShaderVariantFallback); @@ -1687,21 +1695,21 @@ namespace AZ::ShaderCompiler auto maybeSymbol = LookupSymbol(uqName); if (!maybeSymbol) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_CONSTANT_FOLDING_FAULT, idExp->start, - ConcatString("in expected constant expression: identifier ", uqName, " not found")); + throw AzslcOrchestratorException{ORCHESTRATOR_CONSTANT_FOLDING_FAULT, idExp->start, + ConcatString("in expected constant expression: identifier ", uqName, " not found")}; } auto& [id, symbol] = *maybeSymbol; auto what = symbol.GetKind(); if (what != Kind::Variable) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_CONSTANT_FOLDING_FAULT, idExp->start, - ConcatString("in expected constant expression: identifier ", uqName, " did not refer to a variable, but a ", Kind::ToStr(what).data())); + throw AzslcOrchestratorException{ORCHESTRATOR_CONSTANT_FOLDING_FAULT, idExp->start, + ConcatString("in expected constant expression: identifier ", uqName, " did not refer to a variable, but a ", Kind::ToStr(what).data())}; } auto const& var = symbol.GetSubRefAs(); if (holds_alternative(var.m_constVal)) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_CONSTANT_FOLDING_FAULT, idExp->start, - ConcatString("in expected constant expression: variable ", id.m_name, " couldn't be folded to a constant (tip: use --semantic --verbose to diagnose why)")); + throw AzslcOrchestratorException{ORCHESTRATOR_CONSTANT_FOLDING_FAULT, idExp->start, + ConcatString("in expected constant expression: variable ", id.m_name, " couldn't be folded to a constant (tip: use --semantic --verbose to diagnose why)")}; } return var.m_constVal; } @@ -1838,8 +1846,8 @@ namespace AZ::ShaderCompiler { if (policy == OnNotFoundOrWrongKind::Diagnose) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_TYPE_LOOKUP_FAULT, - sourceline, none, ConcatString(" type ", string{ typeName }, " requested but not found.")); + throw AzslcOrchestratorException{ORCHESTRATOR_TYPE_LOOKUP_FAULT, + sourceline, none, ConcatString(" type ", string{ typeName }, " requested but not found.")}; } else { @@ -1854,9 +1862,9 @@ namespace AZ::ShaderCompiler { if (policy == OnNotFoundOrWrongKind::Diagnose) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_TYPE_LOOKUP_FAULT, + throw AzslcOrchestratorException{ORCHESTRATOR_TYPE_LOOKUP_FAULT, sourceline, none, ConcatString(" type ", typeName.data(), - " requested but found as ", Kind::ToStr(kind.GetKind()).data())); + " requested but found as ", Kind::ToStr(kind.GetKind()).data())}; } else { @@ -1889,26 +1897,21 @@ namespace AZ::ShaderCompiler return true; } - ExtendedTypeInfo SemanticOrchestrator::CreateExtendedTypeInfo(AstType* ctx, ArrayDimensions dims, Packing::MatrixMajor mtxMajor) const + ExtendedTypeInfo SemanticOrchestrator::CreateExtendedTypeInfo(AstType* ctx, ArrayDimensions dims) const { vector genericDims; auto extType = ExtractComposedTypeNamesFromAstContext(ctx, &genericDims); if (!TryFoldGenericArrayDimensions(extType, genericDims)) { - ThrowAzslcOrchestratorException(ORCHESTRATOR_DEPORTED_METHOD_DEFINITION, ctx->start, - ConcatString("SemanticOrchestrator::CreateExtendedTypeInfo failed for type (", ctx->getText(), ")")); + throw AzslcOrchestratorException{ORCHESTRATOR_ILLEGAL_FOLDABLE_ARRAY_DIMENSIONS, ctx->start, + ConcatString("SemanticOrchestrator::CreateExtendedTypeInfo failed for type (", ctx->getText(), ")")}; } - return CreateExtendedTypeInfo(extType, dims, mtxMajor); - } - - ExtendedTypeInfo SemanticOrchestrator::CreateExtendedTypeInfo(AstFuncType* ctx, ArrayDimensions dims, Packing::MatrixMajor mtxMajor) const - { - return ctx->Void() ? - ExtendedTypeInfo{ CreateTypeRefInfo(UnqualifiedNameView{AZ::ShaderCompiler::Predefined::Void[0]}), {}, {}, {}, mtxMajor } : - CreateExtendedTypeInfo(ctx->type(), dims, mtxMajor); + return CreateExtendedTypeInfo(extType, ExtractTypeQualifiers(ctx->storageFlags()), dims); } - ExtendedTypeInfo SemanticOrchestrator::CreateExtendedTypeInfo(const ExtractedComposedType& extractedComposed, ArrayDimensions dims, Packing::MatrixMajor mtxMajor) const + ExtendedTypeInfo SemanticOrchestrator::CreateExtendedTypeInfo(const ExtractedComposedType& extractedComposed, + const TypeQualifiers& qualifiers, + ArrayDimensions dims) const { TypeRefInfo core = CreateTypeRefInfo(extractedComposed.m_core); TypeRefInfo generic = CreateTypeRefInfo(extractedComposed.m_genericParam); @@ -1920,7 +1923,8 @@ namespace AZ::ShaderCompiler const TypeAliasInfo* targetAlias = m_symbols->GetAsSub(core.m_typeId); return targetAlias->m_canonicalType; } - return ExtendedTypeInfo{core, generic, dims, extractedComposed.m_genericDimensions, mtxMajor}; + Packing::MatrixMajor mtxMajor = ExtractMatrixMajorness(qualifiers); + return ExtendedTypeInfo{core, generic, qualifiers, dims, extractedComposed.m_genericDimensions, mtxMajor}; } IdAndKind* SemanticOrchestrator::GetSymbolHiddenInBase(IdentifierUID hidingCandidate) @@ -1944,11 +1948,11 @@ namespace AZ::ShaderCompiler { if (found) { - throw AzslcOrchestratorException(ORCHESTRATOR_MULTIPLE_HIDDEN_SYMBOLS, + throw AzslcOrchestratorException{ORCHESTRATOR_MULTIPLE_HIDDEN_SYMBOLS, ConcatString("Found multiple symbols hidden by ", hidingCandidate.m_name, " in bases of ", containingScopeId.m_name, ". First was ", found->first.m_name, - ", now also found in ", base.m_name, ".")); + ", now also found in ", base.m_name, ".")}; } // reconstruct the UID found, and return that. string reconstructedPath = JoinPath(base.m_name, hidingCandidate.GetNameLeaf()); diff --git a/src/AzslcSemanticOrchestrator.h b/src/AzslcSemanticOrchestrator.h index c3bfb7d..6303ffc 100644 --- a/src/AzslcSemanticOrchestrator.h +++ b/src/AzslcSemanticOrchestrator.h @@ -23,8 +23,7 @@ namespace AZ::ShaderCompiler //! Deals with jobs that requires access to both Scope and SymbolTable struct SemanticOrchestrator { - SemanticOrchestrator(SymbolAggregator* sema, ScopeTracker* scope, azslLexer* lexer, - PreprocessorLineDirectiveFinder* preprocessorLineDirectiveFinder = nullptr); + SemanticOrchestrator(SymbolAggregator* sema, ScopeTracker* scope, azslLexer* lexer); //! Helper shortcut: uses the current scope as a starting location to lookup a symbol. //! Returns whatever SymbolAggretator's eponymous returns. @@ -150,7 +149,7 @@ namespace AZ::ShaderCompiler return symbol; } - auto RegisterTypeAlias(string_view newIdentifier, AstFuncType* existingTypeCtx, azslParser::TypeAliasingDefinitionStatementContext* ctx) -> IdAndKind&; + auto RegisterTypeAlias(string_view newIdentifier, AstType* existingTypeCtx, azslParser::TypeAliasingDefinitionStatementContext* ctx) -> IdAndKind&; auto RegisterSRGSemantic(AstSRGSemanticDeclNode* ctx) -> IdAndKind&; @@ -208,7 +207,6 @@ namespace AZ::ShaderCompiler auto TypeofExpr(azslParser::ExpressionExtContext* ctx) const -> QualifiedName; auto TypeofExpr(azslParser::OtherExpressionContext* ctx) const -> QualifiedName; auto TypeofExpr(AstType* ctx) const -> QualifiedName; - auto TypeofExpr(AstFuncType* ctx) const -> QualifiedName; auto TypeofExpr(AstIdExpr* ctx) const -> QualifiedName; auto TypeofExpr(azslParser::IdentifierExpressionContext* ctx) const -> QualifiedName; auto TypeofExpr(azslParser::MemberAccessExpressionContext* ctx) const -> QualifiedName; @@ -325,7 +323,7 @@ namespace AZ::ShaderCompiler } // lookup the symbol database for a type of a given name (or discover the name through an Ast context) and compose a TypeRefInfo - // ArgumentType maybe UnqualifiedNameView or a TypeCtx (AstType or AstFuncType) + // ArgumentType maybe UnqualifiedNameView or a AstType template< typename ContextOrNameT > auto CreateTypeRefInfo(ContextOrNameT typeNameOrCtx, OnNotFoundOrWrongKind policy = OnNotFoundOrWrongKind::CopeByCopy) const -> TypeRefInfo { @@ -342,14 +340,14 @@ namespace AZ::ShaderCompiler } // Just a helper function to compose the bigger version, that contains more data that can't be stored in the core type (TypeRefInfo). - // Array dimensions and mtxMajor are usually stored in VarInfo for example. If you have a custom way to discover them, use this helper to make your own ExtendedTypeInfo - auto CreateExtendedTypeInfo(AstType* ctx, ArrayDimensions dims, Packing::MatrixMajor mtxMajor) const -> ExtendedTypeInfo; - auto CreateExtendedTypeInfo(AstFuncType* ctx, ArrayDimensions dims, Packing::MatrixMajor mtxMajor) const -> ExtendedTypeInfo; + // Array dimensions are usually stored in VarInfo for example. If you have a custom way to discover them, use this helper to make your own ExtendedTypeInfo + auto CreateExtendedTypeInfo(AstType* ctx, ArrayDimensions dims) const -> ExtendedTypeInfo; + // Helper func which folds any possible generic dimensions into the extracted composed type bool TryFoldGenericArrayDimensions(ExtractedComposedType& extType, vector& genericDims) const; // another helper to streamline what to do directly with the result from ExtractTypeNameFromAstContext function families. - auto CreateExtendedTypeInfo(const ExtractedComposedType& extractedComposed, ArrayDimensions dims, Packing::MatrixMajor mtxMajor) const -> ExtendedTypeInfo; + auto CreateExtendedTypeInfo(const ExtractedComposedType&, const TypeQualifiers&, ArrayDimensions) const -> ExtendedTypeInfo; //! check if current scope is a structured user defined type ("struct", "class" or "interface") bool IsScopeStructClassInterface() const; @@ -381,48 +379,10 @@ namespace AZ::ShaderCompiler //! queries whether a function has default parameters bool HasAnyDefaultParameterValue(const IdentifierUID& functionUid) const; - void ThrowAzslcOrchestratorException(uint32_t errorCode, optional line, optional column, const string& message) const - { - if (line && m_preprocessorLineDirectiveFinder) - { - m_preprocessorLineDirectiveFinder->OverrideAzslcExceptionFileAndLine(line.value()); - } - throw AzslcOrchestratorException(errorCode, line, column, message); - } - - void ThrowAzslcOrchestratorException(uint32_t errorCode, Token* token, const string& message) const - { - if (token && m_preprocessorLineDirectiveFinder) - { - m_preprocessorLineDirectiveFinder->OverrideAzslcExceptionFileAndLine(token->getLine()); - } - throw AzslcOrchestratorException(errorCode, token, message); - } - - void ThrowRedeclarationAsDifferentKindInternal(string_view symbolName, Kind newKind, const KindInfo& kindInfo, size_t lineNumber) const - { - if (lineNumber && m_preprocessorLineDirectiveFinder) - { - m_preprocessorLineDirectiveFinder->OverrideAzslcExceptionFileAndLine(lineNumber); - } - ThrowRedeclarationAsDifferentKind(symbolName, newKind, kindInfo, lineNumber); - } - - void CheckQualifersAreOnlyInlineOrStatic(TypeQualifier qualifier, size_t line) const - { - auto okFlags = TypeQualifier{ StorageFlag::Inline } | StorageFlag::Static; - if (qualifier & ~okFlags) - { - ThrowAzslcOrchestratorException(ORCHESTRATOR_DISALLOWED_FUNCTION_MODIFIER, line, - none, " Functions can only have either static or inline modifiers."); - } - } - public: SymbolAggregator* m_symbols; ScopeTracker* m_scope; azslLexer* m_lexer; - PreprocessorLineDirectiveFinder* m_preprocessorLineDirectiveFinder; UnboundedArraysValidator m_unboundedArraysValidator; //! cached property informing of the presence of at least one input attachment use. diff --git a/src/AzslcTypes.h b/src/AzslcTypes.h index 1eddaa2..6ffd6ea 100644 --- a/src/AzslcTypes.h +++ b/src/AzslcTypes.h @@ -200,25 +200,10 @@ namespace AZ::ShaderCompiler { toReturn = TypeClass::TypeofExpression; } - } - return toReturn; - } - - // Get TypeClass for type inside a functype context - inline TypeClass AnalyzeTypeClass(AstFuncType* funcTypeNode) - { - TypeClass toReturn = TypeClass::IsNotType; - if (funcTypeNode != nullptr) - { - if (funcTypeNode->Void()) + else if (typeNode->Void()) { toReturn = TypeClass::Void; } - else - { - AstType* typeNode = funcTypeNode->type(); - toReturn = AnalyzeTypeClass(typeNode); - } } return toReturn; } @@ -244,17 +229,17 @@ namespace AZ::ShaderCompiler || unit->Declarations[0]->attributedFunctionDeclaration() == nullptr || unit->Declarations[0]->attributedFunctionDeclaration()->functionDeclaration() == nullptr || unit->Declarations[0]->attributedFunctionDeclaration()->functionDeclaration()->hlslFunctionDeclaration() == nullptr; - AstFuncType* funcTypeNode = nullptr; + AstType* typeNode = nullptr; if (!failCondition) { - funcTypeNode = unit->Declarations[0]-> - attributedFunctionDeclaration()-> - functionDeclaration()-> - hlslFunctionDeclaration()-> - leadingTypeFunctionSignature()-> - functionType(); + typeNode = unit->Declarations[0]-> + attributedFunctionDeclaration()-> + functionDeclaration()-> + hlslFunctionDeclaration()-> + leadingTypeFunctionSignature()-> + type(); } - return AnalyzeTypeClass(funcTypeNode); + return AnalyzeTypeClass(typeNode); } struct TentativeName diff --git a/src/AzslcUtils.h b/src/AzslcUtils.h index 14de3c1..ebe6238 100644 --- a/src/AzslcUtils.h +++ b/src/AzslcUtils.h @@ -39,7 +39,6 @@ namespace AZ::ShaderCompiler extern Endl azEndl; using AstType = azslParser::TypeContext; // all usertypes and predefined, but cannot be Void - using AstFuncType = azslParser::FunctionTypeContext; // all (can be Void) using AstTypeofNode = azslParser::TypeofExpressionContext; using AstPredefinedTypeNode = azslParser::PredefinedTypeContext; using AstClassDeclNode = azslParser::ClassDefinitionContext; @@ -87,7 +86,7 @@ namespace AZ::ShaderCompiler inline string DiagLine(size_t line) { using namespace std::string_literals; - return AzslcException::s_currentSourceFileName + "("s + std::to_string(line) + "):"; + return AzslcException::s_lineFinder->GetVirtualFileName(line) + "("s + std::to_string(line) + "):"; } inline string DiagLine(optional line) @@ -115,7 +114,8 @@ namespace AZ::ShaderCompiler inline void PrintWarning(DiagnosticStream& stream, Warn::EnumType level, optional lineNumber, optional column, Types&&... messageBits) { stream << PushLevel{} << level - << AzslcException::MakeErrorMessage(lineNumber ? ToString(*lineNumber) : "", column ? ToString(*column) : "", + << AzslcException::MakeErrorMessage(lineNumber ? AzslcException::s_lineFinder->GetVirtualFileName(*lineNumber) : "", + lineNumber ? ToString(AzslcException::s_lineFinder->GetVirtualLineNumber(*lineNumber)) : "", column ? ToString(*column) : "", "", false, "", ConcatString(messageBits..., "\n")) << PopLevel{}; } @@ -134,26 +134,11 @@ namespace AZ::ShaderCompiler PrintWarning(warningCout, level, token->getLine(), token->getCharPositionInLine() + 1, messageBits...); } - inline bool WasParsedAsPredefinedType(AstType* ctx) - { - return ctx->predefinedType(); - } - - inline bool WasParsedAsPredefinedType(AstFuncType* ctx) - { - return ctx->Void() || WasParsedAsPredefinedType(ctx->type()); - } - inline AstTypeofNode* ExtractTypeofAstNode(AstType* ctx) { return ctx->typeofExpression(); } - inline AstTypeofNode* ExtractTypeofAstNode(AstFuncType* ctx) - { - return ctx->type() ? ExtractTypeofAstNode(ctx->type()) : nullptr; - } - template inline AstTypeofNode* ExtractTypeofAstNode(AnyOther*) { @@ -273,9 +258,35 @@ namespace AZ::ShaderCompiler } MAKE_REFLECTABLE_ENUM_POWER (StorageFlag, - Static, Const, Extern, Shared, Groupshared, Precise, Uniform, Volatile, RowMajor, ColumnMajor, In, Out, InOut, Inline, Option, Enumerator, Rootconstant, Unknown + Static, Const, Unsigned, RowMajor, ColumnMajor, Extern, Inline, Rootconstant, Option, Precise, Groupshared, Uniform, Volatile, Globallycoherent, In, Out, InOut, Enumerator, Other ); - using TypeQualifier = Flag; + + inline Streamable& operator << (Streamable& out, StorageFlag::EnumType sf) + { + return out << ToLower(StorageFlag::ToStr(sf)); + } + + using Modifiers = Flag; + struct TypeQualifiers + { + Modifiers m_flag; + vector m_others; // For qualifiers we didn't add to the enum + + string GetDisplayName() const + { + vector bag; + auto end = std::copy_if(StorageFlag::Enumerate{}.begin(), StorageFlag::Enumerate{}.end(), std::back_inserter(bag), + [&](auto sf) -> bool { return (m_flag & sf) && (sf & ~StorageFlag::Other); }); + // Join will call operator<< on StorageFlag::EnumType for stringification + return string{Trim(Join(bag.begin(), bag.end(), " ") + " " + Join(m_others.begin(), m_others.end(), " "))}; + } + + void OrMerge(const TypeQualifiers& src) + { + m_flag |= src.m_flag; + StableMerge(m_others, src.m_others); // stable is key to not disturb emission tests accross platforms that could hash differently if using unordered_sets. + } + }; struct ArrayDimensions { @@ -746,23 +757,34 @@ namespace AZ::ShaderCompiler inline uint32_t PackedSizeof(int indexInAzslPredefined_Scalar) { - // the array is generated but it's expected to look like: {"bool", "double", "dword", "float", "half", "int", "int32_t", "int64_t", "uint", "uint32_t", "uint64_t", "unsigned int"} + // the array is generated but it's expected to look like: + // {"bool", "double", "dword", "float", "half", "int", "int16_t", "int32_t", "int64_t", "uint", "uint16_t", "uint32_t", "uint64_t"} // just update that code if it changes one day, the assert will pop. - if (indexInAzslPredefined_Scalar == 1 || indexInAzslPredefined_Scalar == 7 || indexInAzslPredefined_Scalar == 10) + if (indexInAzslPredefined_Scalar == 1 || indexInAzslPredefined_Scalar == 8 || indexInAzslPredefined_Scalar == 12) { assert(string_view{"double"} == AZ::ShaderCompiler::Predefined::Scalar[1]); - assert(string_view{"int64_t"} == AZ::ShaderCompiler::Predefined::Scalar[7]); - assert(string_view{"uint64_t"} == AZ::ShaderCompiler::Predefined::Scalar[10]); + assert(string_view{"int64_t"} == AZ::ShaderCompiler::Predefined::Scalar[8]); + assert(string_view{"uint64_t"} == AZ::ShaderCompiler::Predefined::Scalar[12]); // Shader packing reference: // https://docs.microsoft.com/en-us/windows/desktop/direct3dhlsl/dx-graphics-hlsl-packing-rules return 8; } + else if (indexInAzslPredefined_Scalar == 4 || indexInAzslPredefined_Scalar == 6 || indexInAzslPredefined_Scalar == 10) + { + // https://github.com/microsoft/DirectXShaderCompiler/wiki/Buffer-Packing + // extract: "with -enable-16bit-types: HLSL half type maps to native 16-bit float16_t type" + // "native 16-bit types have storage size of 16-bits (as expected)" + assert(string_view{"half"} == AZ::ShaderCompiler::Predefined::Scalar[4]); + assert(string_view{"int16_t"} == AZ::ShaderCompiler::Predefined::Scalar[6]); + assert(string_view{"uint16_t"} == AZ::ShaderCompiler::Predefined::Scalar[10]); + return 2; + } else if (indexInAzslPredefined_Scalar < 0) { return 0; // non-predefined case, surely meaning UDT. } assert(indexInAzslPredefined_Scalar < AZ::ShaderCompiler::Predefined::Scalar.size()); // #craefulgang. - return 4; + return 4; // bool is 32 too. } }; @@ -1034,7 +1056,7 @@ namespace AZ::ShaderCompiler return ExtractSpecificParent(ctx); } - inline azslParser::FunctionParamContext* ParamContextOverVariableDeclarator(AstUnnamedVarDecl* ctx) + inline azslParser::FunctionParamContext* ParamContextOverUnnamedVariableDeclarator(AstUnnamedVarDecl* ctx) { return As(ctx->parent); } @@ -1044,9 +1066,9 @@ namespace AZ::ShaderCompiler return As(ctx->parent->parent); } - inline azslParser::TypeContext* ExtractTypeFromVariableDeclarator(AstUnnamedVarDecl* ctx, azslParser::FunctionParamContext** funcParamContextOut = nullptr) + inline azslParser::TypeContext* ExtractTypeFromUnnamedVariableDeclarator(AstUnnamedVarDecl* ctx, azslParser::FunctionParamContext** funcParamContextOut = nullptr) { - auto* paramCtx = ParamContextOverVariableDeclarator(ctx); + auto* paramCtx = ParamContextOverUnnamedVariableDeclarator(ctx); if (paramCtx != nullptr) { if (funcParamContextOut) @@ -1087,86 +1109,44 @@ namespace AZ::ShaderCompiler inline bool TypeIsSamplerComparisonState(AstUnnamedVarDecl* ctx) { - auto* typeCtx = ExtractTypeFromVariableDeclarator(ctx); + auto* typeCtx = ExtractTypeFromUnnamedVariableDeclarator(ctx); return typeCtx->predefinedType() && typeCtx->predefinedType()->samplerStatePredefinedType() && typeCtx->predefinedType()->samplerStatePredefinedType()->SamplerComparisonState(); } - - inline azslParser::StorageFlagsContext* ExtractStorageFlagsFromVariableDeclarator(AstUnnamedVarDecl* ctx) + inline azslParser::StorageFlagsContext* ExtractStorageFlagsFromUnnamedVariableDeclarator(AstUnnamedVarDecl* ctx) { - auto* paramCtx = ParamContextOverVariableDeclarator(ctx); - if (paramCtx != nullptr) - { - return paramCtx->storageFlags(); - } - auto* varDeclCtx = VarDeclContextOverVariableDeclarator(As(ctx->parent)); - if (varDeclCtx != nullptr) - { - return varDeclCtx->storageFlags(); - } - return nullptr; + return ExtractTypeFromUnnamedVariableDeclarator(ctx)->storageFlags(); } - inline bool IsFlag(azslParser::StorageFlagContext* ctx, StorageFlag flag) + inline StorageFlag AsFlag(azslParser::StorageFlagContext* ctx) { - switch (flag) - { - case StorageFlag::Const: return ctx->Const(); - case StorageFlag::Extern: return ctx->Extern(); - case StorageFlag::Groupshared: return ctx->Groupshared(); - case StorageFlag::Precise: return ctx->Precise(); - case StorageFlag::Shared: return ctx->Shared(); - case StorageFlag::Static: return ctx->Static(); - case StorageFlag::Uniform: return ctx->Uniform(); - case StorageFlag::Volatile: return ctx->Volatile(); - case StorageFlag::RowMajor: return ctx->RowMajor(); - case StorageFlag::ColumnMajor: return ctx->ColumnMajor(); - case StorageFlag::In: return ctx->In(); - case StorageFlag::Out: return ctx->Out(); - case StorageFlag::InOut: return ctx->Inout(); - case StorageFlag::Inline: return ctx->Inline(); - case StorageFlag::Rootconstant: return ctx->Rootconstant(); - case StorageFlag::Option: return ctx->Option(); - case StorageFlag::Enumerator: return false; // Not a data-driven flag - case StorageFlag::Unknown: return false; // Not a data-driven flag - default: break; - } - return false; + return ctx->Const() ? StorageFlag::Const + : ctx->Extern() ? StorageFlag::Extern + : ctx->Groupshared() ? StorageFlag::Groupshared + : ctx->Precise() ? StorageFlag::Precise + : ctx->Static() ? StorageFlag::Static + : ctx->Uniform() ? StorageFlag::Uniform + : ctx->Volatile() ? StorageFlag::Volatile + : ctx->Globallycoherent() ? StorageFlag::Globallycoherent + : ctx->RowMajor() ? StorageFlag::RowMajor + : ctx->ColumnMajor() ? StorageFlag::ColumnMajor + : ctx->In() ? StorageFlag::In + : ctx->Out() ? StorageFlag::Out + : ctx->Inout() ? StorageFlag::InOut + : ctx->Inline() ? StorageFlag::Inline + : ctx->Option() ? StorageFlag::Option + : ctx->Rootconstant() ? StorageFlag::Rootconstant + : ctx->Unsigned() ? StorageFlag::Unsigned + // Everything else can still be stored, but won't be checked in any special way: + // linear, centroid, noninterpolation, noperspective, sample, point, line, triangle, lineadk, triangleadj, indices, vertices, etc... + : StorageFlag::Other; } - inline StorageFlag AsFlag(azslParser::StorageFlagContext* ctx) + inline bool IsFlag(azslParser::StorageFlagContext* ctx, StorageFlag flag) { - return ctx->Const() ? StorageFlag::Const - : ctx->Extern() ? StorageFlag::Extern - : ctx->Groupshared() ? StorageFlag::Groupshared - : ctx->Precise() ? StorageFlag::Precise - : ctx->Shared() ? StorageFlag::Shared - : ctx->Static() ? StorageFlag::Static - : ctx->Uniform() ? StorageFlag::Uniform - : ctx->Volatile() ? StorageFlag::Volatile - : ctx->RowMajor() ? StorageFlag::RowMajor - : ctx->ColumnMajor() ? StorageFlag::ColumnMajor - : ctx->In() ? StorageFlag::In - : ctx->Out() ? StorageFlag::Out - : ctx->Inout() ? StorageFlag::InOut - : ctx->Inline() ? StorageFlag::Inline - : ctx->Option() ? StorageFlag::Option - : ctx->Rootconstant() ? StorageFlag::Rootconstant - - // Everything unknown can still be stored, but won't be checked in any special way - : ctx->Linear() ? StorageFlag::Unknown - : ctx->Centroid() ? StorageFlag::Unknown - : ctx->Nointerpolation() ? StorageFlag::Unknown - : ctx->Noperspective() ? StorageFlag::Unknown - : ctx->Sample() ? StorageFlag::Unknown - : ctx->Point() ? StorageFlag::Unknown - : ctx->Line_() ? StorageFlag::Unknown - : ctx->Triangle() ? StorageFlag::Unknown - : ctx->LineAdj() ? StorageFlag::Unknown - : ctx->TriangleAdj() ? StorageFlag::Unknown - : StorageFlag::Unknown; + return AsFlag(ctx) == flag; } // Either just a string, or string + its original source node. @@ -1301,27 +1281,17 @@ namespace AZ::ShaderCompiler { return ExtractComposedTypeNamesFromAstContext(ctx->userDefinedType(), genericDims); } - else if (WasParsedAsPredefinedType(ctx)) + else if (ctx->predefinedType()) { return ExtractComposedTypeNamesFromAstContext(ctx->predefinedType(), genericDims); } - // this could be a typeof, let's return the node for further resolve ! - return {ExtractedTypeExt{UnqualifiedName{ctx->getText()}, ctx}}; - } - - //! from function type context (highest type level) - inline ExtractedComposedType ExtractComposedTypeNamesFromAstContext(AstFuncType* ctx) - { - if (ctx->type()) - { - return ExtractComposedTypeNamesFromAstContext(ctx->type()); - } else if (ctx->Void()) { - assert(string_view{AZ::ShaderCompiler::Predefined::Void[0]} == ctx->getText()); - return {UnqualifiedName{ctx->getText()}}; // "void" + assert(string_view{AZ::ShaderCompiler::Predefined::Void[0]} == ctx->Void()->getText()); + return {UnqualifiedName{ctx->Void()->getText()}}; // "void" } - throw std::logic_error((DiagLine(ctx->start) + " internal error: can't extract name on unsupported expression")); + // this could be a typeof, let's return the node for further resolve! + return {ExtractedTypeExt{UnqualifiedName{ctx->getText()}, ctx}}; } //! Parse an HLSL semantic from a context into (semantic name, semantic index, is system value) diff --git a/src/GenericUtils.h b/src/GenericUtils.h index 5e431dd..378a214 100644 --- a/src/GenericUtils.h +++ b/src/GenericUtils.h @@ -10,6 +10,7 @@ #include "StdUtils.h" #include "MetaUtils.h" +#include "StreamableInterface.h" #include #define AZ_STRINGIFY(x) #x @@ -18,6 +19,37 @@ namespace AZ { + // exception type of VisitFirstNonNull + struct AllNull : std::runtime_error + { + using runtime_error::runtime_error; + }; + // Type-heterogeneity-preserving multi pointer object single visitor. + // Returns whatever the passed functor would. + // Throws if all passed objects are null. + template + invoke_result_t VisitFirstNonNull(Lambda functor, T* object) noexcept(false) + { + if (object) + { + return functor(object); + } + throw AllNull{ "no non-null object passed" }; + } + + template + invoke_result_t VisitFirstNonNull(Lambda functor, T*object, TOther*... rest) noexcept(false) + { + if (object) + { + return functor(object); + } + else + { + return VisitFirstNonNull(functor, rest...); + } + } + // Create substring views of views. Works like python slicing operator [n:m] with limited modulo semantics. // what I ultimately desire is the range v.3 feature eg `letters[{2,end-2}]` // http://ericniebler.com/2014/12/07/a-slice-of-python-in-c/ @@ -156,6 +188,11 @@ namespace AZ return haystack; } + inline bool IsAllWhitespaces(string_view s) + { + return std::all_of(s.begin(), s.end(), [&](char c) { return std::isspace(c); }); + } + /// tells whether a position in a string is surrounded by round braces /// e.g. true for arguments {"a(b)", 2} /// e.g. true for arguments {"a()", 1} by convention @@ -212,14 +249,15 @@ namespace AZ template< typename Iter > string Join(Iter begin, Iter end, string_view separator = "") { - if (begin == end) + if (!(begin != end)) return ""; std::stringstream ss; - ss << *begin; + Streamable&& wrap{MakeOStreamStreamable{ss}}; + wrap << *begin; - auto aggregate = [&ss, &separator](auto s) { ss << separator.data() << s; }; - std::for_each(std::next(begin), end, aggregate); + auto aggregate = [&wrap, &separator](auto s) { wrap << separator.data() << s; }; + std::for_each(++begin, end, aggregate); return ss.str(); } @@ -428,6 +466,12 @@ namespace AZ return f; } + friend Flag& operator &= (Flag& f, const Flag& f2) + { + f.m_value &= f2.m_value; + return f; + } + friend Flag& operator |= (Flag& f, EnumType e) { f.m_value |= static_cast(e); @@ -445,6 +489,16 @@ namespace AZ return Flag(EnumType(~a_f.m_value)); } + bool operator == (const Flag& rhs) const + { + return m_value == rhs.m_value; + } + + bool operator != (const Flag& rhs) const + { + return m_value != rhs.m_value; + } + explicit operator bool() const { return m_value != 0; @@ -535,6 +589,41 @@ namespace AZ { return (value > 0) && !(value & (value - 1)); } + + //! Insert rhs at the end of lhs + template + void AppendVector(vector& lhs, vector const& rhs) + { + using std::begin, std::end; + lhs.insert(end(lhs), begin(rhs), end(rhs)); + } + + //! Stable algorithm to uniquify elements of a vector (preserving order). + //! Solution Mohammed Hossain/Yuri https://stackoverflow.com/a/34341344/893406 + template + size_t RemoveDuplicatesKeepOrder(vector& vec) + { + unordered_set seen; + auto newEnd = std::remove_if(vec.begin(), vec.end(), [&seen](const T& value) + { + if (seen.find(value) != std::end(seen)) + return true; + + seen.insert(value); + return false; + }); + vec.erase(newEnd, vec.end()); + return vec.size(); + } + + //! Append rhs to lhs and remove duplicates + template + void StableMerge(vector& lhs, vector const& rhs) + { + AppendVector(lhs, rhs); + RemoveDuplicatesKeepOrder(lhs); + } + } #ifndef NDEBUG @@ -619,6 +708,9 @@ namespace AZ::Tests assert(FindInterval(intervals, 6) == intervals.cend()); assert(FindInterval(intervals, 8) != intervals.cend()); assert(FindInterval(intervals, 1) == intervals.cend()); + + auto high = Infimum(intervals, 20); + assert(high->first == 8); } assert(Replace("Srg/A", "/", "::") == "Srg::A"); diff --git a/src/NewLineCounterStream.h b/src/NewLineCounterStream.h index 5f69db8..db53053 100644 --- a/src/NewLineCounterStream.h +++ b/src/NewLineCounterStream.h @@ -7,25 +7,22 @@ */ #pragma once -#include "ReflectableEnums.h" - -#include +#include "StreamableInterface.h" namespace AZ { //! Wraps and forwards data to a std::ostream, //! Overrides operator<< for char, const char * and string data and counts //! the number of '\n' (new line) characters that go through it. - class NewLineCounterStream + class NewLineCounterStream : public MakeOStreamStreamable { typedef NewLineCounterStream Self; public: - explicit NewLineCounterStream(std::ostream& streamToWrap) : m_wrappedStream(streamToWrap) - {} + using MakeOStreamStreamable::MakeOStreamStreamable; - Self& operator<<(char c) + Self& operator<<(char c) override { if (c == '\n') { @@ -35,7 +32,7 @@ namespace AZ return *this; } - Self& operator<<(const char * nts) + Self& operator<<(const char * nts) override { const char * tmp = nts; while(char c = *tmp++) @@ -49,7 +46,7 @@ namespace AZ return *this; } - Self& operator<<(const std::string& str) + Self& operator<<(const string& str) override { for (char c : str) { @@ -71,10 +68,7 @@ namespace AZ int GetLineCount() const { return m_lineCount; } - bool IsTheSameStream(std::ostream& stream) const { return &stream == &m_wrappedStream; } - private: - std::ostream& m_wrappedStream; int m_lineCount = 0; }; } diff --git a/src/PadToAttributeMutator.cpp b/src/PadToAttributeMutator.cpp index fa7834a..092146e 100644 --- a/src/PadToAttributeMutator.cpp +++ b/src/PadToAttributeMutator.cpp @@ -18,27 +18,27 @@ namespace AZ::ShaderCompiler if (attrInfo.m_argList.size() != 1) { auto errorMsg = FormatString("The [[pad_to(N)]] attribute only accepts one argument of integral type. %zu arguments were given.", attrInfo.m_argList.size()); - m_ir.ThrowAzslcIrException(IR_INVALID_PAD_TO_ARGUMENTS, attrInfo.m_lineNumber, errorMsg); + throw AzslcIrException{IR_INVALID_PAD_TO_ARGUMENTS, errorMsg, attrInfo.m_lineNumber}; } //Is the argument integral? if (!holds_alternative(attrInfo.m_argList[0])) { string errorMsg("The [[pad_to(N)]] attribute only accepts one argument of integral type. A non integral argument was given."); - m_ir.ThrowAzslcIrException(IR_INVALID_PAD_TO_ARGUMENTS, attrInfo.m_lineNumber, errorMsg); + throw AzslcIrException{IR_INVALID_PAD_TO_ARGUMENTS, errorMsg, attrInfo.m_lineNumber}; } // Read the integral. auto pad_to_value = ExtractValueAs(get(attrInfo.m_argList[0]), uint32_t(0)); if (!pad_to_value) { string errorMsg("Failed to read input integral to [[pad_to(N)]]."); - m_ir.ThrowAzslcIrException(IR_INVALID_PAD_TO_ARGUMENTS, attrInfo.m_lineNumber, errorMsg); + throw AzslcIrException{IR_INVALID_PAD_TO_ARGUMENTS, errorMsg, attrInfo.m_lineNumber}; } // Must be a multiple of 4. static const uint32_t MultipleOf = 4; if (pad_to_value & (MultipleOf-1)) { auto errorMsg = FormatString("Invalid integral in [[pad_to(N)]]. %u is not a multiple of %u", pad_to_value, MultipleOf); - m_ir.ThrowAzslcIrException(IR_INVALID_PAD_TO_ARGUMENTS, attrInfo.m_lineNumber, errorMsg); + throw AzslcIrException{IR_INVALID_PAD_TO_ARGUMENTS, errorMsg, attrInfo.m_lineNumber}; } auto& [curScopeId, curScopeKindInfo] = m_ir.GetCurrentScopeIdAndKind(); @@ -51,7 +51,7 @@ namespace AZ::ShaderCompiler auto errorMsg = FormatString("The [[pad_to(N)]] attribute must be added after a member variable." " The current scope '%.*s' doesn't have a declared variable yet.", static_cast(curScopeId.GetName().size()), curScopeId.GetName().data()); - m_ir.ThrowAzslcIrException(IR_INVALID_PAD_TO_LOCATION, attrInfo.m_lineNumber, errorMsg); + throw AzslcIrException{IR_INVALID_PAD_TO_LOCATION, errorMsg, attrInfo.m_lineNumber}; } auto structItor = m_scopesToPad.find(curScopeId); if (structItor == m_scopesToPad.end()) @@ -64,7 +64,7 @@ namespace AZ::ShaderCompiler { // It appears that there are two consecutive [[pad_to(N)]] attributes. This is an error. auto errorMsg = string("Two consecutive [[pad_to(N)]] attributes are not allowed inside 'struct'."); - m_ir.ThrowAzslcIrException(IR_INVALID_PAD_TO_LOCATION, attrInfo.m_lineNumber, errorMsg); + throw AzslcIrException{IR_INVALID_PAD_TO_LOCATION, errorMsg, attrInfo.m_lineNumber}; } varInfoUidToPadMap[varUid] = pad_to_value; } @@ -73,7 +73,7 @@ namespace AZ::ShaderCompiler auto errorMsg = FormatString("The [[pad_to(N)]] attribute is only supported inside inside 'struct', 'class' or 'ShaderResourceGroup'." " The current scope '%.*s' is not one of those scope types.", static_cast(curScopeId.GetName().size()), curScopeId.GetName().data()); - m_ir.ThrowAzslcIrException(IR_INVALID_PAD_TO_LOCATION, attrInfo.m_lineNumber, errorMsg); + throw AzslcIrException{IR_INVALID_PAD_TO_LOCATION, errorMsg, attrInfo.m_lineNumber}; } } @@ -226,7 +226,7 @@ namespace AZ::ShaderCompiler static_cast(scopeUid.m_name.size()), scopeUid.m_name.data(), padToBoundary); const auto * varInfoPtr= m_ir.GetSymbolSubAs(varUid.m_name); - m_ir.ThrowAzslcIrException(IR_PAD_TO_CASE_REQUIRES_POWER_OF_TWO, varInfoPtr->GetOriginalLineNumber(), errorMsg); + throw AzslcIrException{IR_PAD_TO_CASE_REQUIRES_POWER_OF_TWO, errorMsg, varInfoPtr->GetOriginalLineNumber()}; } const uint32_t alignedOffset = Packing::AlignUp(nextMemberOffset, padToBoundary); bytesToAdd = alignedOffset - nextMemberOffset; @@ -434,13 +434,13 @@ namespace AZ::ShaderCompiler ExtractedTypeExt padType = { UnqualifiedNameView(typeName), nullptr }; if (itemsCount < 1) { - newVarInfo.m_typeInfoExt = ExtendedTypeInfo{ m_ir.m_sema.CreateTypeRefInfo(padType), - {}, {}, {}, Packing::MatrixMajor::Default }; + newVarInfo.m_typeInfoExt = ExtendedTypeInfo{m_ir.m_sema.CreateTypeRefInfo(padType), {}, + {}, {}, {}, Packing::MatrixMajor::Default }; } else { - newVarInfo.m_typeInfoExt = ExtendedTypeInfo{ m_ir.m_sema.CreateTypeRefInfo(padType), - {}, {{itemsCount}}, {}, Packing::MatrixMajor::Default }; + newVarInfo.m_typeInfoExt = ExtendedTypeInfo{m_ir.m_sema.CreateTypeRefInfo(padType), {}, + {}, {{itemsCount}}, {}, Packing::MatrixMajor::Default }; } newVarKind.GetSubRefAs() = newVarInfo; return newVarUid; diff --git a/src/PreprocessorLineDirectiveFinder.h b/src/PreprocessorLineDirectiveFinder.h index e16c07a..8ed2dc6 100644 --- a/src/PreprocessorLineDirectiveFinder.h +++ b/src/PreprocessorLineDirectiveFinder.h @@ -1,7 +1,7 @@ -/* +/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * + * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ @@ -20,7 +20,7 @@ namespace AZ::ShaderCompiler string m_containingFilename; }; - //! An interface capable of finding the original line in the source file + //! A helper capable of finding the original line in the source file //! for the given flat file that is being compiled. //! A preprocessed azsl file is the file generated by MCPP after all #include and macro definitions //! have been resolved in a single flat file. @@ -29,18 +29,53 @@ namespace AZ::ShaderCompiler class PreprocessorLineDirectiveFinder { public: - virtual ~PreprocessorLineDirectiveFinder() {}; + const LineDirectiveInfo* GetNearestPreprocessorLineDirective(size_t physicalLine) const + { + auto it = Infimum(m_lineMap, physicalLine); + return it == m_lineMap.cend() ? nullptr : &it->second; + } + + //! The "virtual" line is the #line-directive adjusted line number, as opposed to a physical line (given by tokens) + size_t GetVirtualLineNumber(const LineDirectiveInfo& lineInfo, size_t physicalLine) const + { + // visual explanation: + // code editor line │ actual source │ remark + // ─────────────────┼─────────────────────────────────────────────────┼──────────────────────────── + // 1 │ # line 4 "name" │ ┐ + // 2 │ // this is now line 4, virtually │ ├ physical distance = 3-1 = 2 + // 3 │ $yntaX error │ ┘ + // + // the error is on physical line 3, but should be reported as being on line 5 (physical-distance + line## - 1) + const size_t physicalDistance = physicalLine - lineInfo.m_physicalTokenLine; + return physicalDistance + lineInfo.m_forcedLineNumber - 1; // virtual line + } + + //! More compact API for those who just need the final count adjustment, without access to the LineDirectiveInfo + size_t GetVirtualLineNumber(size_t physicalLine) const + { + const LineDirectiveInfo* found = GetNearestPreprocessorLineDirective(physicalLine); + return found ? GetVirtualLineNumber(*found, physicalLine) + : physicalLine; // Return unadjusted in case of abscence of a virtual space. + } - virtual const LineDirectiveInfo* GetNearestPreprocessorLineDirective(size_t azslLineNumber) const = 0; + const string& GetVirtualFileName(size_t physicalLine) const + { + const LineDirectiveInfo* found = GetNearestPreprocessorLineDirective(physicalLine); + return found ? found->m_containingFilename + : m_physicalSourceFileName; // Return unadjusted in case of abscence of a virtual space. + } + + void PushLineDirective(const LineDirectiveInfo& ldi) + { + m_lineMap[ldi.m_physicalTokenLine] = ldi; + } - virtual size_t GetLineNumberInOriginalSourceFile(const LineDirectiveInfo& lineInfo, size_t azslLineNumber) const + void PushLineDirective(LineDirectiveInfo&& ldi) { - const size_t lineNumberOfDirectiveinAzslSource = lineInfo.m_physicalTokenLine; - const size_t relativeLineNumber = azslLineNumber - lineNumberOfDirectiveinAzslSource; - const size_t absoluteLineNumberInIncludedFile = lineInfo.m_forcedLineNumber + relativeLineNumber - 1; - return absoluteLineNumberInIncludedFile; + m_lineMap.emplace(ldi.m_physicalTokenLine, ldi); } - virtual void OverrideAzslcExceptionFileAndLine(size_t azslLineNumber) const = 0; + map m_lineMap; + string m_physicalSourceFileName; }; -} \ No newline at end of file +} diff --git a/src/ReflectableEnums.h b/src/ReflectableEnums.h index c9aec20..337efd4 100644 --- a/src/ReflectableEnums.h +++ b/src/ReflectableEnums.h @@ -110,6 +110,10 @@ struct EnumTypeName\ struct Iterator\ {\ EnumType m_i;\ + using iterator_category = std::forward_iterator_tag;\ + using difference_type = int;\ + using value_type = EnumType;\ + using reference = EnumType&;\ constexpr EnumType operator*() { return m_i; }\ constexpr Iterator operator++() { m_i = static_cast(EnumeratorNextOp); return {m_i}; }\ constexpr bool operator!=(const Iterator& rhs) const { return m_i != rhs.m_i; }\ diff --git a/src/StdUtils.h b/src/StdUtils.h index f55fdab..25f9e9e 100644 --- a/src/StdUtils.h +++ b/src/StdUtils.h @@ -101,38 +101,6 @@ namespace AZ using std::unordered_set; using std::vector; - // exception type of VisitFirstNonNull - struct AllNull : std::runtime_error - { - using runtime_error::runtime_error; - }; - - // Type-heterogeneity-preserving multi pointer object single visitor. - // Returns whatever the passed functor would. - // Throws if all passed objects are null. - template - invoke_result_t VisitFirstNonNull(Lambda functor, T* object) noexcept(false) - { - if (object) - { - return functor(object); - } - throw AllNull{ "no non-null object passed" }; - } - - template - invoke_result_t VisitFirstNonNull(Lambda functor, T*object, TOther*... rest) noexcept(false) - { - if (object) - { - return functor(object); - } - else - { - return VisitFirstNonNull(functor, rest...); - } - } - template void SetMerge(SetType& dest, SetType& src) { diff --git a/src/StreamableInterface.h b/src/StreamableInterface.h new file mode 100644 index 0000000..a8d9c98 --- /dev/null +++ b/src/StreamableInterface.h @@ -0,0 +1,51 @@ +/* +* Copyright (c) Contributors to the Open 3D Engine Project. +* For complete copyright and license terms please see the LICENSE at the root of this distribution. +* +* SPDX-License-Identifier: Apache-2.0 OR MIT +* +*/ +#pragma once + +#include + +namespace AZ +{ + //! This class aims at being an abstract base to replace std::ostream which is not deriveable. + //! With this facility, stream operator << becomes virtualizable, and emitters/reflectors may stream to + //! various types of special streaming service, notably the "linefeed counter" you'll find in NewLineCounterStream.h + class Streamable + { + public: + virtual Streamable& operator<<(char) = 0; // template virtual method are forbidden in C++, so manual listing :( + virtual Streamable& operator<<(const char*) = 0; + virtual Streamable& operator<<(double) = 0; + virtual Streamable& operator<<(int64_t) = 0; + virtual Streamable& operator<<(uint32_t) = 0; + virtual Streamable& operator<<(size_t) = 0; + virtual Streamable& operator<<(bool) = 0; + virtual Streamable& operator<<(const std::string&) = 0; + }; + + // trivial concrete version to wrap classic std::ostream objects + class MakeOStreamStreamable : public Streamable + { + public: + MakeOStreamStreamable(std::ostream& streamToWrap) + : m_wrappedStream(streamToWrap) + {} + + Streamable& operator<<(char c) override { m_wrappedStream << c; return *this; } + Streamable& operator<<(const char* nts) override { m_wrappedStream << nts; return *this; } + Streamable& operator<<(const std::string& str) override { m_wrappedStream << str; return *this; } + Streamable& operator<<(double n) override { m_wrappedStream << n; return *this; } + Streamable& operator<<(int64_t n) override { m_wrappedStream << n; return *this; } + Streamable& operator<<(uint32_t n) override { m_wrappedStream << n; return *this; } + Streamable& operator<<(size_t n) override { m_wrappedStream << n; return *this; } + Streamable& operator<<(bool b) override { m_wrappedStream << b; return *this; } + + protected: + std::ostream& m_wrappedStream; + }; + +} diff --git a/src/Texture2DMSto2DCodeMutator.cpp b/src/Texture2DMSto2DCodeMutator.cpp index 6be83e4..96dbf99 100644 --- a/src/Texture2DMSto2DCodeMutator.cpp +++ b/src/Texture2DMSto2DCodeMutator.cpp @@ -321,7 +321,7 @@ namespace AZ::ShaderCompiler } //Semantics can be part of a struct, or function parameters. - if (ParamContextOverVariableDeclarator(varInfo->m_declNode)) + if (ParamContextOverUnnamedVariableDeclarator(varInfo->m_declNode)) { // This is a function parameter. IdentifierUID functionUid = IdentifierUID{ GetParentName(uid.GetName()) }; @@ -336,18 +336,35 @@ namespace AZ::ShaderCompiler } } + static vector NodeTokens(ParserRuleContext* node, TokenStream* stream) + { + vector tokens; + misc::Interval src = node->getSourceInterval(); + for (ssize_t i = src.a; i <= src.b; ++i) + { + tokens.push_back(stream->get(i)); + } + return tokens; + } + //! A helper method that figures out how a function argument should look like //! when mutated into a local variable. - static string GetLocalVariableStringFromFunctionArgument(const UnqualifiedName& uqName, AstUnnamedVarDecl* ctx, const char * initializationValue) + static string GetLocalVariableStringFromFunctionArgument(TokenStream* stream, const UnqualifiedName& uqName, AstUnnamedVarDecl* ctx, const char * initializationValue) { azslParser::FunctionParamContext* paramCtx = nullptr; - auto typeCtx = ExtractTypeFromVariableDeclarator(ctx, ¶mCtx); - auto variableTypeStr = typeCtx->getText(); + auto typeCtx = ExtractTypeFromUnnamedVariableDeclarator(ctx, ¶mCtx); + auto tokens = NodeTokens(typeCtx, stream); + vector stringlets; + TransformCopy(tokens, stringlets, [&](Token* t) { return t->getText(); }); + vector filtered; + std::copy_if(stringlets.begin(), stringlets.end(), std::back_inserter(filtered), [&](auto subtok) + { return subtok != "in" && subtok != "out" && subtok != "inout" && !IsAllWhitespaces(subtok); }); + string typeHlsl = Join(filtered, " "); if (initializationValue) { - return FormatString("%s %s = (%s)%s;\n", variableTypeStr.c_str(), uqName.c_str(), variableTypeStr.c_str(), initializationValue); + return FormatString("%s %s = (%s)%s;\n", typeHlsl.c_str(), uqName.c_str(), typeHlsl.c_str(), initializationValue); } - return FormatString("%s %s;\n", variableTypeStr.c_str(), uqName.c_str()); + return FormatString("%s %s;\n", typeHlsl.c_str(), uqName.c_str()); } void Texture2DMSto2DCodeMutator::DropMultiSamplingSystemSemanticFromFunction(const IdentifierUID& varUid, const VarInfo* varInfo, const string& systemSemanticName, const IdentifierUID& functionUid) @@ -386,7 +403,7 @@ namespace AZ::ShaderCompiler initializationValue = "-1"; } - auto newCode = GetLocalVariableStringFromFunctionArgument(varUid.GetNameLeaf(), varInfo->m_declNode, initializationValue.c_str()); + auto newCode = GetLocalVariableStringFromFunctionArgument(m_stream, varUid.GetNameLeaf(), varInfo->m_declNode, initializationValue.c_str()); // The idea is to find the TokenIndex of the opening bracket "{", // Once we know that TokenIndex we can add code mutation as an appended @@ -432,7 +449,7 @@ namespace AZ::ShaderCompiler { initializationValue = "-1"; } - auto newCode = GetLocalVariableStringFromFunctionArgument(varUid.GetNameLeaf(), varInfo->m_declNode, initializationValue.c_str()); + auto newCode = GetLocalVariableStringFromFunctionArgument(m_stream, varUid.GetNameLeaf(), varInfo->m_declNode, initializationValue.c_str()); auto tokenIndex = varInfo->m_declNode->start->getTokenIndex(); CodeMutation mutation; mutation.m_prepend.emplace("static const "); diff --git a/src/Texture2DMSto2DCodeMutator.h b/src/Texture2DMSto2DCodeMutator.h index bc4be9f..279f39c 100644 --- a/src/Texture2DMSto2DCodeMutator.h +++ b/src/Texture2DMSto2DCodeMutator.h @@ -31,7 +31,7 @@ namespace AZ::ShaderCompiler , public ICodeEmissionMutator { Texture2DMSto2DCodeMutator() = delete; - explicit Texture2DMSto2DCodeMutator(IntermediateRepresentation* ir) : m_ir(ir) {} + explicit Texture2DMSto2DCodeMutator(IntermediateRepresentation* ir, CommonTokenStream* stream) : m_ir(ir), m_stream(stream) {} virtual ~Texture2DMSto2DCodeMutator() = default; /////////////////////////////////////////////////////////////////////// @@ -92,6 +92,8 @@ namespace AZ::ShaderCompiler //! Cached when RunMiddleEndMutations is called. IntermediateRepresentation* m_ir = nullptr; + CommonTokenStream* m_stream = nullptr; + //! A map of TokenIndex to Mutation. If a TokenIndex is present, //! it means it should produce mutated text during emission. unordered_map< ssize_t, CodeMutation > m_mutations; diff --git a/src/azslLexer.g4 b/src/azslLexer.g4 index e01fa6e..34e49b1 100644 --- a/src/azslLexer.g4 +++ b/src/azslLexer.g4 @@ -6,7 +6,7 @@ modifications by Amazon. C 2018 */ lexer grammar azslLexer; -channels { PREPROCESSOR } +channels { PREPROCESSOR, COMMENTS } AppendStructuredBuffer : 'AppendStructuredBuffer'; Bool : 'bool'; @@ -36,9 +36,9 @@ ByteAddressBuffer : 'ByteAddressBuffer'; Break : 'break'; Case : 'case'; CBuffer : 'cbuffer'; +Centroid : 'centroid'; ConstantBuffer : 'constantbuffer'; ConstantBufferCamel : 'ConstantBuffer'; -Centroid : 'centroid'; Class : 'class'; ColumnMajor : 'column_major'; Const : 'const'; @@ -70,6 +70,7 @@ Double4x3 : 'double4x3'; Double4x4 : 'double4x4'; Else : 'else'; Enum : 'enum'; +Export : 'export'; Extern : 'extern'; FeedbackTexture2D : 'FeedbackTexture2D'; FeedbackTexture2DArray : 'FeedbackTexture2DArray'; @@ -96,6 +97,7 @@ Float4x3 : 'float4x3'; Float4x4 : 'float4x4'; For : 'for'; Groupshared : 'groupshared'; +Globallycoherent : 'globallycoherent'; Global: 'global'; Half : 'half'; Half1 : 'half1'; @@ -125,6 +127,7 @@ Rootconstant : 'rootconstant'; // Amazon extension Inout : 'inout' | 'in out'; InputPatch : 'InputPatch'; Int : 'int'; +Int16_t : 'int16_t'; Int32_t : 'int32_t'; Int64_t : 'int64_t'; Int1 : 'int1'; @@ -165,6 +168,9 @@ Packoffset : 'packoffset'; Point : 'point'; PointStream : 'PointStream'; Precise : 'precise'; +// 'payload' is a free identifier as well, DXC has a hard literal keyword that disrupts semantic understanding in some contexts +// notably as variable declarator, if you mention payload it will say «'payload' object must be an in parameter» +// but actually the name the programmer choses doesn't have to be 'payload'. (Also SV_RayPayload appears to be a fake semantic) RasterizerOrderedBuffer : 'RasterizerOrderedBuffer'; RasterizerOrderedByteAddressBuffer : 'RasterizerOrderedByteAddressBuffer'; RasterizerOrderedStructuredBuffer : 'RasterizerOrderedStructuredBuffer'; @@ -190,14 +196,17 @@ Sample : 'sample'; Sampler : 'sampler'; SamplerCapitalS : 'Sampler'; SamplerComparisonState : 'SamplerComparisonState'; -SamplerState : 'SamplerState'; +SamplerStateCamel : 'SamplerState'; +SamplerState : 'sampler_state'; Shared : 'shared'; +SNorm : 'snorm'; Static : 'static'; Struct : 'struct'; StructuredBuffer : 'StructuredBuffer'; SubpassInput : 'SubpassInput'; SubpassInputMS : 'SubpassInputMS'; Switch : 'switch'; +TBuffer : 'tbuffer'; Texture1D : 'Texture1D'; Texture1DArray : 'Texture1DArray'; Texture2D : 'Texture2D'; @@ -213,12 +222,9 @@ TriangleStream : 'TriangleStream'; Uniform : 'uniform'; // For the --listpredefined option to work, we absolutely need all types to exist in (simple) rules // that can return strings from Vocabulary::getLiteralName() -// so that rule: Uint : 'uint' | 'unsigned int' | 'dword' # can't be used because it's non-trivialness makes it a non-citizen. +// so that rule: Uint : 'uint' | 'dword' # can't be used because it's non-trivialness makes it a non-citizen. // I tried to recompose the rule with fragments, but fragment also are not listed in the vocabulary. (_literalNames) Uint : 'uint'; -Uint32_t : 'uint32_t'; -Uint64_t : 'uint64_t'; -UnsignedInt : 'unsigned int'; Uint1 : 'uint1'; Uint2 : 'uint2'; Uint3 : 'uint3'; @@ -239,6 +245,11 @@ Uint4x1 : 'uint4x1'; Uint4x2 : 'uint4x2'; Uint4x3 : 'uint4x3'; Uint4x4 : 'uint4x4'; +Uint16_t : 'uint16_t'; +Uint32_t : 'uint32_t'; +Uint64_t : 'uint64_t'; +UNorm : 'unorm'; +Unsigned : 'unsigned'; Dword : 'dword'; // Amazon addition: DXC didn't advertise it, but the vector/matrix forms of dword are now accepted Dword1 : 'dword1'; @@ -266,7 +277,7 @@ Volatile : 'volatile'; Void : 'void'; While : 'while'; -// libray subobject types from modern HLSL: +// library subobject types from modern HLSL: StateObjectConfig : 'StateObjectConfig'; LocalRootSignature : 'LocalRootSignature'; GlobalRootSignature : 'GlobalRootSignature'; @@ -376,25 +387,26 @@ Dot : '.'; True : 'true'; False : 'false'; -// AMAZON +// AZSL extensions KW_AssociatedType : 'associatedtype' ; KW_TypeAlias : 'typealias' ; KW_Typedef : 'typedef' ; KW_Fundamental : 'fundamental' ; // [GFX TODO] KW_Typeof : 'typeof' ; // simple decltype-like operator -// AZSLc extensions +// AZSL SRG +FrequencyId : 'FrequencyId'; +ShaderVariantFallback : 'ShaderVariantFallback'; +ShaderResourceGroupSemantic : 'ShaderResourceGroupSemantic'; +ShaderResourceGroup : 'ShaderResourceGroup'; + +// AZSLc-specific internal access keywords KW_ext_print_message : '__azslc_print_message' ; KW_ext_print_symbol : '__azslc_print_symbol' ; KW_ext_prtsym_fully_qualified : '__azslc_prtsym_fully_qualified' ; KW_ext_prtsym_least_qualified : '__azslc_prtsym_least_qualified' ; KW_ext_prtsym_constint_value : '__azslc_prtsym_constint_value' ; -// AZSL SRG -FrequencyId : 'FrequencyId'; -ShaderVariantFallback : 'ShaderVariantFallback'; -ShaderResourceGroupSemantic : 'ShaderResourceGroupSemantic'; -ShaderResourceGroup : 'ShaderResourceGroup'; HLSLSemanticStream: 'BINORMAL' Digit* @@ -422,6 +434,13 @@ HLSLSemanticSystem: | 'sv_' (Nondigit | Digit)* ; +// Those keywords are removed from the vocabulary, as of 1.8.8 (were present from 1.8.5) +// since they can be emulated with a lazy Identifier recognition in the qualifier rule +//Center : 'center'; +//Indices : 'indices'; // mesh-shader parameter qualifier +//Vertices : 'vertices'; // mesh-shader parameter qualifier +//Payload : 'payload'; // mesh-shader parameter qualifier & hit-shader optional qualifier + Identifier : Nondigit (Nondigit | Digit)* ; @@ -543,20 +562,20 @@ LineDirective ; Whitespace - : [ \t]+ -> skip + : [ \t]+ -> channel(HIDDEN) ; Newline : ( '\r' '\n'? | '\n' - ) -> skip + ) -> channel(HIDDEN) ; // Amazon: The original mode switches from Tim Jones were not working. BlockComment - : '/*' .*? '*/' -> channel(HIDDEN) + : '/*' .*? '*/' -> channel(COMMENTS) ; LineComment - : '//' ~[\r\n]* -> channel(HIDDEN) + : '//' ~[\r\n]* -> channel(COMMENTS) ; diff --git a/src/azslParser.g4 b/src/azslParser.g4 index 0f47af4..487d092 100644 --- a/src/azslParser.g4 +++ b/src/azslParser.g4 @@ -26,7 +26,7 @@ topLevelDeclaration: | attributedSrgDefinition // AZSLc specific | attributedSrgSemantic // AZSLc specific | Semi -; +; // Amazon: AZSL has scopes, and identifiers can be qualified idExpression: @@ -147,7 +147,7 @@ functionParams: ; functionParam: - attributeSpecifierAny* storageFlags type Name=Identifier? unnamedVariableDeclarator + attributeSpecifierAny* type Name=Identifier? unnamedVariableDeclarator ; hlslSemantic: @@ -340,10 +340,8 @@ arguments: // TYPES // -------------------------------------- -// note that in FXC "int static" (that is `storageFlags type storageFlags`) wasn't valid. -// but in DXC it's flexible like in C/C++, so we have a restriction compared to DXC here. variableDeclaration: - attributeSpecifierAny* storageFlags type variableDeclarators + attributeSpecifierAny* type variableDeclarators ; variableDeclarators: @@ -388,25 +386,29 @@ packOffsetNode: ; storageFlags: - storageFlag* + storageFlag*? // *? lazy Kleene star. this allows the use of Identifier as a subrule without swallowing typenames under the storage rule. ; storageFlag: // Type modifiers Const + | Unsigned | RowMajor | ColumnMajor // Storage classes | Extern | Inline - | Rootconstant - | Option + | Rootconstant // AZSL specific + | Option // AZSL | Precise | Shared | Groupshared | Static | Uniform | Volatile + | Globallycoherent + | SNorm + | UNorm // Interpolation modifiers | Linear | Centroid @@ -423,12 +425,14 @@ storageFlag: | Triangle | LineAdj | TriangleAdj + // catch-all + | Identifier ; +// note that in FXC "int static" (that is `storageFlags type storageFlags`) wasn't valid. +// but in DXC it's flexible like in C/C++, so we have a restriction compared to DXC here. type: - predefinedType - | userDefinedType - | typeofExpression + storageFlags (predefinedType | userDefinedType | typeofExpression | Void) ; predefinedType: @@ -505,18 +509,20 @@ samplerStatePredefinedType: Sampler | SamplerCapitalS | SamplerState + | SamplerStateCamel | SamplerComparisonState ; scalarType: Bool | Int + | Int16_t | Int32_t | Int64_t | Uint + | Uint16_t | Uint32_t | Uint64_t - | UnsignedInt | Dword | Half | Float @@ -771,7 +777,7 @@ literal: // leading type means a function where the return type is stated first (contrary to trailing type) leadingTypeFunctionSignature: - storageFlags functionType (ClassName=userDefinedType ColonColon)? Name=Identifier + type (ClassName=userDefinedType ColonColon)? Name=Identifier genericParameterList? LeftParen functionParams? RightParen Override? hlslSemantic? // AZSL+ @@ -787,11 +793,6 @@ hlslFunctionDeclaration: Semi ; -functionType: - type - | Void -; - userDefinedType: idExpression | anyStructuredTypeDefinition // to allow "struct tag_ {} var;" @@ -807,12 +808,12 @@ associatedTypeDeclaration: // typedef support (extension of fxc accepted language, but normal for dxc) typedefStatement: - KW_Typedef ExistingType=functionType NewTypeName=Identifier Semi + KW_Typedef ExistingType=type NewTypeName=Identifier Semi ; // swift/slang-like manner of writing typedef. also close to C++11 using typealiasStatement: - KW_TypeAlias NewTypeName=Identifier '=' ExistingType=functionType Semi + KW_TypeAlias NewTypeName=Identifier '=' ExistingType=type Semi ; typeAliasingDefinitionStatement: @@ -820,7 +821,7 @@ typeAliasingDefinitionStatement: ; typeofExpression: - KW_Typeof '(' (Expr=expressionExt|functionType) ')' ('::' SubQualification=idExpression)? + KW_Typeof '(' (Expr=expressionExt|type) ')' ('::' SubQualification=idExpression)? ; genericParameterList: diff --git a/src/exportKeywords.py b/src/exportKeywords.py index df43a56..655e28a 100644 --- a/src/exportKeywords.py +++ b/src/exportKeywords.py @@ -1,14 +1,10 @@ #!/usr/bin/python # -*- coding: utf-8 -*- """ -All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -its licensors. +Copyright (c) Contributors to the Open 3D Engine Project. +For complete copyright and license terms please see the LICENSE at the root of this distribution. -For complete copyright and license terms please see the LICENSE at the root of this -distribution (the "License"). All use of this software is governed by the License, -or, if provided, by the license below or the license accompanying this file. Do not -remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +SPDX-License-Identifier: Apache-2.0 OR MIT """ import sys import os @@ -40,14 +36,10 @@ with open("AzslcPredefinedTypes.h", 'w') as outfile: copyright = '''/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. +* Copyright (c) Contributors to the Open 3D Engine Project. +* For complete copyright and license terms please see the LICENSE at the root of this distribution. * -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* SPDX-License-Identifier: Apache-2.0 OR MIT * */ #pragma once diff --git a/src/generated/azslLexer.cpp b/src/generated/azslLexer.cpp index 3c1939d..ba3e544 100644 --- a/src/generated/azslLexer.cpp +++ b/src/generated/azslLexer.cpp @@ -64,78 +64,80 @@ std::vector azslLexer::_ruleNames = { "Bool1x1", "Bool1x2", "Bool1x3", "Bool1x4", "Bool2x1", "Bool2x2", "Bool2x3", "Bool2x4", "Bool3x1", "Bool3x2", "Bool3x3", "Bool3x4", "Bool4x1", "Bool4x2", "Bool4x3", "Bool4x4", "Buffer", "BuiltInTriangleIntersectionAttributes", - "ByteAddressBuffer", "Break", "Case", "CBuffer", "ConstantBuffer", "ConstantBufferCamel", - "Centroid", "Class", "ColumnMajor", "Const", "ConsumeStructuredBuffer", + "ByteAddressBuffer", "Break", "Case", "CBuffer", "Centroid", "ConstantBuffer", + "ConstantBufferCamel", "Class", "ColumnMajor", "Const", "ConsumeStructuredBuffer", "Continue", "Default", "Discard", "Do", "Double", "Double1", "Double2", "Double3", "Double4", "Double1x1", "Double1x2", "Double1x3", "Double1x4", "Double2x1", "Double2x2", "Double2x3", "Double2x4", "Double3x1", "Double3x2", "Double3x3", "Double3x4", "Double4x1", "Double4x2", "Double4x3", "Double4x4", - "Else", "Enum", "Extern", "FeedbackTexture2D", "FeedbackTexture2DArray", + "Else", "Enum", "Export", "Extern", "FeedbackTexture2D", "FeedbackTexture2DArray", "Float", "Float1", "Float2", "Float3", "Float4", "Float1x1", "Float1x2", "Float1x3", "Float1x4", "Float2x1", "Float2x2", "Float2x3", "Float2x4", "Float3x1", "Float3x2", "Float3x3", "Float3x4", "Float4x1", "Float4x2", - "Float4x3", "Float4x4", "For", "Groupshared", "Global", "Half", "Half1", - "Half2", "Half3", "Half4", "Half1x1", "Half1x2", "Half1x3", "Half1x4", - "Half2x1", "Half2x2", "Half2x3", "Half2x4", "Half3x1", "Half3x2", "Half3x3", - "Half3x4", "Half4x1", "Half4x2", "Half4x3", "Half4x4", "If", "In", "Inline", - "Rootconstant", "Inout", "InputPatch", "Int", "Int32_t", "Int64_t", "Int1", - "Int2", "Int3", "Int4", "Int1x1", "Int1x2", "Int1x3", "Int1x4", "Int2x1", - "Int2x2", "Int2x3", "Int2x4", "Int3x1", "Int3x2", "Int3x3", "Int3x4", - "Int4x1", "Int4x2", "Int4x3", "Int4x4", "Interface", "Line_", "LineAdj", - "Linear", "LineStream", "Long", "Matrix", "Nointerpolation", "Noperspective", - "Option", "Out", "OutputPatch", "Override", "Partial", "Packoffset", "Point", - "PointStream", "Precise", "RasterizerOrderedBuffer", "RasterizerOrderedByteAddressBuffer", - "RasterizerOrderedStructuredBuffer", "RasterizerOrderedTexture1D", "RasterizerOrderedTexture1DArray", - "RasterizerOrderedTexture2D", "RasterizerOrderedTexture2DArray", "RasterizerOrderedTexture3D", - "RayDesc", "RaytracingAccelerationStructure", "Register", "Return", "RowMajor", - "RWBuffer", "RWByteAddressBuffer", "RWStructuredBuffer", "RWTexture1D", - "RWTexture1DArray", "RWTexture2D", "RWTexture2DArray", "RWTexture3D", - "Sample", "Sampler", "SamplerCapitalS", "SamplerComparisonState", "SamplerState", - "Shared", "Static", "Struct", "StructuredBuffer", "SubpassInput", "SubpassInputMS", - "Switch", "Texture1D", "Texture1DArray", "Texture2D", "Texture2DArray", - "Texture2DMS", "Texture2DMSArray", "Texture3D", "TextureCube", "TextureCubeArray", - "Triangle", "TriangleAdj", "TriangleStream", "Uniform", "Uint", "Uint32_t", - "Uint64_t", "UnsignedInt", "Uint1", "Uint2", "Uint3", "Uint4", "Uint1x1", - "Uint1x2", "Uint1x3", "Uint1x4", "Uint2x1", "Uint2x2", "Uint2x3", "Uint2x4", - "Uint3x1", "Uint3x2", "Uint3x3", "Uint3x4", "Uint4x1", "Uint4x2", "Uint4x3", - "Uint4x4", "Dword", "Dword1", "Dword2", "Dword3", "Dword4", "Dword1x1", - "Dword1x2", "Dword1x3", "Dword1x4", "Dword2x1", "Dword2x2", "Dword2x3", - "Dword2x4", "Dword3x1", "Dword3x2", "Dword3x3", "Dword3x4", "Dword4x1", - "Dword4x2", "Dword4x3", "Dword4x4", "Vector", "Volatile", "Void", "While", - "StateObjectConfig", "LocalRootSignature", "GlobalRootSignature", "SubobjectToExportsAssociation", - "RaytracingShaderConfig", "RaytracingPipelineConfig", "RaytracingPipelineConfig1", - "TriangleHitGroup", "ProceduralPrimitiveHitGroup", "ADDRESS_U", "ADDRESS_V", - "ADDRESS_W", "BORDER_COLOR", "MIN_FILTER", "MAG_FILTER", "MIP_FILTER", - "MAX_ANISOTROPY", "MAX_LOD", "MIN_LOD", "MIP_LOD_BIAS", "COMPARISON_FUNC", - "REDUCTION_TYPE", "FILTER_MODE_POINT", "FILTER_MODE_LINEAR", "REDUCTION_TYPE_FILTER", - "REDUCTION_TYPE_COMPARISON", "REDUCTION_TYPE_MINIMUM", "REDUCTION_TYPE_MAXIMUM", - "ADDRESS_MODE_WRAP", "ADDRESS_MODE_MIRROR", "ADDRESS_MODE_CLAMP", "ADDRESS_MODE_BORDER", - "ADDRESS_MODE_MIRROR_ONCE", "COMPARISON_FUNCTION_NEVER", "COMPARISON_FUNCTION_LESS", - "COMPARISON_FUNCTION_EQUAL", "COMPARISON_FUNCTION_LESS_EQUAL", "COMPARISON_FUNCTION_GREATER", - "COMPARISON_FUNCTION_NOT_EQUAL", "COMPARISON_FUNCTION_GREATER_EQUAL", - "COMPARISON_FUNCTION_ALWAYS", "BORDER_COLOR_OPAQUE_BLACK", "BORDER_COLOR_TRANSPARENT_BLACK", - "BORDER_COLOR_OPAQUE_WHITE", "LeftParen", "RightParen", "LeftBracket", - "RightBracket", "LeftBrace", "RightBrace", "LeftDoubleBracket", "Less", - "LessEqual", "Greater", "GreaterEqual", "LeftShift", "RightShift", "Plus", - "PlusPlus", "Minus", "MinusMinus", "Star", "Div", "Mod", "And", "Or", - "AndAnd", "OrOr", "Caret", "Not", "Tilde", "Question", "Colon", "ColonColon", - "Semi", "Comma", "Assign", "StarAssign", "DivAssign", "ModAssign", "PlusAssign", - "MinusAssign", "LeftShiftAssign", "RightShiftAssign", "AndAssign", "XorAssign", - "OrAssign", "Equal", "NotEqual", "Dot", "True", "False", "KW_AssociatedType", - "KW_TypeAlias", "KW_Typedef", "KW_Fundamental", "KW_Typeof", "KW_ext_print_message", - "KW_ext_print_symbol", "KW_ext_prtsym_fully_qualified", "KW_ext_prtsym_least_qualified", - "KW_ext_prtsym_constint_value", "FrequencyId", "ShaderVariantFallback", - "ShaderResourceGroupSemantic", "ShaderResourceGroup", "HLSLSemanticStream", - "HLSLSemanticSystem", "Identifier", "Nondigit", "Digit", "DecimalOrOctalIntegerLiteral", - "HexadecimalIntegerLiteral", "HexadecimalDigit", "FractionalConstant", - "ExponentPart", "Sign", "DigitSequence", "HexadecimalDigitSequence", "IntegerSuffix", - "IntegerLiteral", "FloatingSuffix", "FloatLiteral", "EscapeSequence", - "SimpleEscapeSequence", "StringLiteral", "SCharSequence", "SChar", "PragmaDirective", - "LineDirective", "Whitespace", "Newline", "BlockComment", "LineComment" + "Float4x3", "Float4x4", "For", "Groupshared", "Globallycoherent", "Global", + "Half", "Half1", "Half2", "Half3", "Half4", "Half1x1", "Half1x2", "Half1x3", + "Half1x4", "Half2x1", "Half2x2", "Half2x3", "Half2x4", "Half3x1", "Half3x2", + "Half3x3", "Half3x4", "Half4x1", "Half4x2", "Half4x3", "Half4x4", "If", + "In", "Inline", "Rootconstant", "Inout", "InputPatch", "Int", "Int16_t", + "Int32_t", "Int64_t", "Int1", "Int2", "Int3", "Int4", "Int1x1", "Int1x2", + "Int1x3", "Int1x4", "Int2x1", "Int2x2", "Int2x3", "Int2x4", "Int3x1", + "Int3x2", "Int3x3", "Int3x4", "Int4x1", "Int4x2", "Int4x3", "Int4x4", + "Interface", "Line_", "LineAdj", "Linear", "LineStream", "Long", "Matrix", + "Nointerpolation", "Noperspective", "Option", "Out", "OutputPatch", "Override", + "Partial", "Packoffset", "Point", "PointStream", "Precise", "RasterizerOrderedBuffer", + "RasterizerOrderedByteAddressBuffer", "RasterizerOrderedStructuredBuffer", + "RasterizerOrderedTexture1D", "RasterizerOrderedTexture1DArray", "RasterizerOrderedTexture2D", + "RasterizerOrderedTexture2DArray", "RasterizerOrderedTexture3D", "RayDesc", + "RaytracingAccelerationStructure", "Register", "Return", "RowMajor", "RWBuffer", + "RWByteAddressBuffer", "RWStructuredBuffer", "RWTexture1D", "RWTexture1DArray", + "RWTexture2D", "RWTexture2DArray", "RWTexture3D", "Sample", "Sampler", + "SamplerCapitalS", "SamplerComparisonState", "SamplerStateCamel", "SamplerState", + "Shared", "SNorm", "Static", "Struct", "StructuredBuffer", "SubpassInput", + "SubpassInputMS", "Switch", "TBuffer", "Texture1D", "Texture1DArray", + "Texture2D", "Texture2DArray", "Texture2DMS", "Texture2DMSArray", "Texture3D", + "TextureCube", "TextureCubeArray", "Triangle", "TriangleAdj", "TriangleStream", + "Uniform", "Uint", "Uint1", "Uint2", "Uint3", "Uint4", "Uint1x1", "Uint1x2", + "Uint1x3", "Uint1x4", "Uint2x1", "Uint2x2", "Uint2x3", "Uint2x4", "Uint3x1", + "Uint3x2", "Uint3x3", "Uint3x4", "Uint4x1", "Uint4x2", "Uint4x3", "Uint4x4", + "Uint16_t", "Uint32_t", "Uint64_t", "UNorm", "Unsigned", "Dword", "Dword1", + "Dword2", "Dword3", "Dword4", "Dword1x1", "Dword1x2", "Dword1x3", "Dword1x4", + "Dword2x1", "Dword2x2", "Dword2x3", "Dword2x4", "Dword3x1", "Dword3x2", + "Dword3x3", "Dword3x4", "Dword4x1", "Dword4x2", "Dword4x3", "Dword4x4", + "Vector", "Volatile", "Void", "While", "StateObjectConfig", "LocalRootSignature", + "GlobalRootSignature", "SubobjectToExportsAssociation", "RaytracingShaderConfig", + "RaytracingPipelineConfig", "RaytracingPipelineConfig1", "TriangleHitGroup", + "ProceduralPrimitiveHitGroup", "ADDRESS_U", "ADDRESS_V", "ADDRESS_W", + "BORDER_COLOR", "MIN_FILTER", "MAG_FILTER", "MIP_FILTER", "MAX_ANISOTROPY", + "MAX_LOD", "MIN_LOD", "MIP_LOD_BIAS", "COMPARISON_FUNC", "REDUCTION_TYPE", + "FILTER_MODE_POINT", "FILTER_MODE_LINEAR", "REDUCTION_TYPE_FILTER", "REDUCTION_TYPE_COMPARISON", + "REDUCTION_TYPE_MINIMUM", "REDUCTION_TYPE_MAXIMUM", "ADDRESS_MODE_WRAP", + "ADDRESS_MODE_MIRROR", "ADDRESS_MODE_CLAMP", "ADDRESS_MODE_BORDER", "ADDRESS_MODE_MIRROR_ONCE", + "COMPARISON_FUNCTION_NEVER", "COMPARISON_FUNCTION_LESS", "COMPARISON_FUNCTION_EQUAL", + "COMPARISON_FUNCTION_LESS_EQUAL", "COMPARISON_FUNCTION_GREATER", "COMPARISON_FUNCTION_NOT_EQUAL", + "COMPARISON_FUNCTION_GREATER_EQUAL", "COMPARISON_FUNCTION_ALWAYS", "BORDER_COLOR_OPAQUE_BLACK", + "BORDER_COLOR_TRANSPARENT_BLACK", "BORDER_COLOR_OPAQUE_WHITE", "LeftParen", + "RightParen", "LeftBracket", "RightBracket", "LeftBrace", "RightBrace", + "LeftDoubleBracket", "Less", "LessEqual", "Greater", "GreaterEqual", "LeftShift", + "RightShift", "Plus", "PlusPlus", "Minus", "MinusMinus", "Star", "Div", + "Mod", "And", "Or", "AndAnd", "OrOr", "Caret", "Not", "Tilde", "Question", + "Colon", "ColonColon", "Semi", "Comma", "Assign", "StarAssign", "DivAssign", + "ModAssign", "PlusAssign", "MinusAssign", "LeftShiftAssign", "RightShiftAssign", + "AndAssign", "XorAssign", "OrAssign", "Equal", "NotEqual", "Dot", "True", + "False", "KW_AssociatedType", "KW_TypeAlias", "KW_Typedef", "KW_Fundamental", + "KW_Typeof", "FrequencyId", "ShaderVariantFallback", "ShaderResourceGroupSemantic", + "ShaderResourceGroup", "KW_ext_print_message", "KW_ext_print_symbol", + "KW_ext_prtsym_fully_qualified", "KW_ext_prtsym_least_qualified", "KW_ext_prtsym_constint_value", + "HLSLSemanticStream", "HLSLSemanticSystem", "Identifier", "Nondigit", + "Digit", "DecimalOrOctalIntegerLiteral", "HexadecimalIntegerLiteral", + "HexadecimalDigit", "FractionalConstant", "ExponentPart", "Sign", "DigitSequence", + "HexadecimalDigitSequence", "IntegerSuffix", "IntegerLiteral", "FloatingSuffix", + "FloatLiteral", "EscapeSequence", "SimpleEscapeSequence", "StringLiteral", + "SCharSequence", "SChar", "PragmaDirective", "LineDirective", "Whitespace", + "Newline", "BlockComment", "LineComment" }; std::vector azslLexer::_channelNames = { - "DEFAULT_TOKEN_CHANNEL", "HIDDEN", "PREPROCESSOR" + "DEFAULT_TOKEN_CHANNEL", "HIDDEN", "PREPROCESSOR", "COMMENTS" }; std::vector azslLexer::_modeNames = { @@ -148,46 +150,47 @@ std::vector azslLexer::_literalNames = { "'bool2x2'", "'bool2x3'", "'bool2x4'", "'bool3x1'", "'bool3x2'", "'bool3x3'", "'bool3x4'", "'bool4x1'", "'bool4x2'", "'bool4x3'", "'bool4x4'", "'Buffer'", "'BuiltInTriangleIntersectionAttributes'", "'ByteAddressBuffer'", "'break'", - "'case'", "'cbuffer'", "'constantbuffer'", "'ConstantBuffer'", "'centroid'", + "'case'", "'cbuffer'", "'centroid'", "'constantbuffer'", "'ConstantBuffer'", "'class'", "'column_major'", "'const'", "'ConsumeStructuredBuffer'", "'continue'", "'default'", "'discard'", "'do'", "'double'", "'double1'", "'double2'", "'double3'", "'double4'", "'double1x1'", "'double1x2'", "'double1x3'", "'double1x4'", "'double2x1'", "'double2x2'", "'double2x3'", "'double2x4'", "'double3x1'", "'double3x2'", "'double3x3'", "'double3x4'", "'double4x1'", - "'double4x2'", "'double4x3'", "'double4x4'", "'else'", "'enum'", "'extern'", - "'FeedbackTexture2D'", "'FeedbackTexture2DArray'", "'float'", "'float1'", - "'float2'", "'float3'", "'float4'", "'float1x1'", "'float1x2'", "'float1x3'", - "'float1x4'", "'float2x1'", "'float2x2'", "'float2x3'", "'float2x4'", - "'float3x1'", "'float3x2'", "'float3x3'", "'float3x4'", "'float4x1'", - "'float4x2'", "'float4x3'", "'float4x4'", "'for'", "'groupshared'", "'global'", - "'half'", "'half1'", "'half2'", "'half3'", "'half4'", "'half1x1'", "'half1x2'", - "'half1x3'", "'half1x4'", "'half2x1'", "'half2x2'", "'half2x3'", "'half2x4'", - "'half3x1'", "'half3x2'", "'half3x3'", "'half3x4'", "'half4x1'", "'half4x2'", - "'half4x3'", "'half4x4'", "'if'", "'in'", "'inline'", "'rootconstant'", - "", "'InputPatch'", "'int'", "'int32_t'", "'int64_t'", "'int1'", "'int2'", - "'int3'", "'int4'", "'int1x1'", "'int1x2'", "'int1x3'", "'int1x4'", "'int2x1'", - "'int2x2'", "'int2x3'", "'int2x4'", "'int3x1'", "'int3x2'", "'int3x3'", - "'int3x4'", "'int4x1'", "'int4x2'", "'int4x3'", "'int4x4'", "'interface'", - "'line'", "'lineadj'", "'linear'", "'LineStream'", "'long'", "'matrix'", - "'nointerpolation'", "'noperspective'", "'option'", "'out'", "'OutputPatch'", - "'override'", "'partial'", "'packoffset'", "'point'", "'PointStream'", - "'precise'", "'RasterizerOrderedBuffer'", "'RasterizerOrderedByteAddressBuffer'", - "'RasterizerOrderedStructuredBuffer'", "'RasterizerOrderedTexture1D'", - "'RasterizerOrderedTexture1DArray'", "'RasterizerOrderedTexture2D'", "'RasterizerOrderedTexture2DArray'", - "'RasterizerOrderedTexture3D'", "'RayDesc'", "'RaytracingAccelerationStructure'", - "'register'", "'return'", "'row_major'", "'RWBuffer'", "'RWByteAddressBuffer'", - "'RWStructuredBuffer'", "'RWTexture1D'", "'RWTexture1DArray'", "'RWTexture2D'", - "'RWTexture2DArray'", "'RWTexture3D'", "'sample'", "'sampler'", "'Sampler'", - "'SamplerComparisonState'", "'SamplerState'", "'shared'", "'static'", - "'struct'", "'StructuredBuffer'", "'SubpassInput'", "'SubpassInputMS'", - "'switch'", "'Texture1D'", "'Texture1DArray'", "'Texture2D'", "'Texture2DArray'", - "'Texture2DMS'", "'Texture2DMSArray'", "'Texture3D'", "'TextureCube'", - "'TextureCubeArray'", "'triangle'", "'triangleadj'", "'TriangleStream'", - "'uniform'", "'uint'", "'uint32_t'", "'uint64_t'", "'unsigned int'", "'uint1'", - "'uint2'", "'uint3'", "'uint4'", "'uint1x1'", "'uint1x2'", "'uint1x3'", - "'uint1x4'", "'uint2x1'", "'uint2x2'", "'uint2x3'", "'uint2x4'", "'uint3x1'", - "'uint3x2'", "'uint3x3'", "'uint3x4'", "'uint4x1'", "'uint4x2'", "'uint4x3'", - "'uint4x4'", "'dword'", "'dword1'", "'dword2'", "'dword3'", "'dword4'", + "'double4x2'", "'double4x3'", "'double4x4'", "'else'", "'enum'", "'export'", + "'extern'", "'FeedbackTexture2D'", "'FeedbackTexture2DArray'", "'float'", + "'float1'", "'float2'", "'float3'", "'float4'", "'float1x1'", "'float1x2'", + "'float1x3'", "'float1x4'", "'float2x1'", "'float2x2'", "'float2x3'", + "'float2x4'", "'float3x1'", "'float3x2'", "'float3x3'", "'float3x4'", + "'float4x1'", "'float4x2'", "'float4x3'", "'float4x4'", "'for'", "'groupshared'", + "'globallycoherent'", "'global'", "'half'", "'half1'", "'half2'", "'half3'", + "'half4'", "'half1x1'", "'half1x2'", "'half1x3'", "'half1x4'", "'half2x1'", + "'half2x2'", "'half2x3'", "'half2x4'", "'half3x1'", "'half3x2'", "'half3x3'", + "'half3x4'", "'half4x1'", "'half4x2'", "'half4x3'", "'half4x4'", "'if'", + "'in'", "'inline'", "'rootconstant'", "", "'InputPatch'", "'int'", "'int16_t'", + "'int32_t'", "'int64_t'", "'int1'", "'int2'", "'int3'", "'int4'", "'int1x1'", + "'int1x2'", "'int1x3'", "'int1x4'", "'int2x1'", "'int2x2'", "'int2x3'", + "'int2x4'", "'int3x1'", "'int3x2'", "'int3x3'", "'int3x4'", "'int4x1'", + "'int4x2'", "'int4x3'", "'int4x4'", "'interface'", "'line'", "'lineadj'", + "'linear'", "'LineStream'", "'long'", "'matrix'", "'nointerpolation'", + "'noperspective'", "'option'", "'out'", "'OutputPatch'", "'override'", + "'partial'", "'packoffset'", "'point'", "'PointStream'", "'precise'", + "'RasterizerOrderedBuffer'", "'RasterizerOrderedByteAddressBuffer'", "'RasterizerOrderedStructuredBuffer'", + "'RasterizerOrderedTexture1D'", "'RasterizerOrderedTexture1DArray'", "'RasterizerOrderedTexture2D'", + "'RasterizerOrderedTexture2DArray'", "'RasterizerOrderedTexture3D'", "'RayDesc'", + "'RaytracingAccelerationStructure'", "'register'", "'return'", "'row_major'", + "'RWBuffer'", "'RWByteAddressBuffer'", "'RWStructuredBuffer'", "'RWTexture1D'", + "'RWTexture1DArray'", "'RWTexture2D'", "'RWTexture2DArray'", "'RWTexture3D'", + "'sample'", "'sampler'", "'Sampler'", "'SamplerComparisonState'", "'SamplerState'", + "'sampler_state'", "'shared'", "'snorm'", "'static'", "'struct'", "'StructuredBuffer'", + "'SubpassInput'", "'SubpassInputMS'", "'switch'", "'tbuffer'", "'Texture1D'", + "'Texture1DArray'", "'Texture2D'", "'Texture2DArray'", "'Texture2DMS'", + "'Texture2DMSArray'", "'Texture3D'", "'TextureCube'", "'TextureCubeArray'", + "'triangle'", "'triangleadj'", "'TriangleStream'", "'uniform'", "'uint'", + "'uint1'", "'uint2'", "'uint3'", "'uint4'", "'uint1x1'", "'uint1x2'", + "'uint1x3'", "'uint1x4'", "'uint2x1'", "'uint2x2'", "'uint2x3'", "'uint2x4'", + "'uint3x1'", "'uint3x2'", "'uint3x3'", "'uint3x4'", "'uint4x1'", "'uint4x2'", + "'uint4x3'", "'uint4x4'", "'uint16_t'", "'uint32_t'", "'uint64_t'", "'unorm'", + "'unsigned'", "'dword'", "'dword1'", "'dword2'", "'dword3'", "'dword4'", "'dword1x1'", "'dword1x2'", "'dword1x3'", "'dword1x4'", "'dword2x1'", "'dword2x2'", "'dword2x3'", "'dword2x4'", "'dword3x1'", "'dword3x2'", "'dword3x3'", "'dword3x4'", "'dword4x1'", "'dword4x2'", "'dword4x3'", @@ -207,10 +210,10 @@ std::vector azslLexer::_literalNames = { "':'", "'::'", "';'", "','", "'='", "'*='", "'/='", "'%='", "'+='", "'-='", "'<<='", "'>>='", "'&='", "'^='", "'|='", "'=='", "'!='", "'.'", "'true'", "'false'", "'associatedtype'", "'typealias'", "'typedef'", "'fundamental'", - "'typeof'", "'__azslc_print_message'", "'__azslc_print_symbol'", "'__azslc_prtsym_fully_qualified'", - "'__azslc_prtsym_least_qualified'", "'__azslc_prtsym_constint_value'", - "'FrequencyId'", "'ShaderVariantFallback'", "'ShaderResourceGroupSemantic'", - "'ShaderResourceGroup'" + "'typeof'", "'FrequencyId'", "'ShaderVariantFallback'", "'ShaderResourceGroupSemantic'", + "'ShaderResourceGroup'", "'__azslc_print_message'", "'__azslc_print_symbol'", + "'__azslc_prtsym_fully_qualified'", "'__azslc_prtsym_least_qualified'", + "'__azslc_prtsym_constint_value'" }; std::vector azslLexer::_symbolicNames = { @@ -218,71 +221,72 @@ std::vector azslLexer::_symbolicNames = { "Bool1x1", "Bool1x2", "Bool1x3", "Bool1x4", "Bool2x1", "Bool2x2", "Bool2x3", "Bool2x4", "Bool3x1", "Bool3x2", "Bool3x3", "Bool3x4", "Bool4x1", "Bool4x2", "Bool4x3", "Bool4x4", "Buffer", "BuiltInTriangleIntersectionAttributes", - "ByteAddressBuffer", "Break", "Case", "CBuffer", "ConstantBuffer", "ConstantBufferCamel", - "Centroid", "Class", "ColumnMajor", "Const", "ConsumeStructuredBuffer", + "ByteAddressBuffer", "Break", "Case", "CBuffer", "Centroid", "ConstantBuffer", + "ConstantBufferCamel", "Class", "ColumnMajor", "Const", "ConsumeStructuredBuffer", "Continue", "Default", "Discard", "Do", "Double", "Double1", "Double2", "Double3", "Double4", "Double1x1", "Double1x2", "Double1x3", "Double1x4", "Double2x1", "Double2x2", "Double2x3", "Double2x4", "Double3x1", "Double3x2", "Double3x3", "Double3x4", "Double4x1", "Double4x2", "Double4x3", "Double4x4", - "Else", "Enum", "Extern", "FeedbackTexture2D", "FeedbackTexture2DArray", + "Else", "Enum", "Export", "Extern", "FeedbackTexture2D", "FeedbackTexture2DArray", "Float", "Float1", "Float2", "Float3", "Float4", "Float1x1", "Float1x2", "Float1x3", "Float1x4", "Float2x1", "Float2x2", "Float2x3", "Float2x4", "Float3x1", "Float3x2", "Float3x3", "Float3x4", "Float4x1", "Float4x2", - "Float4x3", "Float4x4", "For", "Groupshared", "Global", "Half", "Half1", - "Half2", "Half3", "Half4", "Half1x1", "Half1x2", "Half1x3", "Half1x4", - "Half2x1", "Half2x2", "Half2x3", "Half2x4", "Half3x1", "Half3x2", "Half3x3", - "Half3x4", "Half4x1", "Half4x2", "Half4x3", "Half4x4", "If", "In", "Inline", - "Rootconstant", "Inout", "InputPatch", "Int", "Int32_t", "Int64_t", "Int1", - "Int2", "Int3", "Int4", "Int1x1", "Int1x2", "Int1x3", "Int1x4", "Int2x1", - "Int2x2", "Int2x3", "Int2x4", "Int3x1", "Int3x2", "Int3x3", "Int3x4", - "Int4x1", "Int4x2", "Int4x3", "Int4x4", "Interface", "Line_", "LineAdj", - "Linear", "LineStream", "Long", "Matrix", "Nointerpolation", "Noperspective", - "Option", "Out", "OutputPatch", "Override", "Partial", "Packoffset", "Point", - "PointStream", "Precise", "RasterizerOrderedBuffer", "RasterizerOrderedByteAddressBuffer", - "RasterizerOrderedStructuredBuffer", "RasterizerOrderedTexture1D", "RasterizerOrderedTexture1DArray", - "RasterizerOrderedTexture2D", "RasterizerOrderedTexture2DArray", "RasterizerOrderedTexture3D", - "RayDesc", "RaytracingAccelerationStructure", "Register", "Return", "RowMajor", - "RWBuffer", "RWByteAddressBuffer", "RWStructuredBuffer", "RWTexture1D", - "RWTexture1DArray", "RWTexture2D", "RWTexture2DArray", "RWTexture3D", - "Sample", "Sampler", "SamplerCapitalS", "SamplerComparisonState", "SamplerState", - "Shared", "Static", "Struct", "StructuredBuffer", "SubpassInput", "SubpassInputMS", - "Switch", "Texture1D", "Texture1DArray", "Texture2D", "Texture2DArray", - "Texture2DMS", "Texture2DMSArray", "Texture3D", "TextureCube", "TextureCubeArray", - "Triangle", "TriangleAdj", "TriangleStream", "Uniform", "Uint", "Uint32_t", - "Uint64_t", "UnsignedInt", "Uint1", "Uint2", "Uint3", "Uint4", "Uint1x1", - "Uint1x2", "Uint1x3", "Uint1x4", "Uint2x1", "Uint2x2", "Uint2x3", "Uint2x4", - "Uint3x1", "Uint3x2", "Uint3x3", "Uint3x4", "Uint4x1", "Uint4x2", "Uint4x3", - "Uint4x4", "Dword", "Dword1", "Dword2", "Dword3", "Dword4", "Dword1x1", - "Dword1x2", "Dword1x3", "Dword1x4", "Dword2x1", "Dword2x2", "Dword2x3", - "Dword2x4", "Dword3x1", "Dword3x2", "Dword3x3", "Dword3x4", "Dword4x1", - "Dword4x2", "Dword4x3", "Dword4x4", "Vector", "Volatile", "Void", "While", - "StateObjectConfig", "LocalRootSignature", "GlobalRootSignature", "SubobjectToExportsAssociation", - "RaytracingShaderConfig", "RaytracingPipelineConfig", "RaytracingPipelineConfig1", - "TriangleHitGroup", "ProceduralPrimitiveHitGroup", "ADDRESS_U", "ADDRESS_V", - "ADDRESS_W", "BORDER_COLOR", "MIN_FILTER", "MAG_FILTER", "MIP_FILTER", - "MAX_ANISOTROPY", "MAX_LOD", "MIN_LOD", "MIP_LOD_BIAS", "COMPARISON_FUNC", - "REDUCTION_TYPE", "FILTER_MODE_POINT", "FILTER_MODE_LINEAR", "REDUCTION_TYPE_FILTER", - "REDUCTION_TYPE_COMPARISON", "REDUCTION_TYPE_MINIMUM", "REDUCTION_TYPE_MAXIMUM", - "ADDRESS_MODE_WRAP", "ADDRESS_MODE_MIRROR", "ADDRESS_MODE_CLAMP", "ADDRESS_MODE_BORDER", - "ADDRESS_MODE_MIRROR_ONCE", "COMPARISON_FUNCTION_NEVER", "COMPARISON_FUNCTION_LESS", - "COMPARISON_FUNCTION_EQUAL", "COMPARISON_FUNCTION_LESS_EQUAL", "COMPARISON_FUNCTION_GREATER", - "COMPARISON_FUNCTION_NOT_EQUAL", "COMPARISON_FUNCTION_GREATER_EQUAL", - "COMPARISON_FUNCTION_ALWAYS", "BORDER_COLOR_OPAQUE_BLACK", "BORDER_COLOR_TRANSPARENT_BLACK", - "BORDER_COLOR_OPAQUE_WHITE", "LeftParen", "RightParen", "LeftBracket", - "RightBracket", "LeftBrace", "RightBrace", "LeftDoubleBracket", "Less", - "LessEqual", "Greater", "GreaterEqual", "LeftShift", "RightShift", "Plus", - "PlusPlus", "Minus", "MinusMinus", "Star", "Div", "Mod", "And", "Or", - "AndAnd", "OrOr", "Caret", "Not", "Tilde", "Question", "Colon", "ColonColon", - "Semi", "Comma", "Assign", "StarAssign", "DivAssign", "ModAssign", "PlusAssign", - "MinusAssign", "LeftShiftAssign", "RightShiftAssign", "AndAssign", "XorAssign", - "OrAssign", "Equal", "NotEqual", "Dot", "True", "False", "KW_AssociatedType", - "KW_TypeAlias", "KW_Typedef", "KW_Fundamental", "KW_Typeof", "KW_ext_print_message", - "KW_ext_print_symbol", "KW_ext_prtsym_fully_qualified", "KW_ext_prtsym_least_qualified", - "KW_ext_prtsym_constint_value", "FrequencyId", "ShaderVariantFallback", - "ShaderResourceGroupSemantic", "ShaderResourceGroup", "HLSLSemanticStream", - "HLSLSemanticSystem", "Identifier", "IntegerLiteral", "FloatLiteral", - "StringLiteral", "PragmaDirective", "LineDirective", "Whitespace", "Newline", - "BlockComment", "LineComment" + "Float4x3", "Float4x4", "For", "Groupshared", "Globallycoherent", "Global", + "Half", "Half1", "Half2", "Half3", "Half4", "Half1x1", "Half1x2", "Half1x3", + "Half1x4", "Half2x1", "Half2x2", "Half2x3", "Half2x4", "Half3x1", "Half3x2", + "Half3x3", "Half3x4", "Half4x1", "Half4x2", "Half4x3", "Half4x4", "If", + "In", "Inline", "Rootconstant", "Inout", "InputPatch", "Int", "Int16_t", + "Int32_t", "Int64_t", "Int1", "Int2", "Int3", "Int4", "Int1x1", "Int1x2", + "Int1x3", "Int1x4", "Int2x1", "Int2x2", "Int2x3", "Int2x4", "Int3x1", + "Int3x2", "Int3x3", "Int3x4", "Int4x1", "Int4x2", "Int4x3", "Int4x4", + "Interface", "Line_", "LineAdj", "Linear", "LineStream", "Long", "Matrix", + "Nointerpolation", "Noperspective", "Option", "Out", "OutputPatch", "Override", + "Partial", "Packoffset", "Point", "PointStream", "Precise", "RasterizerOrderedBuffer", + "RasterizerOrderedByteAddressBuffer", "RasterizerOrderedStructuredBuffer", + "RasterizerOrderedTexture1D", "RasterizerOrderedTexture1DArray", "RasterizerOrderedTexture2D", + "RasterizerOrderedTexture2DArray", "RasterizerOrderedTexture3D", "RayDesc", + "RaytracingAccelerationStructure", "Register", "Return", "RowMajor", "RWBuffer", + "RWByteAddressBuffer", "RWStructuredBuffer", "RWTexture1D", "RWTexture1DArray", + "RWTexture2D", "RWTexture2DArray", "RWTexture3D", "Sample", "Sampler", + "SamplerCapitalS", "SamplerComparisonState", "SamplerStateCamel", "SamplerState", + "Shared", "SNorm", "Static", "Struct", "StructuredBuffer", "SubpassInput", + "SubpassInputMS", "Switch", "TBuffer", "Texture1D", "Texture1DArray", + "Texture2D", "Texture2DArray", "Texture2DMS", "Texture2DMSArray", "Texture3D", + "TextureCube", "TextureCubeArray", "Triangle", "TriangleAdj", "TriangleStream", + "Uniform", "Uint", "Uint1", "Uint2", "Uint3", "Uint4", "Uint1x1", "Uint1x2", + "Uint1x3", "Uint1x4", "Uint2x1", "Uint2x2", "Uint2x3", "Uint2x4", "Uint3x1", + "Uint3x2", "Uint3x3", "Uint3x4", "Uint4x1", "Uint4x2", "Uint4x3", "Uint4x4", + "Uint16_t", "Uint32_t", "Uint64_t", "UNorm", "Unsigned", "Dword", "Dword1", + "Dword2", "Dword3", "Dword4", "Dword1x1", "Dword1x2", "Dword1x3", "Dword1x4", + "Dword2x1", "Dword2x2", "Dword2x3", "Dword2x4", "Dword3x1", "Dword3x2", + "Dword3x3", "Dword3x4", "Dword4x1", "Dword4x2", "Dword4x3", "Dword4x4", + "Vector", "Volatile", "Void", "While", "StateObjectConfig", "LocalRootSignature", + "GlobalRootSignature", "SubobjectToExportsAssociation", "RaytracingShaderConfig", + "RaytracingPipelineConfig", "RaytracingPipelineConfig1", "TriangleHitGroup", + "ProceduralPrimitiveHitGroup", "ADDRESS_U", "ADDRESS_V", "ADDRESS_W", + "BORDER_COLOR", "MIN_FILTER", "MAG_FILTER", "MIP_FILTER", "MAX_ANISOTROPY", + "MAX_LOD", "MIN_LOD", "MIP_LOD_BIAS", "COMPARISON_FUNC", "REDUCTION_TYPE", + "FILTER_MODE_POINT", "FILTER_MODE_LINEAR", "REDUCTION_TYPE_FILTER", "REDUCTION_TYPE_COMPARISON", + "REDUCTION_TYPE_MINIMUM", "REDUCTION_TYPE_MAXIMUM", "ADDRESS_MODE_WRAP", + "ADDRESS_MODE_MIRROR", "ADDRESS_MODE_CLAMP", "ADDRESS_MODE_BORDER", "ADDRESS_MODE_MIRROR_ONCE", + "COMPARISON_FUNCTION_NEVER", "COMPARISON_FUNCTION_LESS", "COMPARISON_FUNCTION_EQUAL", + "COMPARISON_FUNCTION_LESS_EQUAL", "COMPARISON_FUNCTION_GREATER", "COMPARISON_FUNCTION_NOT_EQUAL", + "COMPARISON_FUNCTION_GREATER_EQUAL", "COMPARISON_FUNCTION_ALWAYS", "BORDER_COLOR_OPAQUE_BLACK", + "BORDER_COLOR_TRANSPARENT_BLACK", "BORDER_COLOR_OPAQUE_WHITE", "LeftParen", + "RightParen", "LeftBracket", "RightBracket", "LeftBrace", "RightBrace", + "LeftDoubleBracket", "Less", "LessEqual", "Greater", "GreaterEqual", "LeftShift", + "RightShift", "Plus", "PlusPlus", "Minus", "MinusMinus", "Star", "Div", + "Mod", "And", "Or", "AndAnd", "OrOr", "Caret", "Not", "Tilde", "Question", + "Colon", "ColonColon", "Semi", "Comma", "Assign", "StarAssign", "DivAssign", + "ModAssign", "PlusAssign", "MinusAssign", "LeftShiftAssign", "RightShiftAssign", + "AndAssign", "XorAssign", "OrAssign", "Equal", "NotEqual", "Dot", "True", + "False", "KW_AssociatedType", "KW_TypeAlias", "KW_Typedef", "KW_Fundamental", + "KW_Typeof", "FrequencyId", "ShaderVariantFallback", "ShaderResourceGroupSemantic", + "ShaderResourceGroup", "KW_ext_print_message", "KW_ext_print_symbol", + "KW_ext_prtsym_fully_qualified", "KW_ext_prtsym_least_qualified", "KW_ext_prtsym_constint_value", + "HLSLSemanticStream", "HLSLSemanticSystem", "Identifier", "IntegerLiteral", + "FloatLiteral", "StringLiteral", "PragmaDirective", "LineDirective", "Whitespace", + "Newline", "BlockComment", "LineComment" }; dfa::Vocabulary azslLexer::_vocabulary(_literalNames, _symbolicNames); @@ -306,7 +310,7 @@ azslLexer::Initializer::Initializer() { static const uint16_t serializedATNSegment0[] = { 0x3, 0x608b, 0xa72a, 0x8133, 0xb9ed, 0x417c, 0x3be7, 0x7786, 0x5964, - 0x2, 0x174, 0x1214, 0x8, 0x1, 0x4, 0x2, 0x9, 0x2, 0x4, 0x3, 0x9, + 0x2, 0x17c, 0x126b, 0x8, 0x1, 0x4, 0x2, 0x9, 0x2, 0x4, 0x3, 0x9, 0x3, 0x4, 0x4, 0x9, 0x4, 0x4, 0x5, 0x9, 0x5, 0x4, 0x6, 0x9, 0x6, 0x4, 0x7, 0x9, 0x7, 0x4, 0x8, 0x9, 0x8, 0x4, 0x9, 0x9, 0x9, 0x4, 0xa, 0x9, 0xa, 0x4, 0xb, 0x9, 0xb, 0x4, 0xc, 0x9, 0xc, 0x4, 0xd, @@ -438,3121 +442,3185 @@ azslLexer::Initializer::Initializer() { 0x179, 0x4, 0x17a, 0x9, 0x17a, 0x4, 0x17b, 0x9, 0x17b, 0x4, 0x17c, 0x9, 0x17c, 0x4, 0x17d, 0x9, 0x17d, 0x4, 0x17e, 0x9, 0x17e, 0x4, 0x17f, 0x9, 0x17f, 0x4, 0x180, 0x9, 0x180, 0x4, 0x181, 0x9, 0x181, - 0x4, 0x182, 0x9, 0x182, 0x4, 0x183, 0x9, 0x183, 0x3, 0x2, 0x3, 0x2, - 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, + 0x4, 0x182, 0x9, 0x182, 0x4, 0x183, 0x9, 0x183, 0x4, 0x184, 0x9, + 0x184, 0x4, 0x185, 0x9, 0x185, 0x4, 0x186, 0x9, 0x186, 0x4, 0x187, + 0x9, 0x187, 0x4, 0x188, 0x9, 0x188, 0x4, 0x189, 0x9, 0x189, 0x4, + 0x18a, 0x9, 0x18a, 0x4, 0x18b, 0x9, 0x18b, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, - 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, - 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, - 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x6, - 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x7, 0x3, - 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x8, 0x3, 0x8, - 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, - 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, - 0x3, 0x9, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, - 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, - 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xc, 0x3, 0xc, 0x3, - 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xd, - 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, - 0xd, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, - 0x3, 0xe, 0x3, 0xe, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, - 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, - 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x11, - 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, - 0x3, 0x11, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, - 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, - 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x14, - 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, - 0x3, 0x14, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, - 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, - 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x17, - 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, - 0x3, 0x17, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, - 0x3, 0x18, 0x3, 0x18, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, - 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, - 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, - 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, - 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, - 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, - 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x1a, 0x3, 0x1a, - 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, - 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, - 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1b, 0x3, 0x1b, - 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1c, 0x3, 0x1c, - 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1d, - 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1e, - 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, - 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, - 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, - 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, - 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x20, - 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, - 0x3, 0x20, 0x3, 0x20, 0x3, 0x21, 0x3, 0x21, 0x3, 0x21, 0x3, 0x21, - 0x3, 0x21, 0x3, 0x21, 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, - 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, - 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, 0x3, 0x23, 0x3, 0x23, 0x3, 0x23, - 0x3, 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, - 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, - 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, - 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, - 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, - 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, - 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, - 0x3, 0x26, 0x3, 0x26, 0x3, 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, 0x27, - 0x3, 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, 0x28, 0x3, 0x28, - 0x3, 0x28, 0x3, 0x29, 0x3, 0x29, 0x3, 0x29, 0x3, 0x29, 0x3, 0x29, - 0x3, 0x29, 0x3, 0x29, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, - 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2b, 0x3, 0x2b, - 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, - 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, - 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, - 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2e, 0x3, 0x2e, - 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, - 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, - 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, - 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, - 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x31, 0x3, 0x31, - 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, - 0x3, 0x31, 0x3, 0x31, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, - 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, - 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, - 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x34, 0x3, 0x34, - 0x3, 0x34, 0x3, 0x34, 0x3, 0x34, 0x3, 0x34, 0x3, 0x34, 0x3, 0x34, - 0x3, 0x34, 0x3, 0x34, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, - 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, - 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, - 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, 0x37, 0x3, 0x37, - 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, - 0x3, 0x37, 0x3, 0x37, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, - 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, - 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, - 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x3a, 0x3, 0x3a, - 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, - 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, - 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, - 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, - 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3d, 0x3, 0x3d, - 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, - 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3e, - 0x3, 0x3e, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, - 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, - 0x3, 0x40, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, - 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, - 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, - 0x3, 0x41, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, - 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, - 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, - 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, - 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, - 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, - 0x3, 0x44, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, - 0x3, 0x45, 0x3, 0x45, 0x3, 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, 0x46, - 0x3, 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, 0x47, 0x3, 0x47, 0x3, 0x47, - 0x3, 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, 0x48, 0x3, 0x48, - 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, - 0x3, 0x48, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, - 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x4a, 0x3, 0x4a, - 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, - 0x3, 0x4a, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, - 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4c, 0x3, 0x4c, - 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, - 0x3, 0x4c, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, - 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4e, 0x3, 0x4e, - 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, - 0x3, 0x4e, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, - 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x50, 0x3, 0x50, - 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, - 0x3, 0x50, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, - 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x52, 0x3, 0x52, - 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, - 0x3, 0x52, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, - 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x54, 0x3, 0x54, - 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, - 0x3, 0x54, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, - 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x56, 0x3, 0x56, - 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, - 0x3, 0x56, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, - 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x58, 0x3, 0x58, - 0x3, 0x58, 0x3, 0x58, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, - 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, - 0x3, 0x59, 0x3, 0x59, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, - 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, - 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, - 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, - 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5e, - 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, - 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, - 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x61, 0x3, 0x61, - 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, - 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, - 0x3, 0x62, 0x3, 0x62, 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, - 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, 0x64, 0x3, 0x64, - 0x3, 0x64, 0x3, 0x64, 0x3, 0x64, 0x3, 0x64, 0x3, 0x64, 0x3, 0x64, - 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, - 0x3, 0x65, 0x3, 0x65, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, - 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x67, 0x3, 0x67, - 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, - 0x3, 0x68, 0x3, 0x68, 0x3, 0x68, 0x3, 0x68, 0x3, 0x68, 0x3, 0x68, - 0x3, 0x68, 0x3, 0x68, 0x3, 0x69, 0x3, 0x69, 0x3, 0x69, 0x3, 0x69, - 0x3, 0x69, 0x3, 0x69, 0x3, 0x69, 0x3, 0x69, 0x3, 0x6a, 0x3, 0x6a, - 0x3, 0x6a, 0x3, 0x6a, 0x3, 0x6a, 0x3, 0x6a, 0x3, 0x6a, 0x3, 0x6a, - 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, - 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, - 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6d, 0x3, 0x6d, - 0x3, 0x6d, 0x3, 0x6d, 0x3, 0x6d, 0x3, 0x6d, 0x3, 0x6d, 0x3, 0x6d, - 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6e, - 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, - 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x70, 0x3, 0x70, - 0x3, 0x70, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x72, 0x3, 0x72, - 0x3, 0x72, 0x3, 0x72, 0x3, 0x72, 0x3, 0x72, 0x3, 0x72, 0x3, 0x73, - 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, - 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, - 0x3, 0x74, 0x3, 0x74, 0x3, 0x74, 0x3, 0x74, 0x3, 0x74, 0x3, 0x74, - 0x3, 0x74, 0x3, 0x74, 0x3, 0x74, 0x3, 0x74, 0x3, 0x74, 0x5, 0x74, - 0x70e, 0xa, 0x74, 0x3, 0x75, 0x3, 0x75, 0x3, 0x75, 0x3, 0x75, 0x3, + 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, + 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, + 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x5, + 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x6, 0x3, + 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x7, 0x3, 0x7, + 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x8, 0x3, 0x8, 0x3, + 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x9, + 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, + 0x9, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, + 0x3, 0xa, 0x3, 0xa, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, + 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, + 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xd, 0x3, + 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, + 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, + 0xe, 0x3, 0xe, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, + 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, + 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x11, 0x3, + 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, + 0x11, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, + 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, + 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x14, 0x3, + 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, + 0x14, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, + 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, + 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x17, 0x3, + 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, + 0x17, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, + 0x18, 0x3, 0x18, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, + 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, + 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, + 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, + 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, + 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, + 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x1a, 0x3, 0x1a, 0x3, + 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, + 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, + 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1b, 0x3, 0x1b, 0x3, + 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1c, 0x3, 0x1c, 0x3, + 0x1c, 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, + 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1e, 0x3, + 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x3, + 0x1e, 0x3, 0x1e, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, + 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, + 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x20, 0x3, + 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, + 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, + 0x20, 0x3, 0x20, 0x3, 0x21, 0x3, 0x21, 0x3, 0x21, 0x3, 0x21, 0x3, + 0x21, 0x3, 0x21, 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, 0x3, + 0x22, 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, 0x3, + 0x22, 0x3, 0x22, 0x3, 0x22, 0x3, 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, + 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, + 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, + 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, + 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, + 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, + 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, + 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, + 0x26, 0x3, 0x26, 0x3, 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, + 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, 0x28, 0x3, 0x28, 0x3, + 0x28, 0x3, 0x29, 0x3, 0x29, 0x3, 0x29, 0x3, 0x29, 0x3, 0x29, 0x3, + 0x29, 0x3, 0x29, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, + 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2b, 0x3, 0x2b, 0x3, + 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, + 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, + 0x2c, 0x3, 0x2c, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, + 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2e, 0x3, 0x2e, 0x3, + 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, + 0x2e, 0x3, 0x2e, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, + 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, + 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, + 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x31, 0x3, 0x31, 0x3, + 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, + 0x31, 0x3, 0x31, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, + 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, + 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, + 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x34, 0x3, 0x34, 0x3, + 0x34, 0x3, 0x34, 0x3, 0x34, 0x3, 0x34, 0x3, 0x34, 0x3, 0x34, 0x3, + 0x34, 0x3, 0x34, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, + 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, + 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, + 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, 0x37, 0x3, 0x37, 0x3, + 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, + 0x37, 0x3, 0x37, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, + 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, + 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, + 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x3a, 0x3, 0x3a, 0x3, + 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, + 0x3a, 0x3, 0x3a, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, + 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, + 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, + 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3d, 0x3, 0x3d, 0x3, + 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, + 0x3d, 0x3, 0x3d, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x3, + 0x3e, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, + 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, + 0x40, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, + 0x41, 0x3, 0x41, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, + 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, + 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, + 0x42, 0x3, 0x42, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, + 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, + 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, + 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, + 0x43, 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, 0x3, + 0x44, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, + 0x45, 0x3, 0x45, 0x3, 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, + 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, + 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, 0x48, 0x3, 0x48, 0x3, + 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x49, 0x3, + 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, + 0x49, 0x3, 0x49, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, + 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4b, 0x3, + 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, + 0x4b, 0x3, 0x4b, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, + 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4d, 0x3, + 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, + 0x4d, 0x3, 0x4d, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, + 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4f, 0x3, + 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, + 0x4f, 0x3, 0x4f, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, + 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x51, 0x3, + 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, + 0x51, 0x3, 0x51, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, + 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x53, 0x3, + 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, + 0x53, 0x3, 0x53, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, + 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x55, 0x3, + 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, + 0x55, 0x3, 0x55, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, + 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x57, 0x3, + 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, + 0x57, 0x3, 0x57, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, + 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x59, 0x3, + 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, + 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, + 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, + 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, + 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, + 0x5b, 0x3, 0x5b, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, + 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, + 0x5d, 0x3, 0x5d, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, + 0x5e, 0x3, 0x5e, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, + 0x5f, 0x3, 0x5f, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, + 0x60, 0x3, 0x60, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, + 0x61, 0x3, 0x61, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, + 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x63, 0x3, 0x63, 0x3, + 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, + 0x64, 0x3, 0x64, 0x3, 0x64, 0x3, 0x64, 0x3, 0x64, 0x3, 0x64, 0x3, + 0x64, 0x3, 0x64, 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, + 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, 0x66, 0x3, 0x66, 0x3, + 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, + 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, + 0x67, 0x3, 0x67, 0x3, 0x68, 0x3, 0x68, 0x3, 0x68, 0x3, 0x68, 0x3, + 0x68, 0x3, 0x68, 0x3, 0x68, 0x3, 0x68, 0x3, 0x69, 0x3, 0x69, 0x3, + 0x69, 0x3, 0x69, 0x3, 0x69, 0x3, 0x69, 0x3, 0x69, 0x3, 0x69, 0x3, + 0x6a, 0x3, 0x6a, 0x3, 0x6a, 0x3, 0x6a, 0x3, 0x6a, 0x3, 0x6a, 0x3, + 0x6a, 0x3, 0x6a, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, + 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6c, 0x3, 0x6c, 0x3, + 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, + 0x6d, 0x3, 0x6d, 0x3, 0x6d, 0x3, 0x6d, 0x3, 0x6d, 0x3, 0x6d, 0x3, + 0x6d, 0x3, 0x6d, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, + 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6f, 0x3, 0x6f, 0x3, + 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, + 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, + 0x70, 0x3, 0x70, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, + 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x72, 0x3, 0x72, 0x3, + 0x72, 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, 0x3, 0x74, 0x3, 0x74, 0x3, + 0x74, 0x3, 0x74, 0x3, 0x74, 0x3, 0x74, 0x3, 0x74, 0x3, 0x75, 0x3, + 0x75, 0x3, 0x75, 0x3, 0x75, 0x3, 0x75, 0x3, 0x75, 0x3, 0x75, 0x3, 0x75, 0x3, 0x75, 0x3, 0x75, 0x3, 0x75, 0x3, 0x75, 0x3, 0x75, 0x3, - 0x75, 0x3, 0x76, 0x3, 0x76, 0x3, 0x76, 0x3, 0x76, 0x3, 0x77, 0x3, - 0x77, 0x3, 0x77, 0x3, 0x77, 0x3, 0x77, 0x3, 0x77, 0x3, 0x77, 0x3, - 0x77, 0x3, 0x78, 0x3, 0x78, 0x3, 0x78, 0x3, 0x78, 0x3, 0x78, 0x3, - 0x78, 0x3, 0x78, 0x3, 0x78, 0x3, 0x79, 0x3, 0x79, 0x3, 0x79, 0x3, - 0x79, 0x3, 0x79, 0x3, 0x7a, 0x3, 0x7a, 0x3, 0x7a, 0x3, 0x7a, 0x3, - 0x7a, 0x3, 0x7b, 0x3, 0x7b, 0x3, 0x7b, 0x3, 0x7b, 0x3, 0x7b, 0x3, - 0x7c, 0x3, 0x7c, 0x3, 0x7c, 0x3, 0x7c, 0x3, 0x7c, 0x3, 0x7d, 0x3, - 0x7d, 0x3, 0x7d, 0x3, 0x7d, 0x3, 0x7d, 0x3, 0x7d, 0x3, 0x7d, 0x3, - 0x7e, 0x3, 0x7e, 0x3, 0x7e, 0x3, 0x7e, 0x3, 0x7e, 0x3, 0x7e, 0x3, - 0x7e, 0x3, 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, - 0x7f, 0x3, 0x7f, 0x3, 0x80, 0x3, 0x80, 0x3, 0x80, 0x3, 0x80, 0x3, - 0x80, 0x3, 0x80, 0x3, 0x80, 0x3, 0x81, 0x3, 0x81, 0x3, 0x81, 0x3, - 0x81, 0x3, 0x81, 0x3, 0x81, 0x3, 0x81, 0x3, 0x82, 0x3, 0x82, 0x3, - 0x82, 0x3, 0x82, 0x3, 0x82, 0x3, 0x82, 0x3, 0x82, 0x3, 0x83, 0x3, - 0x83, 0x3, 0x83, 0x3, 0x83, 0x3, 0x83, 0x3, 0x83, 0x3, 0x83, 0x3, - 0x84, 0x3, 0x84, 0x3, 0x84, 0x3, 0x84, 0x3, 0x84, 0x3, 0x84, 0x3, - 0x84, 0x3, 0x85, 0x3, 0x85, 0x3, 0x85, 0x3, 0x85, 0x3, 0x85, 0x3, - 0x85, 0x3, 0x85, 0x3, 0x86, 0x3, 0x86, 0x3, 0x86, 0x3, 0x86, 0x3, - 0x86, 0x3, 0x86, 0x3, 0x86, 0x3, 0x87, 0x3, 0x87, 0x3, 0x87, 0x3, - 0x87, 0x3, 0x87, 0x3, 0x87, 0x3, 0x87, 0x3, 0x88, 0x3, 0x88, 0x3, - 0x88, 0x3, 0x88, 0x3, 0x88, 0x3, 0x88, 0x3, 0x88, 0x3, 0x89, 0x3, - 0x89, 0x3, 0x89, 0x3, 0x89, 0x3, 0x89, 0x3, 0x89, 0x3, 0x89, 0x3, - 0x8a, 0x3, 0x8a, 0x3, 0x8a, 0x3, 0x8a, 0x3, 0x8a, 0x3, 0x8a, 0x3, - 0x8a, 0x3, 0x8b, 0x3, 0x8b, 0x3, 0x8b, 0x3, 0x8b, 0x3, 0x8b, 0x3, - 0x8b, 0x3, 0x8b, 0x3, 0x8c, 0x3, 0x8c, 0x3, 0x8c, 0x3, 0x8c, 0x3, - 0x8c, 0x3, 0x8c, 0x3, 0x8c, 0x3, 0x8d, 0x3, 0x8d, 0x3, 0x8d, 0x3, - 0x8d, 0x3, 0x8d, 0x3, 0x8d, 0x3, 0x8d, 0x3, 0x8d, 0x3, 0x8d, 0x3, - 0x8d, 0x3, 0x8e, 0x3, 0x8e, 0x3, 0x8e, 0x3, 0x8e, 0x3, 0x8e, 0x3, - 0x8f, 0x3, 0x8f, 0x3, 0x8f, 0x3, 0x8f, 0x3, 0x8f, 0x3, 0x8f, 0x3, - 0x8f, 0x3, 0x8f, 0x3, 0x90, 0x3, 0x90, 0x3, 0x90, 0x3, 0x90, 0x3, - 0x90, 0x3, 0x90, 0x3, 0x90, 0x3, 0x91, 0x3, 0x91, 0x3, 0x91, 0x3, - 0x91, 0x3, 0x91, 0x3, 0x91, 0x3, 0x91, 0x3, 0x91, 0x3, 0x91, 0x3, - 0x91, 0x3, 0x91, 0x3, 0x92, 0x3, 0x92, 0x3, 0x92, 0x3, 0x92, 0x3, - 0x92, 0x3, 0x93, 0x3, 0x93, 0x3, 0x93, 0x3, 0x93, 0x3, 0x93, 0x3, - 0x93, 0x3, 0x93, 0x3, 0x94, 0x3, 0x94, 0x3, 0x94, 0x3, 0x94, 0x3, - 0x94, 0x3, 0x94, 0x3, 0x94, 0x3, 0x94, 0x3, 0x94, 0x3, 0x94, 0x3, - 0x94, 0x3, 0x94, 0x3, 0x94, 0x3, 0x94, 0x3, 0x94, 0x3, 0x94, 0x3, - 0x95, 0x3, 0x95, 0x3, 0x95, 0x3, 0x95, 0x3, 0x95, 0x3, 0x95, 0x3, - 0x95, 0x3, 0x95, 0x3, 0x95, 0x3, 0x95, 0x3, 0x95, 0x3, 0x95, 0x3, - 0x95, 0x3, 0x95, 0x3, 0x96, 0x3, 0x96, 0x3, 0x96, 0x3, 0x96, 0x3, - 0x96, 0x3, 0x96, 0x3, 0x96, 0x3, 0x97, 0x3, 0x97, 0x3, 0x97, 0x3, - 0x97, 0x3, 0x98, 0x3, 0x98, 0x3, 0x98, 0x3, 0x98, 0x3, 0x98, 0x3, - 0x98, 0x3, 0x98, 0x3, 0x98, 0x3, 0x98, 0x3, 0x98, 0x3, 0x98, 0x3, - 0x98, 0x3, 0x99, 0x3, 0x99, 0x3, 0x99, 0x3, 0x99, 0x3, 0x99, 0x3, - 0x99, 0x3, 0x99, 0x3, 0x99, 0x3, 0x99, 0x3, 0x9a, 0x3, 0x9a, 0x3, - 0x9a, 0x3, 0x9a, 0x3, 0x9a, 0x3, 0x9a, 0x3, 0x9a, 0x3, 0x9a, 0x3, - 0x9b, 0x3, 0x9b, 0x3, 0x9b, 0x3, 0x9b, 0x3, 0x9b, 0x3, 0x9b, 0x3, - 0x9b, 0x3, 0x9b, 0x3, 0x9b, 0x3, 0x9b, 0x3, 0x9b, 0x3, 0x9c, 0x3, - 0x9c, 0x3, 0x9c, 0x3, 0x9c, 0x3, 0x9c, 0x3, 0x9c, 0x3, 0x9d, 0x3, - 0x9d, 0x3, 0x9d, 0x3, 0x9d, 0x3, 0x9d, 0x3, 0x9d, 0x3, 0x9d, 0x3, - 0x9d, 0x3, 0x9d, 0x3, 0x9d, 0x3, 0x9d, 0x3, 0x9d, 0x3, 0x9e, 0x3, - 0x9e, 0x3, 0x9e, 0x3, 0x9e, 0x3, 0x9e, 0x3, 0x9e, 0x3, 0x9e, 0x3, - 0x9e, 0x3, 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, - 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, - 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, - 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, - 0x9f, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, - 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, - 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, - 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, - 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, - 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, - 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, - 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, - 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, - 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, - 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, - 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa2, 0x3, 0xa2, 0x3, - 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, - 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, - 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, - 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, - 0xa2, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, - 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, - 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, - 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, - 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, - 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, - 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, - 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, - 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, - 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, - 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, - 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, - 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, - 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, - 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, - 0xa5, 0x3, 0xa5, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, - 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, - 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, - 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, - 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa7, 0x3, - 0xa7, 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, 0x3, - 0xa7, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, - 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, - 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, - 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, - 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, - 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, 0x3, - 0xa9, 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, 0x3, - 0xaa, 0x3, 0xaa, 0x3, 0xaa, 0x3, 0xaa, 0x3, 0xaa, 0x3, 0xaa, 0x3, - 0xaa, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, - 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xac, 0x3, - 0xac, 0x3, 0xac, 0x3, 0xac, 0x3, 0xac, 0x3, 0xac, 0x3, 0xac, 0x3, - 0xac, 0x3, 0xac, 0x3, 0xad, 0x3, 0xad, 0x3, 0xad, 0x3, 0xad, 0x3, - 0xad, 0x3, 0xad, 0x3, 0xad, 0x3, 0xad, 0x3, 0xad, 0x3, 0xad, 0x3, - 0xad, 0x3, 0xad, 0x3, 0xad, 0x3, 0xad, 0x3, 0xad, 0x3, 0xad, 0x3, - 0xad, 0x3, 0xad, 0x3, 0xad, 0x3, 0xad, 0x3, 0xae, 0x3, 0xae, 0x3, - 0xae, 0x3, 0xae, 0x3, 0xae, 0x3, 0xae, 0x3, 0xae, 0x3, 0xae, 0x3, - 0xae, 0x3, 0xae, 0x3, 0xae, 0x3, 0xae, 0x3, 0xae, 0x3, 0xae, 0x3, - 0xae, 0x3, 0xae, 0x3, 0xae, 0x3, 0xae, 0x3, 0xae, 0x3, 0xaf, 0x3, - 0xaf, 0x3, 0xaf, 0x3, 0xaf, 0x3, 0xaf, 0x3, 0xaf, 0x3, 0xaf, 0x3, - 0xaf, 0x3, 0xaf, 0x3, 0xaf, 0x3, 0xaf, 0x3, 0xaf, 0x3, 0xb0, 0x3, - 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, - 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, - 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb1, 0x3, 0xb1, 0x3, - 0xb1, 0x3, 0xb1, 0x3, 0xb1, 0x3, 0xb1, 0x3, 0xb1, 0x3, 0xb1, 0x3, - 0xb1, 0x3, 0xb1, 0x3, 0xb1, 0x3, 0xb1, 0x3, 0xb2, 0x3, 0xb2, 0x3, - 0xb2, 0x3, 0xb2, 0x3, 0xb2, 0x3, 0xb2, 0x3, 0xb2, 0x3, 0xb2, 0x3, - 0xb2, 0x3, 0xb2, 0x3, 0xb2, 0x3, 0xb2, 0x3, 0xb2, 0x3, 0xb2, 0x3, - 0xb2, 0x3, 0xb2, 0x3, 0xb2, 0x3, 0xb3, 0x3, 0xb3, 0x3, 0xb3, 0x3, - 0xb3, 0x3, 0xb3, 0x3, 0xb3, 0x3, 0xb3, 0x3, 0xb3, 0x3, 0xb3, 0x3, - 0xb3, 0x3, 0xb3, 0x3, 0xb3, 0x3, 0xb4, 0x3, 0xb4, 0x3, 0xb4, 0x3, - 0xb4, 0x3, 0xb4, 0x3, 0xb4, 0x3, 0xb4, 0x3, 0xb5, 0x3, 0xb5, 0x3, - 0xb5, 0x3, 0xb5, 0x3, 0xb5, 0x3, 0xb5, 0x3, 0xb5, 0x3, 0xb5, 0x3, - 0xb6, 0x3, 0xb6, 0x3, 0xb6, 0x3, 0xb6, 0x3, 0xb6, 0x3, 0xb6, 0x3, - 0xb6, 0x3, 0xb6, 0x3, 0xb7, 0x3, 0xb7, 0x3, 0xb7, 0x3, 0xb7, 0x3, - 0xb7, 0x3, 0xb7, 0x3, 0xb7, 0x3, 0xb7, 0x3, 0xb7, 0x3, 0xb7, 0x3, - 0xb7, 0x3, 0xb7, 0x3, 0xb7, 0x3, 0xb7, 0x3, 0xb7, 0x3, 0xb7, 0x3, - 0xb7, 0x3, 0xb7, 0x3, 0xb7, 0x3, 0xb7, 0x3, 0xb7, 0x3, 0xb7, 0x3, - 0xb7, 0x3, 0xb8, 0x3, 0xb8, 0x3, 0xb8, 0x3, 0xb8, 0x3, 0xb8, 0x3, - 0xb8, 0x3, 0xb8, 0x3, 0xb8, 0x3, 0xb8, 0x3, 0xb8, 0x3, 0xb8, 0x3, - 0xb8, 0x3, 0xb8, 0x3, 0xb9, 0x3, 0xb9, 0x3, 0xb9, 0x3, 0xb9, 0x3, - 0xb9, 0x3, 0xb9, 0x3, 0xb9, 0x3, 0xba, 0x3, 0xba, 0x3, 0xba, 0x3, - 0xba, 0x3, 0xba, 0x3, 0xba, 0x3, 0xba, 0x3, 0xbb, 0x3, 0xbb, 0x3, - 0xbb, 0x3, 0xbb, 0x3, 0xbb, 0x3, 0xbb, 0x3, 0xbb, 0x3, 0xbc, 0x3, - 0xbc, 0x3, 0xbc, 0x3, 0xbc, 0x3, 0xbc, 0x3, 0xbc, 0x3, 0xbc, 0x3, - 0xbc, 0x3, 0xbc, 0x3, 0xbc, 0x3, 0xbc, 0x3, 0xbc, 0x3, 0xbc, 0x3, - 0xbc, 0x3, 0xbc, 0x3, 0xbc, 0x3, 0xbc, 0x3, 0xbd, 0x3, 0xbd, 0x3, - 0xbd, 0x3, 0xbd, 0x3, 0xbd, 0x3, 0xbd, 0x3, 0xbd, 0x3, 0xbd, 0x3, - 0xbd, 0x3, 0xbd, 0x3, 0xbd, 0x3, 0xbd, 0x3, 0xbd, 0x3, 0xbe, 0x3, - 0xbe, 0x3, 0xbe, 0x3, 0xbe, 0x3, 0xbe, 0x3, 0xbe, 0x3, 0xbe, 0x3, - 0xbe, 0x3, 0xbe, 0x3, 0xbe, 0x3, 0xbe, 0x3, 0xbe, 0x3, 0xbe, 0x3, - 0xbe, 0x3, 0xbe, 0x3, 0xbf, 0x3, 0xbf, 0x3, 0xbf, 0x3, 0xbf, 0x3, - 0xbf, 0x3, 0xbf, 0x3, 0xbf, 0x3, 0xc0, 0x3, 0xc0, 0x3, 0xc0, 0x3, - 0xc0, 0x3, 0xc0, 0x3, 0xc0, 0x3, 0xc0, 0x3, 0xc0, 0x3, 0xc0, 0x3, - 0xc0, 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc1, 0x3, - 0xc1, 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc1, 0x3, - 0xc1, 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc2, 0x3, 0xc2, 0x3, - 0xc2, 0x3, 0xc2, 0x3, 0xc2, 0x3, 0xc2, 0x3, 0xc2, 0x3, 0xc2, 0x3, - 0xc2, 0x3, 0xc2, 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc3, 0x3, - 0xc3, 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc3, 0x3, - 0xc3, 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc4, 0x3, - 0xc4, 0x3, 0xc4, 0x3, 0xc4, 0x3, 0xc4, 0x3, 0xc4, 0x3, 0xc4, 0x3, - 0xc4, 0x3, 0xc4, 0x3, 0xc4, 0x3, 0xc4, 0x3, 0xc4, 0x3, 0xc5, 0x3, - 0xc5, 0x3, 0xc5, 0x3, 0xc5, 0x3, 0xc5, 0x3, 0xc5, 0x3, 0xc5, 0x3, - 0xc5, 0x3, 0xc5, 0x3, 0xc5, 0x3, 0xc5, 0x3, 0xc5, 0x3, 0xc5, 0x3, - 0xc5, 0x3, 0xc5, 0x3, 0xc5, 0x3, 0xc5, 0x3, 0xc6, 0x3, 0xc6, 0x3, - 0xc6, 0x3, 0xc6, 0x3, 0xc6, 0x3, 0xc6, 0x3, 0xc6, 0x3, 0xc6, 0x3, - 0xc6, 0x3, 0xc6, 0x3, 0xc7, 0x3, 0xc7, 0x3, 0xc7, 0x3, 0xc7, 0x3, - 0xc7, 0x3, 0xc7, 0x3, 0xc7, 0x3, 0xc7, 0x3, 0xc7, 0x3, 0xc7, 0x3, - 0xc7, 0x3, 0xc7, 0x3, 0xc8, 0x3, 0xc8, 0x3, 0xc8, 0x3, 0xc8, 0x3, - 0xc8, 0x3, 0xc8, 0x3, 0xc8, 0x3, 0xc8, 0x3, 0xc8, 0x3, 0xc8, 0x3, - 0xc8, 0x3, 0xc8, 0x3, 0xc8, 0x3, 0xc8, 0x3, 0xc8, 0x3, 0xc8, 0x3, - 0xc8, 0x3, 0xc9, 0x3, 0xc9, 0x3, 0xc9, 0x3, 0xc9, 0x3, 0xc9, 0x3, - 0xc9, 0x3, 0xc9, 0x3, 0xc9, 0x3, 0xc9, 0x3, 0xca, 0x3, 0xca, 0x3, - 0xca, 0x3, 0xca, 0x3, 0xca, 0x3, 0xca, 0x3, 0xca, 0x3, 0xca, 0x3, - 0xca, 0x3, 0xca, 0x3, 0xca, 0x3, 0xca, 0x3, 0xcb, 0x3, 0xcb, 0x3, - 0xcb, 0x3, 0xcb, 0x3, 0xcb, 0x3, 0xcb, 0x3, 0xcb, 0x3, 0xcb, 0x3, - 0xcb, 0x3, 0xcb, 0x3, 0xcb, 0x3, 0xcb, 0x3, 0xcb, 0x3, 0xcb, 0x3, - 0xcb, 0x3, 0xcc, 0x3, 0xcc, 0x3, 0xcc, 0x3, 0xcc, 0x3, 0xcc, 0x3, - 0xcc, 0x3, 0xcc, 0x3, 0xcc, 0x3, 0xcd, 0x3, 0xcd, 0x3, 0xcd, 0x3, - 0xcd, 0x3, 0xcd, 0x3, 0xce, 0x3, 0xce, 0x3, 0xce, 0x3, 0xce, 0x3, - 0xce, 0x3, 0xce, 0x3, 0xce, 0x3, 0xce, 0x3, 0xce, 0x3, 0xcf, 0x3, - 0xcf, 0x3, 0xcf, 0x3, 0xcf, 0x3, 0xcf, 0x3, 0xcf, 0x3, 0xcf, 0x3, - 0xcf, 0x3, 0xcf, 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xd0, 0x3, - 0xd0, 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xd0, 0x3, - 0xd0, 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xd1, 0x3, 0xd1, 0x3, 0xd1, 0x3, - 0xd1, 0x3, 0xd1, 0x3, 0xd1, 0x3, 0xd2, 0x3, 0xd2, 0x3, 0xd2, 0x3, - 0xd2, 0x3, 0xd2, 0x3, 0xd2, 0x3, 0xd3, 0x3, 0xd3, 0x3, 0xd3, 0x3, - 0xd3, 0x3, 0xd3, 0x3, 0xd3, 0x3, 0xd4, 0x3, 0xd4, 0x3, 0xd4, 0x3, - 0xd4, 0x3, 0xd4, 0x3, 0xd4, 0x3, 0xd5, 0x3, 0xd5, 0x3, 0xd5, 0x3, - 0xd5, 0x3, 0xd5, 0x3, 0xd5, 0x3, 0xd5, 0x3, 0xd5, 0x3, 0xd6, 0x3, - 0xd6, 0x3, 0xd6, 0x3, 0xd6, 0x3, 0xd6, 0x3, 0xd6, 0x3, 0xd6, 0x3, - 0xd6, 0x3, 0xd7, 0x3, 0xd7, 0x3, 0xd7, 0x3, 0xd7, 0x3, 0xd7, 0x3, - 0xd7, 0x3, 0xd7, 0x3, 0xd7, 0x3, 0xd8, 0x3, 0xd8, 0x3, 0xd8, 0x3, - 0xd8, 0x3, 0xd8, 0x3, 0xd8, 0x3, 0xd8, 0x3, 0xd8, 0x3, 0xd9, 0x3, - 0xd9, 0x3, 0xd9, 0x3, 0xd9, 0x3, 0xd9, 0x3, 0xd9, 0x3, 0xd9, 0x3, - 0xd9, 0x3, 0xda, 0x3, 0xda, 0x3, 0xda, 0x3, 0xda, 0x3, 0xda, 0x3, - 0xda, 0x3, 0xda, 0x3, 0xda, 0x3, 0xdb, 0x3, 0xdb, 0x3, 0xdb, 0x3, - 0xdb, 0x3, 0xdb, 0x3, 0xdb, 0x3, 0xdb, 0x3, 0xdb, 0x3, 0xdc, 0x3, - 0xdc, 0x3, 0xdc, 0x3, 0xdc, 0x3, 0xdc, 0x3, 0xdc, 0x3, 0xdc, 0x3, - 0xdc, 0x3, 0xdd, 0x3, 0xdd, 0x3, 0xdd, 0x3, 0xdd, 0x3, 0xdd, 0x3, - 0xdd, 0x3, 0xdd, 0x3, 0xdd, 0x3, 0xde, 0x3, 0xde, 0x3, 0xde, 0x3, - 0xde, 0x3, 0xde, 0x3, 0xde, 0x3, 0xde, 0x3, 0xde, 0x3, 0xdf, 0x3, - 0xdf, 0x3, 0xdf, 0x3, 0xdf, 0x3, 0xdf, 0x3, 0xdf, 0x3, 0xdf, 0x3, - 0xdf, 0x3, 0xe0, 0x3, 0xe0, 0x3, 0xe0, 0x3, 0xe0, 0x3, 0xe0, 0x3, - 0xe0, 0x3, 0xe0, 0x3, 0xe0, 0x3, 0xe1, 0x3, 0xe1, 0x3, 0xe1, 0x3, - 0xe1, 0x3, 0xe1, 0x3, 0xe1, 0x3, 0xe1, 0x3, 0xe1, 0x3, 0xe2, 0x3, - 0xe2, 0x3, 0xe2, 0x3, 0xe2, 0x3, 0xe2, 0x3, 0xe2, 0x3, 0xe2, 0x3, - 0xe2, 0x3, 0xe3, 0x3, 0xe3, 0x3, 0xe3, 0x3, 0xe3, 0x3, 0xe3, 0x3, - 0xe3, 0x3, 0xe3, 0x3, 0xe3, 0x3, 0xe4, 0x3, 0xe4, 0x3, 0xe4, 0x3, - 0xe4, 0x3, 0xe4, 0x3, 0xe4, 0x3, 0xe4, 0x3, 0xe4, 0x3, 0xe5, 0x3, - 0xe5, 0x3, 0xe5, 0x3, 0xe5, 0x3, 0xe5, 0x3, 0xe5, 0x3, 0xe6, 0x3, - 0xe6, 0x3, 0xe6, 0x3, 0xe6, 0x3, 0xe6, 0x3, 0xe6, 0x3, 0xe6, 0x3, - 0xe7, 0x3, 0xe7, 0x3, 0xe7, 0x3, 0xe7, 0x3, 0xe7, 0x3, 0xe7, 0x3, - 0xe7, 0x3, 0xe8, 0x3, 0xe8, 0x3, 0xe8, 0x3, 0xe8, 0x3, 0xe8, 0x3, - 0xe8, 0x3, 0xe8, 0x3, 0xe9, 0x3, 0xe9, 0x3, 0xe9, 0x3, 0xe9, 0x3, - 0xe9, 0x3, 0xe9, 0x3, 0xe9, 0x3, 0xea, 0x3, 0xea, 0x3, 0xea, 0x3, - 0xea, 0x3, 0xea, 0x3, 0xea, 0x3, 0xea, 0x3, 0xea, 0x3, 0xea, 0x3, - 0xeb, 0x3, 0xeb, 0x3, 0xeb, 0x3, 0xeb, 0x3, 0xeb, 0x3, 0xeb, 0x3, - 0xeb, 0x3, 0xeb, 0x3, 0xeb, 0x3, 0xec, 0x3, 0xec, 0x3, 0xec, 0x3, - 0xec, 0x3, 0xec, 0x3, 0xec, 0x3, 0xec, 0x3, 0xec, 0x3, 0xec, 0x3, - 0xed, 0x3, 0xed, 0x3, 0xed, 0x3, 0xed, 0x3, 0xed, 0x3, 0xed, 0x3, - 0xed, 0x3, 0xed, 0x3, 0xed, 0x3, 0xee, 0x3, 0xee, 0x3, 0xee, 0x3, - 0xee, 0x3, 0xee, 0x3, 0xee, 0x3, 0xee, 0x3, 0xee, 0x3, 0xee, 0x3, - 0xef, 0x3, 0xef, 0x3, 0xef, 0x3, 0xef, 0x3, 0xef, 0x3, 0xef, 0x3, - 0xef, 0x3, 0xef, 0x3, 0xef, 0x3, 0xf0, 0x3, 0xf0, 0x3, 0xf0, 0x3, - 0xf0, 0x3, 0xf0, 0x3, 0xf0, 0x3, 0xf0, 0x3, 0xf0, 0x3, 0xf0, 0x3, - 0xf1, 0x3, 0xf1, 0x3, 0xf1, 0x3, 0xf1, 0x3, 0xf1, 0x3, 0xf1, 0x3, - 0xf1, 0x3, 0xf1, 0x3, 0xf1, 0x3, 0xf2, 0x3, 0xf2, 0x3, 0xf2, 0x3, - 0xf2, 0x3, 0xf2, 0x3, 0xf2, 0x3, 0xf2, 0x3, 0xf2, 0x3, 0xf2, 0x3, - 0xf3, 0x3, 0xf3, 0x3, 0xf3, 0x3, 0xf3, 0x3, 0xf3, 0x3, 0xf3, 0x3, - 0xf3, 0x3, 0xf3, 0x3, 0xf3, 0x3, 0xf4, 0x3, 0xf4, 0x3, 0xf4, 0x3, - 0xf4, 0x3, 0xf4, 0x3, 0xf4, 0x3, 0xf4, 0x3, 0xf4, 0x3, 0xf4, 0x3, - 0xf5, 0x3, 0xf5, 0x3, 0xf5, 0x3, 0xf5, 0x3, 0xf5, 0x3, 0xf5, 0x3, - 0xf5, 0x3, 0xf5, 0x3, 0xf5, 0x3, 0xf6, 0x3, 0xf6, 0x3, 0xf6, 0x3, - 0xf6, 0x3, 0xf6, 0x3, 0xf6, 0x3, 0xf6, 0x3, 0xf6, 0x3, 0xf6, 0x3, - 0xf7, 0x3, 0xf7, 0x3, 0xf7, 0x3, 0xf7, 0x3, 0xf7, 0x3, 0xf7, 0x3, - 0xf7, 0x3, 0xf7, 0x3, 0xf7, 0x3, 0xf8, 0x3, 0xf8, 0x3, 0xf8, 0x3, - 0xf8, 0x3, 0xf8, 0x3, 0xf8, 0x3, 0xf8, 0x3, 0xf8, 0x3, 0xf8, 0x3, - 0xf9, 0x3, 0xf9, 0x3, 0xf9, 0x3, 0xf9, 0x3, 0xf9, 0x3, 0xf9, 0x3, - 0xf9, 0x3, 0xf9, 0x3, 0xf9, 0x3, 0xfa, 0x3, 0xfa, 0x3, 0xfa, 0x3, - 0xfa, 0x3, 0xfa, 0x3, 0xfa, 0x3, 0xfa, 0x3, 0xfb, 0x3, 0xfb, 0x3, - 0xfb, 0x3, 0xfb, 0x3, 0xfb, 0x3, 0xfb, 0x3, 0xfb, 0x3, 0xfb, 0x3, - 0xfb, 0x3, 0xfc, 0x3, 0xfc, 0x3, 0xfc, 0x3, 0xfc, 0x3, 0xfc, 0x3, - 0xfd, 0x3, 0xfd, 0x3, 0xfd, 0x3, 0xfd, 0x3, 0xfd, 0x3, 0xfd, 0x3, - 0xfe, 0x3, 0xfe, 0x3, 0xfe, 0x3, 0xfe, 0x3, 0xfe, 0x3, 0xfe, 0x3, - 0xfe, 0x3, 0xfe, 0x3, 0xfe, 0x3, 0xfe, 0x3, 0xfe, 0x3, 0xfe, 0x3, - 0xfe, 0x3, 0xfe, 0x3, 0xfe, 0x3, 0xfe, 0x3, 0xfe, 0x3, 0xfe, 0x3, - 0xff, 0x3, 0xff, 0x3, 0xff, 0x3, 0xff, 0x3, 0xff, 0x3, 0xff, 0x3, - 0xff, 0x3, 0xff, 0x3, 0xff, 0x3, 0xff, 0x3, 0xff, 0x3, 0xff, 0x3, - 0xff, 0x3, 0xff, 0x3, 0xff, 0x3, 0xff, 0x3, 0xff, 0x3, 0xff, 0x3, - 0xff, 0x3, 0x100, 0x3, 0x100, 0x3, 0x100, 0x3, 0x100, 0x3, 0x100, - 0x3, 0x100, 0x3, 0x100, 0x3, 0x100, 0x3, 0x100, 0x3, 0x100, 0x3, - 0x100, 0x3, 0x100, 0x3, 0x100, 0x3, 0x100, 0x3, 0x100, 0x3, 0x100, + 0x76, 0x3, 0x76, 0x3, 0x76, 0x3, 0x76, 0x3, 0x76, 0x3, 0x76, 0x3, + 0x76, 0x3, 0x76, 0x3, 0x76, 0x3, 0x76, 0x3, 0x76, 0x5, 0x76, 0x736, + 0xa, 0x76, 0x3, 0x77, 0x3, 0x77, 0x3, 0x77, 0x3, 0x77, 0x3, 0x77, + 0x3, 0x77, 0x3, 0x77, 0x3, 0x77, 0x3, 0x77, 0x3, 0x77, 0x3, 0x77, + 0x3, 0x78, 0x3, 0x78, 0x3, 0x78, 0x3, 0x78, 0x3, 0x79, 0x3, 0x79, + 0x3, 0x79, 0x3, 0x79, 0x3, 0x79, 0x3, 0x79, 0x3, 0x79, 0x3, 0x79, + 0x3, 0x7a, 0x3, 0x7a, 0x3, 0x7a, 0x3, 0x7a, 0x3, 0x7a, 0x3, 0x7a, + 0x3, 0x7a, 0x3, 0x7a, 0x3, 0x7b, 0x3, 0x7b, 0x3, 0x7b, 0x3, 0x7b, + 0x3, 0x7b, 0x3, 0x7b, 0x3, 0x7b, 0x3, 0x7b, 0x3, 0x7c, 0x3, 0x7c, + 0x3, 0x7c, 0x3, 0x7c, 0x3, 0x7c, 0x3, 0x7d, 0x3, 0x7d, 0x3, 0x7d, + 0x3, 0x7d, 0x3, 0x7d, 0x3, 0x7e, 0x3, 0x7e, 0x3, 0x7e, 0x3, 0x7e, + 0x3, 0x7e, 0x3, 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, 0x7f, + 0x3, 0x80, 0x3, 0x80, 0x3, 0x80, 0x3, 0x80, 0x3, 0x80, 0x3, 0x80, + 0x3, 0x80, 0x3, 0x81, 0x3, 0x81, 0x3, 0x81, 0x3, 0x81, 0x3, 0x81, + 0x3, 0x81, 0x3, 0x81, 0x3, 0x82, 0x3, 0x82, 0x3, 0x82, 0x3, 0x82, + 0x3, 0x82, 0x3, 0x82, 0x3, 0x82, 0x3, 0x83, 0x3, 0x83, 0x3, 0x83, + 0x3, 0x83, 0x3, 0x83, 0x3, 0x83, 0x3, 0x83, 0x3, 0x84, 0x3, 0x84, + 0x3, 0x84, 0x3, 0x84, 0x3, 0x84, 0x3, 0x84, 0x3, 0x84, 0x3, 0x85, + 0x3, 0x85, 0x3, 0x85, 0x3, 0x85, 0x3, 0x85, 0x3, 0x85, 0x3, 0x85, + 0x3, 0x86, 0x3, 0x86, 0x3, 0x86, 0x3, 0x86, 0x3, 0x86, 0x3, 0x86, + 0x3, 0x86, 0x3, 0x87, 0x3, 0x87, 0x3, 0x87, 0x3, 0x87, 0x3, 0x87, + 0x3, 0x87, 0x3, 0x87, 0x3, 0x88, 0x3, 0x88, 0x3, 0x88, 0x3, 0x88, + 0x3, 0x88, 0x3, 0x88, 0x3, 0x88, 0x3, 0x89, 0x3, 0x89, 0x3, 0x89, + 0x3, 0x89, 0x3, 0x89, 0x3, 0x89, 0x3, 0x89, 0x3, 0x8a, 0x3, 0x8a, + 0x3, 0x8a, 0x3, 0x8a, 0x3, 0x8a, 0x3, 0x8a, 0x3, 0x8a, 0x3, 0x8b, + 0x3, 0x8b, 0x3, 0x8b, 0x3, 0x8b, 0x3, 0x8b, 0x3, 0x8b, 0x3, 0x8b, + 0x3, 0x8c, 0x3, 0x8c, 0x3, 0x8c, 0x3, 0x8c, 0x3, 0x8c, 0x3, 0x8c, + 0x3, 0x8c, 0x3, 0x8d, 0x3, 0x8d, 0x3, 0x8d, 0x3, 0x8d, 0x3, 0x8d, + 0x3, 0x8d, 0x3, 0x8d, 0x3, 0x8e, 0x3, 0x8e, 0x3, 0x8e, 0x3, 0x8e, + 0x3, 0x8e, 0x3, 0x8e, 0x3, 0x8e, 0x3, 0x8f, 0x3, 0x8f, 0x3, 0x8f, + 0x3, 0x8f, 0x3, 0x8f, 0x3, 0x8f, 0x3, 0x8f, 0x3, 0x90, 0x3, 0x90, + 0x3, 0x90, 0x3, 0x90, 0x3, 0x90, 0x3, 0x90, 0x3, 0x90, 0x3, 0x90, + 0x3, 0x90, 0x3, 0x90, 0x3, 0x91, 0x3, 0x91, 0x3, 0x91, 0x3, 0x91, + 0x3, 0x91, 0x3, 0x92, 0x3, 0x92, 0x3, 0x92, 0x3, 0x92, 0x3, 0x92, + 0x3, 0x92, 0x3, 0x92, 0x3, 0x92, 0x3, 0x93, 0x3, 0x93, 0x3, 0x93, + 0x3, 0x93, 0x3, 0x93, 0x3, 0x93, 0x3, 0x93, 0x3, 0x94, 0x3, 0x94, + 0x3, 0x94, 0x3, 0x94, 0x3, 0x94, 0x3, 0x94, 0x3, 0x94, 0x3, 0x94, + 0x3, 0x94, 0x3, 0x94, 0x3, 0x94, 0x3, 0x95, 0x3, 0x95, 0x3, 0x95, + 0x3, 0x95, 0x3, 0x95, 0x3, 0x96, 0x3, 0x96, 0x3, 0x96, 0x3, 0x96, + 0x3, 0x96, 0x3, 0x96, 0x3, 0x96, 0x3, 0x97, 0x3, 0x97, 0x3, 0x97, + 0x3, 0x97, 0x3, 0x97, 0x3, 0x97, 0x3, 0x97, 0x3, 0x97, 0x3, 0x97, + 0x3, 0x97, 0x3, 0x97, 0x3, 0x97, 0x3, 0x97, 0x3, 0x97, 0x3, 0x97, + 0x3, 0x97, 0x3, 0x98, 0x3, 0x98, 0x3, 0x98, 0x3, 0x98, 0x3, 0x98, + 0x3, 0x98, 0x3, 0x98, 0x3, 0x98, 0x3, 0x98, 0x3, 0x98, 0x3, 0x98, + 0x3, 0x98, 0x3, 0x98, 0x3, 0x98, 0x3, 0x99, 0x3, 0x99, 0x3, 0x99, + 0x3, 0x99, 0x3, 0x99, 0x3, 0x99, 0x3, 0x99, 0x3, 0x9a, 0x3, 0x9a, + 0x3, 0x9a, 0x3, 0x9a, 0x3, 0x9b, 0x3, 0x9b, 0x3, 0x9b, 0x3, 0x9b, + 0x3, 0x9b, 0x3, 0x9b, 0x3, 0x9b, 0x3, 0x9b, 0x3, 0x9b, 0x3, 0x9b, + 0x3, 0x9b, 0x3, 0x9b, 0x3, 0x9c, 0x3, 0x9c, 0x3, 0x9c, 0x3, 0x9c, + 0x3, 0x9c, 0x3, 0x9c, 0x3, 0x9c, 0x3, 0x9c, 0x3, 0x9c, 0x3, 0x9d, + 0x3, 0x9d, 0x3, 0x9d, 0x3, 0x9d, 0x3, 0x9d, 0x3, 0x9d, 0x3, 0x9d, + 0x3, 0x9d, 0x3, 0x9e, 0x3, 0x9e, 0x3, 0x9e, 0x3, 0x9e, 0x3, 0x9e, + 0x3, 0x9e, 0x3, 0x9e, 0x3, 0x9e, 0x3, 0x9e, 0x3, 0x9e, 0x3, 0x9e, + 0x3, 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, 0x9f, 0x3, 0x9f, + 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, + 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, 0x3, 0xa0, + 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa1, + 0x3, 0xa1, 0x3, 0xa1, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, + 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, + 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, + 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa2, + 0x3, 0xa2, 0x3, 0xa2, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, + 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, + 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, + 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, + 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, + 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, 0x3, 0xa3, + 0x3, 0xa3, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, + 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, + 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, + 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, + 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, + 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa4, 0x3, 0xa5, + 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, + 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, + 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, + 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa5, + 0x3, 0xa5, 0x3, 0xa5, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, + 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, + 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, + 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, + 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, + 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa6, 0x3, 0xa7, 0x3, 0xa7, + 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, + 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, + 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, + 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, 0x3, 0xa7, + 0x3, 0xa7, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, + 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, + 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, + 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, + 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, + 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa8, 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, + 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, + 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, + 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, + 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, 0x3, 0xa9, + 0x3, 0xaa, 0x3, 0xaa, 0x3, 0xaa, 0x3, 0xaa, 0x3, 0xaa, 0x3, 0xaa, + 0x3, 0xaa, 0x3, 0xaa, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, + 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, + 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, + 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, + 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, + 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xab, 0x3, 0xac, 0x3, 0xac, + 0x3, 0xac, 0x3, 0xac, 0x3, 0xac, 0x3, 0xac, 0x3, 0xac, 0x3, 0xac, + 0x3, 0xac, 0x3, 0xad, 0x3, 0xad, 0x3, 0xad, 0x3, 0xad, 0x3, 0xad, + 0x3, 0xad, 0x3, 0xad, 0x3, 0xae, 0x3, 0xae, 0x3, 0xae, 0x3, 0xae, + 0x3, 0xae, 0x3, 0xae, 0x3, 0xae, 0x3, 0xae, 0x3, 0xae, 0x3, 0xae, + 0x3, 0xaf, 0x3, 0xaf, 0x3, 0xaf, 0x3, 0xaf, 0x3, 0xaf, 0x3, 0xaf, + 0x3, 0xaf, 0x3, 0xaf, 0x3, 0xaf, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, + 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, + 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, + 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb1, + 0x3, 0xb1, 0x3, 0xb1, 0x3, 0xb1, 0x3, 0xb1, 0x3, 0xb1, 0x3, 0xb1, + 0x3, 0xb1, 0x3, 0xb1, 0x3, 0xb1, 0x3, 0xb1, 0x3, 0xb1, 0x3, 0xb1, + 0x3, 0xb1, 0x3, 0xb1, 0x3, 0xb1, 0x3, 0xb1, 0x3, 0xb1, 0x3, 0xb1, + 0x3, 0xb2, 0x3, 0xb2, 0x3, 0xb2, 0x3, 0xb2, 0x3, 0xb2, 0x3, 0xb2, + 0x3, 0xb2, 0x3, 0xb2, 0x3, 0xb2, 0x3, 0xb2, 0x3, 0xb2, 0x3, 0xb2, + 0x3, 0xb3, 0x3, 0xb3, 0x3, 0xb3, 0x3, 0xb3, 0x3, 0xb3, 0x3, 0xb3, + 0x3, 0xb3, 0x3, 0xb3, 0x3, 0xb3, 0x3, 0xb3, 0x3, 0xb3, 0x3, 0xb3, + 0x3, 0xb3, 0x3, 0xb3, 0x3, 0xb3, 0x3, 0xb3, 0x3, 0xb3, 0x3, 0xb4, + 0x3, 0xb4, 0x3, 0xb4, 0x3, 0xb4, 0x3, 0xb4, 0x3, 0xb4, 0x3, 0xb4, + 0x3, 0xb4, 0x3, 0xb4, 0x3, 0xb4, 0x3, 0xb4, 0x3, 0xb4, 0x3, 0xb5, + 0x3, 0xb5, 0x3, 0xb5, 0x3, 0xb5, 0x3, 0xb5, 0x3, 0xb5, 0x3, 0xb5, + 0x3, 0xb5, 0x3, 0xb5, 0x3, 0xb5, 0x3, 0xb5, 0x3, 0xb5, 0x3, 0xb5, + 0x3, 0xb5, 0x3, 0xb5, 0x3, 0xb5, 0x3, 0xb5, 0x3, 0xb6, 0x3, 0xb6, + 0x3, 0xb6, 0x3, 0xb6, 0x3, 0xb6, 0x3, 0xb6, 0x3, 0xb6, 0x3, 0xb6, + 0x3, 0xb6, 0x3, 0xb6, 0x3, 0xb6, 0x3, 0xb6, 0x3, 0xb7, 0x3, 0xb7, + 0x3, 0xb7, 0x3, 0xb7, 0x3, 0xb7, 0x3, 0xb7, 0x3, 0xb7, 0x3, 0xb8, + 0x3, 0xb8, 0x3, 0xb8, 0x3, 0xb8, 0x3, 0xb8, 0x3, 0xb8, 0x3, 0xb8, + 0x3, 0xb8, 0x3, 0xb9, 0x3, 0xb9, 0x3, 0xb9, 0x3, 0xb9, 0x3, 0xb9, + 0x3, 0xb9, 0x3, 0xb9, 0x3, 0xb9, 0x3, 0xba, 0x3, 0xba, 0x3, 0xba, + 0x3, 0xba, 0x3, 0xba, 0x3, 0xba, 0x3, 0xba, 0x3, 0xba, 0x3, 0xba, + 0x3, 0xba, 0x3, 0xba, 0x3, 0xba, 0x3, 0xba, 0x3, 0xba, 0x3, 0xba, + 0x3, 0xba, 0x3, 0xba, 0x3, 0xba, 0x3, 0xba, 0x3, 0xba, 0x3, 0xba, + 0x3, 0xba, 0x3, 0xba, 0x3, 0xbb, 0x3, 0xbb, 0x3, 0xbb, 0x3, 0xbb, + 0x3, 0xbb, 0x3, 0xbb, 0x3, 0xbb, 0x3, 0xbb, 0x3, 0xbb, 0x3, 0xbb, + 0x3, 0xbb, 0x3, 0xbb, 0x3, 0xbb, 0x3, 0xbc, 0x3, 0xbc, 0x3, 0xbc, + 0x3, 0xbc, 0x3, 0xbc, 0x3, 0xbc, 0x3, 0xbc, 0x3, 0xbc, 0x3, 0xbc, + 0x3, 0xbc, 0x3, 0xbc, 0x3, 0xbc, 0x3, 0xbc, 0x3, 0xbc, 0x3, 0xbd, + 0x3, 0xbd, 0x3, 0xbd, 0x3, 0xbd, 0x3, 0xbd, 0x3, 0xbd, 0x3, 0xbd, + 0x3, 0xbe, 0x3, 0xbe, 0x3, 0xbe, 0x3, 0xbe, 0x3, 0xbe, 0x3, 0xbe, + 0x3, 0xbf, 0x3, 0xbf, 0x3, 0xbf, 0x3, 0xbf, 0x3, 0xbf, 0x3, 0xbf, + 0x3, 0xbf, 0x3, 0xc0, 0x3, 0xc0, 0x3, 0xc0, 0x3, 0xc0, 0x3, 0xc0, + 0x3, 0xc0, 0x3, 0xc0, 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc1, + 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc1, + 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc1, 0x3, 0xc1, + 0x3, 0xc1, 0x3, 0xc2, 0x3, 0xc2, 0x3, 0xc2, 0x3, 0xc2, 0x3, 0xc2, + 0x3, 0xc2, 0x3, 0xc2, 0x3, 0xc2, 0x3, 0xc2, 0x3, 0xc2, 0x3, 0xc2, + 0x3, 0xc2, 0x3, 0xc2, 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc3, + 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc3, + 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc3, 0x3, 0xc4, + 0x3, 0xc4, 0x3, 0xc4, 0x3, 0xc4, 0x3, 0xc4, 0x3, 0xc4, 0x3, 0xc4, + 0x3, 0xc5, 0x3, 0xc5, 0x3, 0xc5, 0x3, 0xc5, 0x3, 0xc5, 0x3, 0xc5, + 0x3, 0xc5, 0x3, 0xc5, 0x3, 0xc6, 0x3, 0xc6, 0x3, 0xc6, 0x3, 0xc6, + 0x3, 0xc6, 0x3, 0xc6, 0x3, 0xc6, 0x3, 0xc6, 0x3, 0xc6, 0x3, 0xc6, + 0x3, 0xc7, 0x3, 0xc7, 0x3, 0xc7, 0x3, 0xc7, 0x3, 0xc7, 0x3, 0xc7, + 0x3, 0xc7, 0x3, 0xc7, 0x3, 0xc7, 0x3, 0xc7, 0x3, 0xc7, 0x3, 0xc7, + 0x3, 0xc7, 0x3, 0xc7, 0x3, 0xc7, 0x3, 0xc8, 0x3, 0xc8, 0x3, 0xc8, + 0x3, 0xc8, 0x3, 0xc8, 0x3, 0xc8, 0x3, 0xc8, 0x3, 0xc8, 0x3, 0xc8, + 0x3, 0xc8, 0x3, 0xc9, 0x3, 0xc9, 0x3, 0xc9, 0x3, 0xc9, 0x3, 0xc9, + 0x3, 0xc9, 0x3, 0xc9, 0x3, 0xc9, 0x3, 0xc9, 0x3, 0xc9, 0x3, 0xc9, + 0x3, 0xc9, 0x3, 0xc9, 0x3, 0xc9, 0x3, 0xc9, 0x3, 0xca, 0x3, 0xca, + 0x3, 0xca, 0x3, 0xca, 0x3, 0xca, 0x3, 0xca, 0x3, 0xca, 0x3, 0xca, + 0x3, 0xca, 0x3, 0xca, 0x3, 0xca, 0x3, 0xca, 0x3, 0xcb, 0x3, 0xcb, + 0x3, 0xcb, 0x3, 0xcb, 0x3, 0xcb, 0x3, 0xcb, 0x3, 0xcb, 0x3, 0xcb, + 0x3, 0xcb, 0x3, 0xcb, 0x3, 0xcb, 0x3, 0xcb, 0x3, 0xcb, 0x3, 0xcb, + 0x3, 0xcb, 0x3, 0xcb, 0x3, 0xcb, 0x3, 0xcc, 0x3, 0xcc, 0x3, 0xcc, + 0x3, 0xcc, 0x3, 0xcc, 0x3, 0xcc, 0x3, 0xcc, 0x3, 0xcc, 0x3, 0xcc, + 0x3, 0xcc, 0x3, 0xcd, 0x3, 0xcd, 0x3, 0xcd, 0x3, 0xcd, 0x3, 0xcd, + 0x3, 0xcd, 0x3, 0xcd, 0x3, 0xcd, 0x3, 0xcd, 0x3, 0xcd, 0x3, 0xcd, + 0x3, 0xcd, 0x3, 0xce, 0x3, 0xce, 0x3, 0xce, 0x3, 0xce, 0x3, 0xce, + 0x3, 0xce, 0x3, 0xce, 0x3, 0xce, 0x3, 0xce, 0x3, 0xce, 0x3, 0xce, + 0x3, 0xce, 0x3, 0xce, 0x3, 0xce, 0x3, 0xce, 0x3, 0xce, 0x3, 0xce, + 0x3, 0xcf, 0x3, 0xcf, 0x3, 0xcf, 0x3, 0xcf, 0x3, 0xcf, 0x3, 0xcf, + 0x3, 0xcf, 0x3, 0xcf, 0x3, 0xcf, 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xd0, + 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xd0, + 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xd1, 0x3, 0xd1, 0x3, 0xd1, + 0x3, 0xd1, 0x3, 0xd1, 0x3, 0xd1, 0x3, 0xd1, 0x3, 0xd1, 0x3, 0xd1, + 0x3, 0xd1, 0x3, 0xd1, 0x3, 0xd1, 0x3, 0xd1, 0x3, 0xd1, 0x3, 0xd1, + 0x3, 0xd2, 0x3, 0xd2, 0x3, 0xd2, 0x3, 0xd2, 0x3, 0xd2, 0x3, 0xd2, + 0x3, 0xd2, 0x3, 0xd2, 0x3, 0xd3, 0x3, 0xd3, 0x3, 0xd3, 0x3, 0xd3, + 0x3, 0xd3, 0x3, 0xd4, 0x3, 0xd4, 0x3, 0xd4, 0x3, 0xd4, 0x3, 0xd4, + 0x3, 0xd4, 0x3, 0xd5, 0x3, 0xd5, 0x3, 0xd5, 0x3, 0xd5, 0x3, 0xd5, + 0x3, 0xd5, 0x3, 0xd6, 0x3, 0xd6, 0x3, 0xd6, 0x3, 0xd6, 0x3, 0xd6, + 0x3, 0xd6, 0x3, 0xd7, 0x3, 0xd7, 0x3, 0xd7, 0x3, 0xd7, 0x3, 0xd7, + 0x3, 0xd7, 0x3, 0xd8, 0x3, 0xd8, 0x3, 0xd8, 0x3, 0xd8, 0x3, 0xd8, + 0x3, 0xd8, 0x3, 0xd8, 0x3, 0xd8, 0x3, 0xd9, 0x3, 0xd9, 0x3, 0xd9, + 0x3, 0xd9, 0x3, 0xd9, 0x3, 0xd9, 0x3, 0xd9, 0x3, 0xd9, 0x3, 0xda, + 0x3, 0xda, 0x3, 0xda, 0x3, 0xda, 0x3, 0xda, 0x3, 0xda, 0x3, 0xda, + 0x3, 0xda, 0x3, 0xdb, 0x3, 0xdb, 0x3, 0xdb, 0x3, 0xdb, 0x3, 0xdb, + 0x3, 0xdb, 0x3, 0xdb, 0x3, 0xdb, 0x3, 0xdc, 0x3, 0xdc, 0x3, 0xdc, + 0x3, 0xdc, 0x3, 0xdc, 0x3, 0xdc, 0x3, 0xdc, 0x3, 0xdc, 0x3, 0xdd, + 0x3, 0xdd, 0x3, 0xdd, 0x3, 0xdd, 0x3, 0xdd, 0x3, 0xdd, 0x3, 0xdd, + 0x3, 0xdd, 0x3, 0xde, 0x3, 0xde, 0x3, 0xde, 0x3, 0xde, 0x3, 0xde, + 0x3, 0xde, 0x3, 0xde, 0x3, 0xde, 0x3, 0xdf, 0x3, 0xdf, 0x3, 0xdf, + 0x3, 0xdf, 0x3, 0xdf, 0x3, 0xdf, 0x3, 0xdf, 0x3, 0xdf, 0x3, 0xe0, + 0x3, 0xe0, 0x3, 0xe0, 0x3, 0xe0, 0x3, 0xe0, 0x3, 0xe0, 0x3, 0xe0, + 0x3, 0xe0, 0x3, 0xe1, 0x3, 0xe1, 0x3, 0xe1, 0x3, 0xe1, 0x3, 0xe1, + 0x3, 0xe1, 0x3, 0xe1, 0x3, 0xe1, 0x3, 0xe2, 0x3, 0xe2, 0x3, 0xe2, + 0x3, 0xe2, 0x3, 0xe2, 0x3, 0xe2, 0x3, 0xe2, 0x3, 0xe2, 0x3, 0xe3, + 0x3, 0xe3, 0x3, 0xe3, 0x3, 0xe3, 0x3, 0xe3, 0x3, 0xe3, 0x3, 0xe3, + 0x3, 0xe3, 0x3, 0xe4, 0x3, 0xe4, 0x3, 0xe4, 0x3, 0xe4, 0x3, 0xe4, + 0x3, 0xe4, 0x3, 0xe4, 0x3, 0xe4, 0x3, 0xe5, 0x3, 0xe5, 0x3, 0xe5, + 0x3, 0xe5, 0x3, 0xe5, 0x3, 0xe5, 0x3, 0xe5, 0x3, 0xe5, 0x3, 0xe6, + 0x3, 0xe6, 0x3, 0xe6, 0x3, 0xe6, 0x3, 0xe6, 0x3, 0xe6, 0x3, 0xe6, + 0x3, 0xe6, 0x3, 0xe7, 0x3, 0xe7, 0x3, 0xe7, 0x3, 0xe7, 0x3, 0xe7, + 0x3, 0xe7, 0x3, 0xe7, 0x3, 0xe7, 0x3, 0xe8, 0x3, 0xe8, 0x3, 0xe8, + 0x3, 0xe8, 0x3, 0xe8, 0x3, 0xe8, 0x3, 0xe8, 0x3, 0xe8, 0x3, 0xe8, + 0x3, 0xe9, 0x3, 0xe9, 0x3, 0xe9, 0x3, 0xe9, 0x3, 0xe9, 0x3, 0xe9, + 0x3, 0xe9, 0x3, 0xe9, 0x3, 0xe9, 0x3, 0xea, 0x3, 0xea, 0x3, 0xea, + 0x3, 0xea, 0x3, 0xea, 0x3, 0xea, 0x3, 0xea, 0x3, 0xea, 0x3, 0xea, + 0x3, 0xeb, 0x3, 0xeb, 0x3, 0xeb, 0x3, 0xeb, 0x3, 0xeb, 0x3, 0xeb, + 0x3, 0xec, 0x3, 0xec, 0x3, 0xec, 0x3, 0xec, 0x3, 0xec, 0x3, 0xec, + 0x3, 0xec, 0x3, 0xec, 0x3, 0xec, 0x3, 0xed, 0x3, 0xed, 0x3, 0xed, + 0x3, 0xed, 0x3, 0xed, 0x3, 0xed, 0x3, 0xee, 0x3, 0xee, 0x3, 0xee, + 0x3, 0xee, 0x3, 0xee, 0x3, 0xee, 0x3, 0xee, 0x3, 0xef, 0x3, 0xef, + 0x3, 0xef, 0x3, 0xef, 0x3, 0xef, 0x3, 0xef, 0x3, 0xef, 0x3, 0xf0, + 0x3, 0xf0, 0x3, 0xf0, 0x3, 0xf0, 0x3, 0xf0, 0x3, 0xf0, 0x3, 0xf0, + 0x3, 0xf1, 0x3, 0xf1, 0x3, 0xf1, 0x3, 0xf1, 0x3, 0xf1, 0x3, 0xf1, + 0x3, 0xf1, 0x3, 0xf2, 0x3, 0xf2, 0x3, 0xf2, 0x3, 0xf2, 0x3, 0xf2, + 0x3, 0xf2, 0x3, 0xf2, 0x3, 0xf2, 0x3, 0xf2, 0x3, 0xf3, 0x3, 0xf3, + 0x3, 0xf3, 0x3, 0xf3, 0x3, 0xf3, 0x3, 0xf3, 0x3, 0xf3, 0x3, 0xf3, + 0x3, 0xf3, 0x3, 0xf4, 0x3, 0xf4, 0x3, 0xf4, 0x3, 0xf4, 0x3, 0xf4, + 0x3, 0xf4, 0x3, 0xf4, 0x3, 0xf4, 0x3, 0xf4, 0x3, 0xf5, 0x3, 0xf5, + 0x3, 0xf5, 0x3, 0xf5, 0x3, 0xf5, 0x3, 0xf5, 0x3, 0xf5, 0x3, 0xf5, + 0x3, 0xf5, 0x3, 0xf6, 0x3, 0xf6, 0x3, 0xf6, 0x3, 0xf6, 0x3, 0xf6, + 0x3, 0xf6, 0x3, 0xf6, 0x3, 0xf6, 0x3, 0xf6, 0x3, 0xf7, 0x3, 0xf7, + 0x3, 0xf7, 0x3, 0xf7, 0x3, 0xf7, 0x3, 0xf7, 0x3, 0xf7, 0x3, 0xf7, + 0x3, 0xf7, 0x3, 0xf8, 0x3, 0xf8, 0x3, 0xf8, 0x3, 0xf8, 0x3, 0xf8, + 0x3, 0xf8, 0x3, 0xf8, 0x3, 0xf8, 0x3, 0xf8, 0x3, 0xf9, 0x3, 0xf9, + 0x3, 0xf9, 0x3, 0xf9, 0x3, 0xf9, 0x3, 0xf9, 0x3, 0xf9, 0x3, 0xf9, + 0x3, 0xf9, 0x3, 0xfa, 0x3, 0xfa, 0x3, 0xfa, 0x3, 0xfa, 0x3, 0xfa, + 0x3, 0xfa, 0x3, 0xfa, 0x3, 0xfa, 0x3, 0xfa, 0x3, 0xfb, 0x3, 0xfb, + 0x3, 0xfb, 0x3, 0xfb, 0x3, 0xfb, 0x3, 0xfb, 0x3, 0xfb, 0x3, 0xfb, + 0x3, 0xfb, 0x3, 0xfc, 0x3, 0xfc, 0x3, 0xfc, 0x3, 0xfc, 0x3, 0xfc, + 0x3, 0xfc, 0x3, 0xfc, 0x3, 0xfc, 0x3, 0xfc, 0x3, 0xfd, 0x3, 0xfd, + 0x3, 0xfd, 0x3, 0xfd, 0x3, 0xfd, 0x3, 0xfd, 0x3, 0xfd, 0x3, 0xfd, + 0x3, 0xfd, 0x3, 0xfe, 0x3, 0xfe, 0x3, 0xfe, 0x3, 0xfe, 0x3, 0xfe, + 0x3, 0xfe, 0x3, 0xfe, 0x3, 0xfe, 0x3, 0xfe, 0x3, 0xff, 0x3, 0xff, + 0x3, 0xff, 0x3, 0xff, 0x3, 0xff, 0x3, 0xff, 0x3, 0xff, 0x3, 0xff, + 0x3, 0xff, 0x3, 0x100, 0x3, 0x100, 0x3, 0x100, 0x3, 0x100, 0x3, 0x100, 0x3, 0x100, 0x3, 0x100, 0x3, 0x100, 0x3, 0x100, 0x3, 0x101, 0x3, 0x101, 0x3, 0x101, 0x3, 0x101, 0x3, 0x101, 0x3, 0x101, 0x3, 0x101, - 0x3, 0x101, 0x3, 0x101, 0x3, 0x101, 0x3, 0x101, 0x3, 0x101, 0x3, - 0x101, 0x3, 0x101, 0x3, 0x101, 0x3, 0x101, 0x3, 0x101, 0x3, 0x101, - 0x3, 0x101, 0x3, 0x101, 0x3, 0x101, 0x3, 0x101, 0x3, 0x101, 0x3, - 0x101, 0x3, 0x101, 0x3, 0x101, 0x3, 0x101, 0x3, 0x101, 0x3, 0x101, - 0x3, 0x101, 0x3, 0x102, 0x3, 0x102, 0x3, 0x102, 0x3, 0x102, 0x3, - 0x102, 0x3, 0x102, 0x3, 0x102, 0x3, 0x102, 0x3, 0x102, 0x3, 0x102, - 0x3, 0x102, 0x3, 0x102, 0x3, 0x102, 0x3, 0x102, 0x3, 0x102, 0x3, - 0x102, 0x3, 0x102, 0x3, 0x102, 0x3, 0x102, 0x3, 0x102, 0x3, 0x102, - 0x3, 0x102, 0x3, 0x102, 0x3, 0x103, 0x3, 0x103, 0x3, 0x103, 0x3, - 0x103, 0x3, 0x103, 0x3, 0x103, 0x3, 0x103, 0x3, 0x103, 0x3, 0x103, + 0x3, 0x101, 0x3, 0x101, 0x3, 0x102, 0x3, 0x102, 0x3, 0x102, 0x3, + 0x102, 0x3, 0x102, 0x3, 0x102, 0x3, 0x102, 0x3, 0x103, 0x3, 0x103, 0x3, 0x103, 0x3, 0x103, 0x3, 0x103, 0x3, 0x103, 0x3, 0x103, 0x3, - 0x103, 0x3, 0x103, 0x3, 0x103, 0x3, 0x103, 0x3, 0x103, 0x3, 0x103, - 0x3, 0x103, 0x3, 0x103, 0x3, 0x103, 0x3, 0x103, 0x3, 0x103, 0x3, - 0x104, 0x3, 0x104, 0x3, 0x104, 0x3, 0x104, 0x3, 0x104, 0x3, 0x104, - 0x3, 0x104, 0x3, 0x104, 0x3, 0x104, 0x3, 0x104, 0x3, 0x104, 0x3, - 0x104, 0x3, 0x104, 0x3, 0x104, 0x3, 0x104, 0x3, 0x104, 0x3, 0x104, - 0x3, 0x104, 0x3, 0x104, 0x3, 0x104, 0x3, 0x104, 0x3, 0x104, 0x3, - 0x104, 0x3, 0x104, 0x3, 0x104, 0x3, 0x104, 0x3, 0x105, 0x3, 0x105, - 0x3, 0x105, 0x3, 0x105, 0x3, 0x105, 0x3, 0x105, 0x3, 0x105, 0x3, - 0x105, 0x3, 0x105, 0x3, 0x105, 0x3, 0x105, 0x3, 0x105, 0x3, 0x105, - 0x3, 0x105, 0x3, 0x105, 0x3, 0x105, 0x3, 0x105, 0x3, 0x106, 0x3, - 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, + 0x103, 0x3, 0x103, 0x3, 0x104, 0x3, 0x104, 0x3, 0x104, 0x3, 0x104, + 0x3, 0x104, 0x3, 0x105, 0x3, 0x105, 0x3, 0x105, 0x3, 0x105, 0x3, + 0x105, 0x3, 0x105, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, - 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, - 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x107, + 0x3, 0x106, 0x3, 0x106, 0x3, 0x106, 0x3, 0x107, 0x3, 0x107, 0x3, + 0x107, 0x3, 0x107, 0x3, 0x107, 0x3, 0x107, 0x3, 0x107, 0x3, 0x107, 0x3, 0x107, 0x3, 0x107, 0x3, 0x107, 0x3, 0x107, 0x3, 0x107, 0x3, - 0x107, 0x3, 0x107, 0x3, 0x107, 0x3, 0x108, 0x3, 0x108, 0x3, 0x108, + 0x107, 0x3, 0x107, 0x3, 0x107, 0x3, 0x107, 0x3, 0x107, 0x3, 0x107, + 0x3, 0x108, 0x3, 0x108, 0x3, 0x108, 0x3, 0x108, 0x3, 0x108, 0x3, + 0x108, 0x3, 0x108, 0x3, 0x108, 0x3, 0x108, 0x3, 0x108, 0x3, 0x108, 0x3, 0x108, 0x3, 0x108, 0x3, 0x108, 0x3, 0x108, 0x3, 0x108, 0x3, - 0x108, 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, - 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, 0x10a, 0x3, + 0x108, 0x3, 0x108, 0x3, 0x108, 0x3, 0x108, 0x3, 0x109, 0x3, 0x109, + 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, + 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, + 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, + 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, + 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, 0x109, 0x3, + 0x109, 0x3, 0x10a, 0x3, 0x10a, 0x3, 0x10a, 0x3, 0x10a, 0x3, 0x10a, + 0x3, 0x10a, 0x3, 0x10a, 0x3, 0x10a, 0x3, 0x10a, 0x3, 0x10a, 0x3, 0x10a, 0x3, 0x10a, 0x3, 0x10a, 0x3, 0x10a, 0x3, 0x10a, 0x3, 0x10a, 0x3, 0x10a, 0x3, 0x10a, 0x3, 0x10a, 0x3, 0x10a, 0x3, 0x10a, 0x3, + 0x10a, 0x3, 0x10a, 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, + 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, - 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10c, 0x3, + 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, 0x3, + 0x10b, 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10b, 0x3, 0x10c, + 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, + 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, + 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10c, 0x3, 0x10d, 0x3, 0x10d, 0x3, 0x10d, 0x3, 0x10d, 0x3, 0x10d, 0x3, 0x10d, 0x3, 0x10d, 0x3, 0x10d, - 0x3, 0x10d, 0x3, 0x10d, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, + 0x3, 0x10d, 0x3, 0x10d, 0x3, 0x10d, 0x3, 0x10d, 0x3, 0x10d, 0x3, + 0x10d, 0x3, 0x10d, 0x3, 0x10d, 0x3, 0x10d, 0x3, 0x10e, 0x3, 0x10e, + 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, + 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, + 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10e, 0x3, 0x10f, 0x3, 0x10f, 0x3, 0x10f, 0x3, 0x10f, 0x3, 0x10f, 0x3, 0x10f, 0x3, 0x10f, - 0x3, 0x10f, 0x3, 0x110, 0x3, 0x110, 0x3, 0x110, 0x3, 0x110, 0x3, - 0x110, 0x3, 0x110, 0x3, 0x110, 0x3, 0x111, 0x3, 0x111, 0x3, 0x111, + 0x3, 0x10f, 0x3, 0x10f, 0x3, 0x110, 0x3, 0x110, 0x3, 0x110, 0x3, + 0x110, 0x3, 0x110, 0x3, 0x110, 0x3, 0x110, 0x3, 0x110, 0x3, 0x110, 0x3, 0x111, 0x3, 0x111, 0x3, 0x111, 0x3, 0x111, 0x3, 0x111, 0x3, - 0x111, 0x3, 0x111, 0x3, 0x111, 0x3, 0x112, 0x3, 0x112, 0x3, 0x112, + 0x111, 0x3, 0x111, 0x3, 0x111, 0x3, 0x111, 0x3, 0x112, 0x3, 0x112, 0x3, 0x112, 0x3, 0x112, 0x3, 0x112, 0x3, 0x112, 0x3, 0x112, 0x3, - 0x112, 0x3, 0x112, 0x3, 0x112, 0x3, 0x112, 0x3, 0x112, 0x3, 0x112, - 0x3, 0x112, 0x3, 0x113, 0x3, 0x113, 0x3, 0x113, 0x3, 0x113, 0x3, - 0x113, 0x3, 0x113, 0x3, 0x113, 0x3, 0x113, 0x3, 0x113, 0x3, 0x113, - 0x3, 0x113, 0x3, 0x113, 0x3, 0x113, 0x3, 0x113, 0x3, 0x114, 0x3, - 0x114, 0x3, 0x114, 0x3, 0x114, 0x3, 0x114, 0x3, 0x114, 0x3, 0x115, + 0x112, 0x3, 0x112, 0x3, 0x112, 0x3, 0x112, 0x3, 0x112, 0x3, 0x113, + 0x3, 0x113, 0x3, 0x113, 0x3, 0x113, 0x3, 0x113, 0x3, 0x113, 0x3, + 0x113, 0x3, 0x113, 0x3, 0x113, 0x3, 0x113, 0x3, 0x114, 0x3, 0x114, + 0x3, 0x114, 0x3, 0x114, 0x3, 0x114, 0x3, 0x114, 0x3, 0x114, 0x3, + 0x114, 0x3, 0x114, 0x3, 0x114, 0x3, 0x115, 0x3, 0x115, 0x3, 0x115, 0x3, 0x115, 0x3, 0x115, 0x3, 0x115, 0x3, 0x115, 0x3, 0x115, 0x3, - 0x115, 0x3, 0x116, 0x3, 0x116, 0x3, 0x116, 0x3, 0x116, 0x3, 0x116, - 0x3, 0x116, 0x3, 0x116, 0x3, 0x117, 0x3, 0x117, 0x3, 0x117, 0x3, - 0x117, 0x3, 0x117, 0x3, 0x117, 0x3, 0x117, 0x3, 0x117, 0x3, 0x117, - 0x3, 0x117, 0x3, 0x117, 0x3, 0x118, 0x3, 0x118, 0x3, 0x118, 0x3, - 0x118, 0x3, 0x118, 0x3, 0x118, 0x3, 0x118, 0x3, 0x118, 0x3, 0x119, - 0x3, 0x119, 0x3, 0x119, 0x3, 0x119, 0x3, 0x119, 0x3, 0x119, 0x3, - 0x119, 0x3, 0x119, 0x3, 0x11a, 0x3, 0x11a, 0x3, 0x11a, 0x3, 0x11a, - 0x3, 0x11a, 0x3, 0x11b, 0x3, 0x11b, 0x3, 0x11b, 0x3, 0x11b, 0x3, - 0x11b, 0x3, 0x11b, 0x3, 0x11b, 0x3, 0x11c, 0x3, 0x11c, 0x3, 0x11c, - 0x3, 0x11c, 0x3, 0x11c, 0x3, 0x11c, 0x3, 0x11d, 0x3, 0x11d, 0x3, - 0x11d, 0x3, 0x11d, 0x3, 0x11d, 0x3, 0x11d, 0x3, 0x11d, 0x3, 0x11e, + 0x115, 0x3, 0x115, 0x3, 0x116, 0x3, 0x116, 0x3, 0x116, 0x3, 0x116, + 0x3, 0x116, 0x3, 0x116, 0x3, 0x116, 0x3, 0x116, 0x3, 0x116, 0x3, + 0x116, 0x3, 0x116, 0x3, 0x116, 0x3, 0x116, 0x3, 0x116, 0x3, 0x117, + 0x3, 0x117, 0x3, 0x117, 0x3, 0x117, 0x3, 0x117, 0x3, 0x117, 0x3, + 0x117, 0x3, 0x118, 0x3, 0x118, 0x3, 0x118, 0x3, 0x118, 0x3, 0x118, + 0x3, 0x118, 0x3, 0x118, 0x3, 0x119, 0x3, 0x119, 0x3, 0x119, 0x3, + 0x119, 0x3, 0x119, 0x3, 0x119, 0x3, 0x119, 0x3, 0x119, 0x3, 0x119, + 0x3, 0x119, 0x3, 0x119, 0x3, 0x11a, 0x3, 0x11a, 0x3, 0x11a, 0x3, + 0x11a, 0x3, 0x11a, 0x3, 0x11a, 0x3, 0x11a, 0x3, 0x11a, 0x3, 0x11a, + 0x3, 0x11a, 0x3, 0x11a, 0x3, 0x11a, 0x3, 0x11a, 0x3, 0x11a, 0x3, + 0x11a, 0x3, 0x11b, 0x3, 0x11b, 0x3, 0x11b, 0x3, 0x11b, 0x3, 0x11b, + 0x3, 0x11b, 0x3, 0x11b, 0x3, 0x11b, 0x3, 0x11b, 0x3, 0x11b, 0x3, + 0x11b, 0x3, 0x11b, 0x3, 0x11b, 0x3, 0x11b, 0x3, 0x11c, 0x3, 0x11c, + 0x3, 0x11c, 0x3, 0x11c, 0x3, 0x11c, 0x3, 0x11c, 0x3, 0x11d, 0x3, + 0x11d, 0x3, 0x11d, 0x3, 0x11d, 0x3, 0x11d, 0x3, 0x11d, 0x3, 0x11d, 0x3, 0x11e, 0x3, 0x11e, 0x3, 0x11e, 0x3, 0x11e, 0x3, 0x11e, 0x3, - 0x11e, 0x3, 0x11e, 0x3, 0x11e, 0x3, 0x11e, 0x3, 0x11e, 0x3, 0x11f, + 0x11e, 0x3, 0x11e, 0x3, 0x11f, 0x3, 0x11f, 0x3, 0x11f, 0x3, 0x11f, 0x3, 0x11f, 0x3, 0x11f, 0x3, 0x11f, 0x3, 0x11f, 0x3, 0x11f, 0x3, - 0x120, 0x3, 0x120, 0x3, 0x120, 0x3, 0x120, 0x3, 0x120, 0x3, 0x121, - 0x3, 0x121, 0x3, 0x121, 0x3, 0x121, 0x3, 0x121, 0x3, 0x121, 0x3, - 0x122, 0x3, 0x122, 0x3, 0x122, 0x3, 0x122, 0x3, 0x122, 0x3, 0x122, - 0x3, 0x122, 0x3, 0x122, 0x3, 0x122, 0x3, 0x122, 0x3, 0x123, 0x3, - 0x123, 0x3, 0x123, 0x3, 0x123, 0x3, 0x123, 0x3, 0x123, 0x3, 0x123, - 0x3, 0x123, 0x3, 0x124, 0x3, 0x124, 0x3, 0x124, 0x3, 0x124, 0x3, - 0x124, 0x3, 0x124, 0x3, 0x124, 0x3, 0x124, 0x3, 0x124, 0x3, 0x125, - 0x3, 0x125, 0x3, 0x125, 0x3, 0x125, 0x3, 0x125, 0x3, 0x125, 0x3, - 0x125, 0x3, 0x125, 0x3, 0x125, 0x3, 0x125, 0x3, 0x125, 0x3, 0x125, - 0x3, 0x125, 0x3, 0x126, 0x3, 0x126, 0x3, 0x126, 0x3, 0x126, 0x3, - 0x126, 0x3, 0x126, 0x3, 0x126, 0x3, 0x127, 0x3, 0x127, 0x3, 0x127, - 0x3, 0x127, 0x3, 0x127, 0x3, 0x127, 0x3, 0x127, 0x3, 0x127, 0x3, - 0x127, 0x3, 0x127, 0x3, 0x127, 0x3, 0x127, 0x3, 0x128, 0x3, 0x128, - 0x3, 0x128, 0x3, 0x128, 0x3, 0x128, 0x3, 0x128, 0x3, 0x128, 0x3, - 0x128, 0x3, 0x128, 0x3, 0x128, 0x3, 0x128, 0x3, 0x128, 0x3, 0x128, + 0x11f, 0x3, 0x11f, 0x3, 0x120, 0x3, 0x120, 0x3, 0x120, 0x3, 0x120, + 0x3, 0x120, 0x3, 0x120, 0x3, 0x120, 0x3, 0x120, 0x3, 0x121, 0x3, + 0x121, 0x3, 0x121, 0x3, 0x121, 0x3, 0x121, 0x3, 0x121, 0x3, 0x121, + 0x3, 0x121, 0x3, 0x122, 0x3, 0x122, 0x3, 0x122, 0x3, 0x122, 0x3, + 0x122, 0x3, 0x123, 0x3, 0x123, 0x3, 0x123, 0x3, 0x123, 0x3, 0x123, + 0x3, 0x123, 0x3, 0x123, 0x3, 0x124, 0x3, 0x124, 0x3, 0x124, 0x3, + 0x124, 0x3, 0x124, 0x3, 0x124, 0x3, 0x125, 0x3, 0x125, 0x3, 0x125, + 0x3, 0x125, 0x3, 0x125, 0x3, 0x125, 0x3, 0x125, 0x3, 0x126, 0x3, + 0x126, 0x3, 0x126, 0x3, 0x126, 0x3, 0x126, 0x3, 0x126, 0x3, 0x126, + 0x3, 0x126, 0x3, 0x126, 0x3, 0x126, 0x3, 0x126, 0x3, 0x127, 0x3, + 0x127, 0x3, 0x127, 0x3, 0x127, 0x3, 0x127, 0x3, 0x127, 0x3, 0x128, 0x3, 0x128, 0x3, 0x128, 0x3, 0x128, 0x3, 0x128, 0x3, 0x129, 0x3, - 0x129, 0x3, 0x129, 0x3, 0x129, 0x3, 0x129, 0x3, 0x129, 0x3, 0x129, - 0x3, 0x129, 0x3, 0x129, 0x3, 0x129, 0x3, 0x129, 0x3, 0x129, 0x3, - 0x12a, 0x3, 0x12a, 0x3, 0x12b, 0x3, 0x12b, 0x3, 0x12c, 0x3, 0x12c, - 0x3, 0x12d, 0x3, 0x12d, 0x3, 0x12e, 0x3, 0x12e, 0x3, 0x12f, 0x3, - 0x12f, 0x3, 0x130, 0x3, 0x130, 0x3, 0x130, 0x3, 0x131, 0x3, 0x131, - 0x3, 0x132, 0x3, 0x132, 0x3, 0x132, 0x3, 0x133, 0x3, 0x133, 0x3, - 0x134, 0x3, 0x134, 0x3, 0x134, 0x3, 0x135, 0x3, 0x135, 0x3, 0x135, - 0x3, 0x136, 0x3, 0x136, 0x3, 0x136, 0x3, 0x137, 0x3, 0x137, 0x3, - 0x138, 0x3, 0x138, 0x3, 0x138, 0x3, 0x139, 0x3, 0x139, 0x3, 0x13a, - 0x3, 0x13a, 0x3, 0x13a, 0x3, 0x13b, 0x3, 0x13b, 0x3, 0x13c, 0x3, - 0x13c, 0x3, 0x13d, 0x3, 0x13d, 0x3, 0x13e, 0x3, 0x13e, 0x3, 0x13f, - 0x3, 0x13f, 0x3, 0x140, 0x3, 0x140, 0x3, 0x140, 0x3, 0x141, 0x3, - 0x141, 0x3, 0x141, 0x3, 0x142, 0x3, 0x142, 0x3, 0x143, 0x3, 0x143, - 0x3, 0x144, 0x3, 0x144, 0x3, 0x145, 0x3, 0x145, 0x3, 0x146, 0x3, - 0x146, 0x3, 0x147, 0x3, 0x147, 0x3, 0x147, 0x3, 0x148, 0x3, 0x148, - 0x3, 0x149, 0x3, 0x149, 0x3, 0x14a, 0x3, 0x14a, 0x3, 0x14b, 0x3, - 0x14b, 0x3, 0x14b, 0x3, 0x14c, 0x3, 0x14c, 0x3, 0x14c, 0x3, 0x14d, - 0x3, 0x14d, 0x3, 0x14d, 0x3, 0x14e, 0x3, 0x14e, 0x3, 0x14e, 0x3, - 0x14f, 0x3, 0x14f, 0x3, 0x14f, 0x3, 0x150, 0x3, 0x150, 0x3, 0x150, - 0x3, 0x150, 0x3, 0x151, 0x3, 0x151, 0x3, 0x151, 0x3, 0x151, 0x3, - 0x152, 0x3, 0x152, 0x3, 0x152, 0x3, 0x153, 0x3, 0x153, 0x3, 0x153, - 0x3, 0x154, 0x3, 0x154, 0x3, 0x154, 0x3, 0x155, 0x3, 0x155, 0x3, - 0x155, 0x3, 0x156, 0x3, 0x156, 0x3, 0x156, 0x3, 0x157, 0x3, 0x157, - 0x3, 0x158, 0x3, 0x158, 0x3, 0x158, 0x3, 0x158, 0x3, 0x158, 0x3, - 0x159, 0x3, 0x159, 0x3, 0x159, 0x3, 0x159, 0x3, 0x159, 0x3, 0x159, - 0x3, 0x15a, 0x3, 0x15a, 0x3, 0x15a, 0x3, 0x15a, 0x3, 0x15a, 0x3, - 0x15a, 0x3, 0x15a, 0x3, 0x15a, 0x3, 0x15a, 0x3, 0x15a, 0x3, 0x15a, - 0x3, 0x15a, 0x3, 0x15a, 0x3, 0x15a, 0x3, 0x15a, 0x3, 0x15b, 0x3, - 0x15b, 0x3, 0x15b, 0x3, 0x15b, 0x3, 0x15b, 0x3, 0x15b, 0x3, 0x15b, - 0x3, 0x15b, 0x3, 0x15b, 0x3, 0x15b, 0x3, 0x15c, 0x3, 0x15c, 0x3, - 0x15c, 0x3, 0x15c, 0x3, 0x15c, 0x3, 0x15c, 0x3, 0x15c, 0x3, 0x15c, - 0x3, 0x15d, 0x3, 0x15d, 0x3, 0x15d, 0x3, 0x15d, 0x3, 0x15d, 0x3, - 0x15d, 0x3, 0x15d, 0x3, 0x15d, 0x3, 0x15d, 0x3, 0x15d, 0x3, 0x15d, - 0x3, 0x15d, 0x3, 0x15e, 0x3, 0x15e, 0x3, 0x15e, 0x3, 0x15e, 0x3, - 0x15e, 0x3, 0x15e, 0x3, 0x15e, 0x3, 0x15f, 0x3, 0x15f, 0x3, 0x15f, - 0x3, 0x15f, 0x3, 0x15f, 0x3, 0x15f, 0x3, 0x15f, 0x3, 0x15f, 0x3, - 0x15f, 0x3, 0x15f, 0x3, 0x15f, 0x3, 0x15f, 0x3, 0x15f, 0x3, 0x15f, - 0x3, 0x15f, 0x3, 0x15f, 0x3, 0x15f, 0x3, 0x15f, 0x3, 0x15f, 0x3, - 0x15f, 0x3, 0x15f, 0x3, 0x15f, 0x3, 0x160, 0x3, 0x160, 0x3, 0x160, - 0x3, 0x160, 0x3, 0x160, 0x3, 0x160, 0x3, 0x160, 0x3, 0x160, 0x3, - 0x160, 0x3, 0x160, 0x3, 0x160, 0x3, 0x160, 0x3, 0x160, 0x3, 0x160, - 0x3, 0x160, 0x3, 0x160, 0x3, 0x160, 0x3, 0x160, 0x3, 0x160, 0x3, - 0x160, 0x3, 0x160, 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, + 0x129, 0x3, 0x129, 0x3, 0x129, 0x3, 0x129, 0x3, 0x129, 0x3, 0x12a, + 0x3, 0x12a, 0x3, 0x12a, 0x3, 0x12a, 0x3, 0x12a, 0x3, 0x12a, 0x3, + 0x12a, 0x3, 0x12a, 0x3, 0x12a, 0x3, 0x12a, 0x3, 0x12b, 0x3, 0x12b, + 0x3, 0x12b, 0x3, 0x12b, 0x3, 0x12b, 0x3, 0x12b, 0x3, 0x12b, 0x3, + 0x12b, 0x3, 0x12c, 0x3, 0x12c, 0x3, 0x12c, 0x3, 0x12c, 0x3, 0x12c, + 0x3, 0x12c, 0x3, 0x12c, 0x3, 0x12c, 0x3, 0x12c, 0x3, 0x12d, 0x3, + 0x12d, 0x3, 0x12d, 0x3, 0x12d, 0x3, 0x12d, 0x3, 0x12d, 0x3, 0x12d, + 0x3, 0x12d, 0x3, 0x12d, 0x3, 0x12d, 0x3, 0x12d, 0x3, 0x12d, 0x3, + 0x12d, 0x3, 0x12e, 0x3, 0x12e, 0x3, 0x12e, 0x3, 0x12e, 0x3, 0x12e, + 0x3, 0x12e, 0x3, 0x12e, 0x3, 0x12f, 0x3, 0x12f, 0x3, 0x12f, 0x3, + 0x12f, 0x3, 0x12f, 0x3, 0x12f, 0x3, 0x12f, 0x3, 0x12f, 0x3, 0x12f, + 0x3, 0x12f, 0x3, 0x12f, 0x3, 0x12f, 0x3, 0x130, 0x3, 0x130, 0x3, + 0x130, 0x3, 0x130, 0x3, 0x130, 0x3, 0x130, 0x3, 0x130, 0x3, 0x130, + 0x3, 0x130, 0x3, 0x130, 0x3, 0x130, 0x3, 0x130, 0x3, 0x130, 0x3, + 0x130, 0x3, 0x130, 0x3, 0x130, 0x3, 0x130, 0x3, 0x131, 0x3, 0x131, + 0x3, 0x131, 0x3, 0x131, 0x3, 0x131, 0x3, 0x131, 0x3, 0x131, 0x3, + 0x131, 0x3, 0x131, 0x3, 0x131, 0x3, 0x131, 0x3, 0x131, 0x3, 0x132, + 0x3, 0x132, 0x3, 0x133, 0x3, 0x133, 0x3, 0x134, 0x3, 0x134, 0x3, + 0x135, 0x3, 0x135, 0x3, 0x136, 0x3, 0x136, 0x3, 0x137, 0x3, 0x137, + 0x3, 0x138, 0x3, 0x138, 0x3, 0x138, 0x3, 0x139, 0x3, 0x139, 0x3, + 0x13a, 0x3, 0x13a, 0x3, 0x13a, 0x3, 0x13b, 0x3, 0x13b, 0x3, 0x13c, + 0x3, 0x13c, 0x3, 0x13c, 0x3, 0x13d, 0x3, 0x13d, 0x3, 0x13d, 0x3, + 0x13e, 0x3, 0x13e, 0x3, 0x13e, 0x3, 0x13f, 0x3, 0x13f, 0x3, 0x140, + 0x3, 0x140, 0x3, 0x140, 0x3, 0x141, 0x3, 0x141, 0x3, 0x142, 0x3, + 0x142, 0x3, 0x142, 0x3, 0x143, 0x3, 0x143, 0x3, 0x144, 0x3, 0x144, + 0x3, 0x145, 0x3, 0x145, 0x3, 0x146, 0x3, 0x146, 0x3, 0x147, 0x3, + 0x147, 0x3, 0x148, 0x3, 0x148, 0x3, 0x148, 0x3, 0x149, 0x3, 0x149, + 0x3, 0x149, 0x3, 0x14a, 0x3, 0x14a, 0x3, 0x14b, 0x3, 0x14b, 0x3, + 0x14c, 0x3, 0x14c, 0x3, 0x14d, 0x3, 0x14d, 0x3, 0x14e, 0x3, 0x14e, + 0x3, 0x14f, 0x3, 0x14f, 0x3, 0x14f, 0x3, 0x150, 0x3, 0x150, 0x3, + 0x151, 0x3, 0x151, 0x3, 0x152, 0x3, 0x152, 0x3, 0x153, 0x3, 0x153, + 0x3, 0x153, 0x3, 0x154, 0x3, 0x154, 0x3, 0x154, 0x3, 0x155, 0x3, + 0x155, 0x3, 0x155, 0x3, 0x156, 0x3, 0x156, 0x3, 0x156, 0x3, 0x157, + 0x3, 0x157, 0x3, 0x157, 0x3, 0x158, 0x3, 0x158, 0x3, 0x158, 0x3, + 0x158, 0x3, 0x159, 0x3, 0x159, 0x3, 0x159, 0x3, 0x159, 0x3, 0x15a, + 0x3, 0x15a, 0x3, 0x15a, 0x3, 0x15b, 0x3, 0x15b, 0x3, 0x15b, 0x3, + 0x15c, 0x3, 0x15c, 0x3, 0x15c, 0x3, 0x15d, 0x3, 0x15d, 0x3, 0x15d, + 0x3, 0x15e, 0x3, 0x15e, 0x3, 0x15e, 0x3, 0x15f, 0x3, 0x15f, 0x3, + 0x160, 0x3, 0x160, 0x3, 0x160, 0x3, 0x160, 0x3, 0x160, 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, 0x3, - 0x161, 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, - 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, 0x3, - 0x161, 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, - 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, 0x3, 0x161, 0x3, - 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, - 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, - 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, - 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x163, 0x3, 0x163, 0x3, - 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, 0x163, - 0x3, 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, - 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, 0x163, + 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x162, 0x3, 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, - 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, 0x163, + 0x163, 0x3, 0x163, 0x3, 0x163, 0x3, 0x164, 0x3, 0x164, 0x3, 0x164, 0x3, 0x164, 0x3, 0x164, 0x3, 0x164, 0x3, 0x164, 0x3, 0x164, 0x3, - 0x164, 0x3, 0x164, 0x3, 0x164, 0x3, 0x164, 0x3, 0x164, 0x3, 0x164, - 0x3, 0x164, 0x3, 0x165, 0x3, 0x165, 0x3, 0x165, 0x3, 0x165, 0x3, 0x165, 0x3, 0x165, 0x3, 0x165, 0x3, 0x165, 0x3, 0x165, 0x3, 0x165, 0x3, 0x165, 0x3, 0x165, 0x3, 0x165, 0x3, 0x165, 0x3, 0x165, 0x3, - 0x165, 0x3, 0x165, 0x3, 0x165, 0x3, 0x165, 0x3, 0x165, 0x3, 0x165, - 0x3, 0x165, 0x3, 0x166, 0x3, 0x166, 0x3, 0x166, 0x3, 0x166, 0x3, - 0x166, 0x3, 0x166, 0x3, 0x166, 0x3, 0x166, 0x3, 0x166, 0x3, 0x166, - 0x3, 0x166, 0x3, 0x166, 0x3, 0x166, 0x3, 0x166, 0x3, 0x166, 0x3, - 0x166, 0x3, 0x166, 0x3, 0x166, 0x3, 0x166, 0x3, 0x166, 0x3, 0x166, - 0x3, 0x166, 0x3, 0x166, 0x3, 0x166, 0x3, 0x166, 0x3, 0x166, 0x3, - 0x166, 0x3, 0x166, 0x3, 0x167, 0x3, 0x167, 0x3, 0x167, 0x3, 0x167, - 0x3, 0x167, 0x3, 0x167, 0x3, 0x167, 0x3, 0x167, 0x3, 0x167, 0x3, + 0x165, 0x3, 0x166, 0x3, 0x166, 0x3, 0x166, 0x3, 0x166, 0x3, 0x166, + 0x3, 0x166, 0x3, 0x166, 0x3, 0x167, 0x3, 0x167, 0x3, 0x167, 0x3, 0x167, 0x3, 0x167, 0x3, 0x167, 0x3, 0x167, 0x3, 0x167, 0x3, 0x167, - 0x3, 0x167, 0x3, 0x167, 0x3, 0x167, 0x3, 0x167, 0x3, 0x167, 0x3, - 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, - 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x7, 0x168, 0x1051, - 0xa, 0x168, 0xc, 0x168, 0xe, 0x168, 0x1054, 0xb, 0x168, 0x3, 0x168, - 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, - 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, - 0x3, 0x168, 0x3, 0x168, 0x7, 0x168, 0x1064, 0xa, 0x168, 0xc, 0x168, - 0xe, 0x168, 0x1067, 0xb, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, - 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, - 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x7, 0x168, - 0x1076, 0xa, 0x168, 0xc, 0x168, 0xe, 0x168, 0x1079, 0xb, 0x168, 0x3, - 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, - 0x3, 0x168, 0x7, 0x168, 0x1082, 0xa, 0x168, 0xc, 0x168, 0xe, 0x168, - 0x1085, 0xb, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, - 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x7, 0x168, 0x108f, - 0xa, 0x168, 0xc, 0x168, 0xe, 0x168, 0x1092, 0xb, 0x168, 0x3, 0x168, - 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, - 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x7, 0x168, 0x109e, 0xa, - 0x168, 0xc, 0x168, 0xe, 0x168, 0x10a1, 0xb, 0x168, 0x3, 0x168, 0x3, - 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, - 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, - 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x7, 0x168, 0x10b3, 0xa, - 0x168, 0xc, 0x168, 0xe, 0x168, 0x10b6, 0xb, 0x168, 0x3, 0x168, 0x3, - 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, - 0x3, 0x168, 0x3, 0x168, 0x7, 0x168, 0x10c1, 0xa, 0x168, 0xc, 0x168, - 0xe, 0x168, 0x10c4, 0xb, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, - 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, - 0x168, 0x3, 0x168, 0x7, 0x168, 0x10d0, 0xa, 0x168, 0xc, 0x168, 0xe, - 0x168, 0x10d3, 0xb, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, + 0x3, 0x167, 0x3, 0x167, 0x3, 0x167, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, - 0x168, 0x7, 0x168, 0x10e4, 0xa, 0x168, 0xc, 0x168, 0xe, 0x168, 0x10e7, - 0xb, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, - 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, - 0x7, 0x168, 0x10f3, 0xa, 0x168, 0xc, 0x168, 0xe, 0x168, 0x10f6, 0xb, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, - 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, - 0x168, 0x7, 0x168, 0x1103, 0xa, 0x168, 0xc, 0x168, 0xe, 0x168, 0x1106, - 0xb, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, - 0x168, 0x3, 0x168, 0x3, 0x168, 0x7, 0x168, 0x110f, 0xa, 0x168, 0xc, - 0x168, 0xe, 0x168, 0x1112, 0xb, 0x168, 0x5, 0x168, 0x1114, 0xa, 0x168, + 0x3, 0x168, 0x3, 0x168, 0x3, 0x168, 0x3, 0x169, 0x3, 0x169, 0x3, + 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, + 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, + 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, - 0x169, 0x7, 0x169, 0x111c, 0xa, 0x169, 0xc, 0x169, 0xe, 0x169, 0x111f, - 0xb, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, - 0x169, 0x3, 0x169, 0x7, 0x169, 0x1127, 0xa, 0x169, 0xc, 0x169, 0xe, - 0x169, 0x112a, 0xb, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, - 0x169, 0x3, 0x169, 0x3, 0x169, 0x7, 0x169, 0x1132, 0xa, 0x169, 0xc, - 0x169, 0xe, 0x169, 0x1135, 0xb, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, - 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x7, 0x169, 0x113d, 0xa, - 0x169, 0xc, 0x169, 0xe, 0x169, 0x1140, 0xb, 0x169, 0x5, 0x169, 0x1142, - 0xa, 0x169, 0x3, 0x16a, 0x3, 0x16a, 0x3, 0x16a, 0x7, 0x16a, 0x1147, - 0xa, 0x16a, 0xc, 0x16a, 0xe, 0x16a, 0x114a, 0xb, 0x16a, 0x3, 0x16b, - 0x3, 0x16b, 0x3, 0x16c, 0x3, 0x16c, 0x3, 0x16d, 0x6, 0x16d, 0x1151, - 0xa, 0x16d, 0xd, 0x16d, 0xe, 0x16d, 0x1152, 0x3, 0x16e, 0x3, 0x16e, - 0x3, 0x16e, 0x3, 0x16e, 0x5, 0x16e, 0x1159, 0xa, 0x16e, 0x3, 0x16e, - 0x6, 0x16e, 0x115c, 0xa, 0x16e, 0xd, 0x16e, 0xe, 0x16e, 0x115d, 0x3, - 0x16f, 0x3, 0x16f, 0x3, 0x170, 0x5, 0x170, 0x1163, 0xa, 0x170, 0x3, - 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x5, 0x170, - 0x116a, 0xa, 0x170, 0x3, 0x171, 0x3, 0x171, 0x5, 0x171, 0x116e, 0xa, - 0x171, 0x3, 0x171, 0x3, 0x171, 0x3, 0x171, 0x5, 0x171, 0x1173, 0xa, - 0x171, 0x3, 0x171, 0x5, 0x171, 0x1176, 0xa, 0x171, 0x3, 0x172, 0x3, - 0x172, 0x3, 0x173, 0x6, 0x173, 0x117b, 0xa, 0x173, 0xd, 0x173, 0xe, - 0x173, 0x117c, 0x3, 0x174, 0x6, 0x174, 0x1180, 0xa, 0x174, 0xd, 0x174, - 0xe, 0x174, 0x1181, 0x3, 0x175, 0x5, 0x175, 0x1185, 0xa, 0x175, 0x3, - 0x175, 0x5, 0x175, 0x1188, 0xa, 0x175, 0x3, 0x175, 0x5, 0x175, 0x118b, - 0xa, 0x175, 0x3, 0x175, 0x5, 0x175, 0x118e, 0xa, 0x175, 0x3, 0x175, - 0x5, 0x175, 0x1191, 0xa, 0x175, 0x5, 0x175, 0x1193, 0xa, 0x175, 0x3, - 0x176, 0x3, 0x176, 0x5, 0x176, 0x1197, 0xa, 0x176, 0x3, 0x176, 0x3, - 0x176, 0x5, 0x176, 0x119b, 0xa, 0x176, 0x5, 0x176, 0x119d, 0xa, 0x176, - 0x3, 0x177, 0x3, 0x177, 0x3, 0x178, 0x3, 0x178, 0x5, 0x178, 0x11a3, - 0xa, 0x178, 0x3, 0x178, 0x5, 0x178, 0x11a6, 0xa, 0x178, 0x3, 0x178, - 0x3, 0x178, 0x3, 0x178, 0x5, 0x178, 0x11ab, 0xa, 0x178, 0x5, 0x178, - 0x11ad, 0xa, 0x178, 0x3, 0x179, 0x3, 0x179, 0x3, 0x17a, 0x3, 0x17a, - 0x3, 0x17a, 0x3, 0x17b, 0x3, 0x17b, 0x5, 0x17b, 0x11b6, 0xa, 0x17b, - 0x3, 0x17b, 0x3, 0x17b, 0x3, 0x17c, 0x6, 0x17c, 0x11bb, 0xa, 0x17c, - 0xd, 0x17c, 0xe, 0x17c, 0x11bc, 0x3, 0x17d, 0x3, 0x17d, 0x5, 0x17d, - 0x11c1, 0xa, 0x17d, 0x3, 0x17e, 0x3, 0x17e, 0x5, 0x17e, 0x11c5, 0xa, - 0x17e, 0x3, 0x17e, 0x3, 0x17e, 0x3, 0x17e, 0x3, 0x17e, 0x3, 0x17e, - 0x3, 0x17e, 0x3, 0x17e, 0x3, 0x17e, 0x3, 0x17e, 0x7, 0x17e, 0x11d0, - 0xa, 0x17e, 0xc, 0x17e, 0xe, 0x17e, 0x11d3, 0xb, 0x17e, 0x3, 0x17e, - 0x3, 0x17e, 0x3, 0x17f, 0x3, 0x17f, 0x5, 0x17f, 0x11d9, 0xa, 0x17f, - 0x3, 0x17f, 0x3, 0x17f, 0x3, 0x17f, 0x3, 0x17f, 0x3, 0x17f, 0x3, - 0x17f, 0x5, 0x17f, 0x11e1, 0xa, 0x17f, 0x3, 0x17f, 0x3, 0x17f, 0x5, - 0x17f, 0x11e5, 0xa, 0x17f, 0x3, 0x17f, 0x5, 0x17f, 0x11e8, 0xa, 0x17f, - 0x3, 0x17f, 0x3, 0x17f, 0x3, 0x180, 0x6, 0x180, 0x11ed, 0xa, 0x180, - 0xd, 0x180, 0xe, 0x180, 0x11ee, 0x3, 0x180, 0x3, 0x180, 0x3, 0x181, - 0x3, 0x181, 0x5, 0x181, 0x11f5, 0xa, 0x181, 0x3, 0x181, 0x5, 0x181, - 0x11f8, 0xa, 0x181, 0x3, 0x181, 0x3, 0x181, 0x3, 0x182, 0x3, 0x182, - 0x3, 0x182, 0x3, 0x182, 0x7, 0x182, 0x1200, 0xa, 0x182, 0xc, 0x182, - 0xe, 0x182, 0x1203, 0xb, 0x182, 0x3, 0x182, 0x3, 0x182, 0x3, 0x182, - 0x3, 0x182, 0x3, 0x182, 0x3, 0x183, 0x3, 0x183, 0x3, 0x183, 0x3, - 0x183, 0x7, 0x183, 0x120e, 0xa, 0x183, 0xc, 0x183, 0xe, 0x183, 0x1211, - 0xb, 0x183, 0x3, 0x183, 0x3, 0x183, 0x3, 0x1201, 0x2, 0x184, 0x3, - 0x3, 0x5, 0x4, 0x7, 0x5, 0x9, 0x6, 0xb, 0x7, 0xd, 0x8, 0xf, 0x9, - 0x11, 0xa, 0x13, 0xb, 0x15, 0xc, 0x17, 0xd, 0x19, 0xe, 0x1b, 0xf, - 0x1d, 0x10, 0x1f, 0x11, 0x21, 0x12, 0x23, 0x13, 0x25, 0x14, 0x27, - 0x15, 0x29, 0x16, 0x2b, 0x17, 0x2d, 0x18, 0x2f, 0x19, 0x31, 0x1a, - 0x33, 0x1b, 0x35, 0x1c, 0x37, 0x1d, 0x39, 0x1e, 0x3b, 0x1f, 0x3d, - 0x20, 0x3f, 0x21, 0x41, 0x22, 0x43, 0x23, 0x45, 0x24, 0x47, 0x25, - 0x49, 0x26, 0x4b, 0x27, 0x4d, 0x28, 0x4f, 0x29, 0x51, 0x2a, 0x53, - 0x2b, 0x55, 0x2c, 0x57, 0x2d, 0x59, 0x2e, 0x5b, 0x2f, 0x5d, 0x30, - 0x5f, 0x31, 0x61, 0x32, 0x63, 0x33, 0x65, 0x34, 0x67, 0x35, 0x69, - 0x36, 0x6b, 0x37, 0x6d, 0x38, 0x6f, 0x39, 0x71, 0x3a, 0x73, 0x3b, - 0x75, 0x3c, 0x77, 0x3d, 0x79, 0x3e, 0x7b, 0x3f, 0x7d, 0x40, 0x7f, - 0x41, 0x81, 0x42, 0x83, 0x43, 0x85, 0x44, 0x87, 0x45, 0x89, 0x46, - 0x8b, 0x47, 0x8d, 0x48, 0x8f, 0x49, 0x91, 0x4a, 0x93, 0x4b, 0x95, - 0x4c, 0x97, 0x4d, 0x99, 0x4e, 0x9b, 0x4f, 0x9d, 0x50, 0x9f, 0x51, - 0xa1, 0x52, 0xa3, 0x53, 0xa5, 0x54, 0xa7, 0x55, 0xa9, 0x56, 0xab, - 0x57, 0xad, 0x58, 0xaf, 0x59, 0xb1, 0x5a, 0xb3, 0x5b, 0xb5, 0x5c, - 0xb7, 0x5d, 0xb9, 0x5e, 0xbb, 0x5f, 0xbd, 0x60, 0xbf, 0x61, 0xc1, - 0x62, 0xc3, 0x63, 0xc5, 0x64, 0xc7, 0x65, 0xc9, 0x66, 0xcb, 0x67, - 0xcd, 0x68, 0xcf, 0x69, 0xd1, 0x6a, 0xd3, 0x6b, 0xd5, 0x6c, 0xd7, - 0x6d, 0xd9, 0x6e, 0xdb, 0x6f, 0xdd, 0x70, 0xdf, 0x71, 0xe1, 0x72, - 0xe3, 0x73, 0xe5, 0x74, 0xe7, 0x75, 0xe9, 0x76, 0xeb, 0x77, 0xed, - 0x78, 0xef, 0x79, 0xf1, 0x7a, 0xf3, 0x7b, 0xf5, 0x7c, 0xf7, 0x7d, - 0xf9, 0x7e, 0xfb, 0x7f, 0xfd, 0x80, 0xff, 0x81, 0x101, 0x82, 0x103, - 0x83, 0x105, 0x84, 0x107, 0x85, 0x109, 0x86, 0x10b, 0x87, 0x10d, - 0x88, 0x10f, 0x89, 0x111, 0x8a, 0x113, 0x8b, 0x115, 0x8c, 0x117, - 0x8d, 0x119, 0x8e, 0x11b, 0x8f, 0x11d, 0x90, 0x11f, 0x91, 0x121, - 0x92, 0x123, 0x93, 0x125, 0x94, 0x127, 0x95, 0x129, 0x96, 0x12b, - 0x97, 0x12d, 0x98, 0x12f, 0x99, 0x131, 0x9a, 0x133, 0x9b, 0x135, - 0x9c, 0x137, 0x9d, 0x139, 0x9e, 0x13b, 0x9f, 0x13d, 0xa0, 0x13f, - 0xa1, 0x141, 0xa2, 0x143, 0xa3, 0x145, 0xa4, 0x147, 0xa5, 0x149, - 0xa6, 0x14b, 0xa7, 0x14d, 0xa8, 0x14f, 0xa9, 0x151, 0xaa, 0x153, - 0xab, 0x155, 0xac, 0x157, 0xad, 0x159, 0xae, 0x15b, 0xaf, 0x15d, - 0xb0, 0x15f, 0xb1, 0x161, 0xb2, 0x163, 0xb3, 0x165, 0xb4, 0x167, - 0xb5, 0x169, 0xb6, 0x16b, 0xb7, 0x16d, 0xb8, 0x16f, 0xb9, 0x171, - 0xba, 0x173, 0xbb, 0x175, 0xbc, 0x177, 0xbd, 0x179, 0xbe, 0x17b, - 0xbf, 0x17d, 0xc0, 0x17f, 0xc1, 0x181, 0xc2, 0x183, 0xc3, 0x185, - 0xc4, 0x187, 0xc5, 0x189, 0xc6, 0x18b, 0xc7, 0x18d, 0xc8, 0x18f, - 0xc9, 0x191, 0xca, 0x193, 0xcb, 0x195, 0xcc, 0x197, 0xcd, 0x199, - 0xce, 0x19b, 0xcf, 0x19d, 0xd0, 0x19f, 0xd1, 0x1a1, 0xd2, 0x1a3, - 0xd3, 0x1a5, 0xd4, 0x1a7, 0xd5, 0x1a9, 0xd6, 0x1ab, 0xd7, 0x1ad, - 0xd8, 0x1af, 0xd9, 0x1b1, 0xda, 0x1b3, 0xdb, 0x1b5, 0xdc, 0x1b7, - 0xdd, 0x1b9, 0xde, 0x1bb, 0xdf, 0x1bd, 0xe0, 0x1bf, 0xe1, 0x1c1, - 0xe2, 0x1c3, 0xe3, 0x1c5, 0xe4, 0x1c7, 0xe5, 0x1c9, 0xe6, 0x1cb, - 0xe7, 0x1cd, 0xe8, 0x1cf, 0xe9, 0x1d1, 0xea, 0x1d3, 0xeb, 0x1d5, - 0xec, 0x1d7, 0xed, 0x1d9, 0xee, 0x1db, 0xef, 0x1dd, 0xf0, 0x1df, - 0xf1, 0x1e1, 0xf2, 0x1e3, 0xf3, 0x1e5, 0xf4, 0x1e7, 0xf5, 0x1e9, - 0xf6, 0x1eb, 0xf7, 0x1ed, 0xf8, 0x1ef, 0xf9, 0x1f1, 0xfa, 0x1f3, - 0xfb, 0x1f5, 0xfc, 0x1f7, 0xfd, 0x1f9, 0xfe, 0x1fb, 0xff, 0x1fd, - 0x100, 0x1ff, 0x101, 0x201, 0x102, 0x203, 0x103, 0x205, 0x104, 0x207, - 0x105, 0x209, 0x106, 0x20b, 0x107, 0x20d, 0x108, 0x20f, 0x109, 0x211, - 0x10a, 0x213, 0x10b, 0x215, 0x10c, 0x217, 0x10d, 0x219, 0x10e, 0x21b, - 0x10f, 0x21d, 0x110, 0x21f, 0x111, 0x221, 0x112, 0x223, 0x113, 0x225, - 0x114, 0x227, 0x115, 0x229, 0x116, 0x22b, 0x117, 0x22d, 0x118, 0x22f, - 0x119, 0x231, 0x11a, 0x233, 0x11b, 0x235, 0x11c, 0x237, 0x11d, 0x239, - 0x11e, 0x23b, 0x11f, 0x23d, 0x120, 0x23f, 0x121, 0x241, 0x122, 0x243, - 0x123, 0x245, 0x124, 0x247, 0x125, 0x249, 0x126, 0x24b, 0x127, 0x24d, - 0x128, 0x24f, 0x129, 0x251, 0x12a, 0x253, 0x12b, 0x255, 0x12c, 0x257, - 0x12d, 0x259, 0x12e, 0x25b, 0x12f, 0x25d, 0x130, 0x25f, 0x131, 0x261, - 0x132, 0x263, 0x133, 0x265, 0x134, 0x267, 0x135, 0x269, 0x136, 0x26b, - 0x137, 0x26d, 0x138, 0x26f, 0x139, 0x271, 0x13a, 0x273, 0x13b, 0x275, - 0x13c, 0x277, 0x13d, 0x279, 0x13e, 0x27b, 0x13f, 0x27d, 0x140, 0x27f, - 0x141, 0x281, 0x142, 0x283, 0x143, 0x285, 0x144, 0x287, 0x145, 0x289, - 0x146, 0x28b, 0x147, 0x28d, 0x148, 0x28f, 0x149, 0x291, 0x14a, 0x293, - 0x14b, 0x295, 0x14c, 0x297, 0x14d, 0x299, 0x14e, 0x29b, 0x14f, 0x29d, - 0x150, 0x29f, 0x151, 0x2a1, 0x152, 0x2a3, 0x153, 0x2a5, 0x154, 0x2a7, - 0x155, 0x2a9, 0x156, 0x2ab, 0x157, 0x2ad, 0x158, 0x2af, 0x159, 0x2b1, - 0x15a, 0x2b3, 0x15b, 0x2b5, 0x15c, 0x2b7, 0x15d, 0x2b9, 0x15e, 0x2bb, - 0x15f, 0x2bd, 0x160, 0x2bf, 0x161, 0x2c1, 0x162, 0x2c3, 0x163, 0x2c5, - 0x164, 0x2c7, 0x165, 0x2c9, 0x166, 0x2cb, 0x167, 0x2cd, 0x168, 0x2cf, - 0x169, 0x2d1, 0x16a, 0x2d3, 0x16b, 0x2d5, 0x2, 0x2d7, 0x2, 0x2d9, - 0x2, 0x2db, 0x2, 0x2dd, 0x2, 0x2df, 0x2, 0x2e1, 0x2, 0x2e3, 0x2, - 0x2e5, 0x2, 0x2e7, 0x2, 0x2e9, 0x2, 0x2eb, 0x16c, 0x2ed, 0x2, 0x2ef, - 0x16d, 0x2f1, 0x2, 0x2f3, 0x2, 0x2f5, 0x16e, 0x2f7, 0x2, 0x2f9, 0x2, - 0x2fb, 0x16f, 0x2fd, 0x170, 0x2ff, 0x171, 0x301, 0x172, 0x303, 0x173, - 0x305, 0x174, 0x3, 0x2, 0xd, 0x5, 0x2, 0x43, 0x5c, 0x61, 0x61, 0x63, - 0x7c, 0x3, 0x2, 0x32, 0x3b, 0x5, 0x2, 0x32, 0x3b, 0x43, 0x48, 0x63, - 0x68, 0x4, 0x2, 0x2d, 0x2d, 0x2f, 0x2f, 0x4, 0x2, 0x57, 0x57, 0x77, - 0x77, 0x4, 0x2, 0x4e, 0x4e, 0x6e, 0x6e, 0x8, 0x2, 0x48, 0x48, 0x4a, - 0x4a, 0x4e, 0x4e, 0x68, 0x68, 0x6a, 0x6a, 0x6e, 0x6e, 0xc, 0x2, 0x24, - 0x24, 0x29, 0x29, 0x41, 0x41, 0x5e, 0x5e, 0x63, 0x64, 0x68, 0x68, - 0x70, 0x70, 0x74, 0x74, 0x76, 0x76, 0x78, 0x78, 0x6, 0x2, 0xc, 0xc, - 0xf, 0xf, 0x24, 0x24, 0x5e, 0x5e, 0x4, 0x2, 0xc, 0xc, 0xf, 0xf, 0x4, - 0x2, 0xb, 0xb, 0x22, 0x22, 0x2, 0x1252, 0x2, 0x3, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x5, 0x3, 0x2, 0x2, 0x2, 0x2, 0x7, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x9, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb, 0x3, 0x2, 0x2, 0x2, 0x2, - 0xd, 0x3, 0x2, 0x2, 0x2, 0x2, 0xf, 0x3, 0x2, 0x2, 0x2, 0x2, 0x11, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x13, 0x3, 0x2, 0x2, 0x2, 0x2, 0x15, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x17, 0x3, 0x2, 0x2, 0x2, 0x2, 0x19, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x1b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1d, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x1f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x21, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x23, 0x3, 0x2, 0x2, 0x2, 0x2, 0x25, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x27, 0x3, 0x2, 0x2, 0x2, 0x2, 0x29, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2b, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x2d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2f, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x31, 0x3, 0x2, 0x2, 0x2, 0x2, 0x33, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x35, 0x3, 0x2, 0x2, 0x2, 0x2, 0x37, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x39, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3b, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x3d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3f, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x41, 0x3, 0x2, 0x2, 0x2, 0x2, 0x43, 0x3, 0x2, 0x2, 0x2, 0x2, 0x45, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x47, 0x3, 0x2, 0x2, 0x2, 0x2, 0x49, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x4b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4d, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x4f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x51, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x53, 0x3, 0x2, 0x2, 0x2, 0x2, 0x55, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x57, 0x3, 0x2, 0x2, 0x2, 0x2, 0x59, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x5b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x5d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x5f, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x61, 0x3, 0x2, 0x2, 0x2, 0x2, 0x63, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x65, 0x3, 0x2, 0x2, 0x2, 0x2, 0x67, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x69, 0x3, 0x2, 0x2, 0x2, 0x2, 0x6b, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x6d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x6f, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x71, 0x3, 0x2, 0x2, 0x2, 0x2, 0x73, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x75, 0x3, 0x2, 0x2, 0x2, 0x2, 0x77, 0x3, 0x2, 0x2, 0x2, 0x2, 0x79, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x7b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x7d, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x7f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x81, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x83, 0x3, 0x2, 0x2, 0x2, 0x2, 0x85, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x87, 0x3, 0x2, 0x2, 0x2, 0x2, 0x89, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x8b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x8d, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x8f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x91, 0x3, 0x2, 0x2, 0x2, 0x2, 0x93, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x95, 0x3, 0x2, 0x2, 0x2, 0x2, 0x97, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x99, 0x3, 0x2, 0x2, 0x2, 0x2, 0x9b, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x9d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x9f, 0x3, 0x2, 0x2, - 0x2, 0x2, 0xa1, 0x3, 0x2, 0x2, 0x2, 0x2, 0xa3, 0x3, 0x2, 0x2, 0x2, - 0x2, 0xa5, 0x3, 0x2, 0x2, 0x2, 0x2, 0xa7, 0x3, 0x2, 0x2, 0x2, 0x2, - 0xa9, 0x3, 0x2, 0x2, 0x2, 0x2, 0xab, 0x3, 0x2, 0x2, 0x2, 0x2, 0xad, - 0x3, 0x2, 0x2, 0x2, 0x2, 0xaf, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb1, 0x3, - 0x2, 0x2, 0x2, 0x2, 0xb3, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb5, 0x3, 0x2, - 0x2, 0x2, 0x2, 0xb7, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb9, 0x3, 0x2, 0x2, - 0x2, 0x2, 0xbb, 0x3, 0x2, 0x2, 0x2, 0x2, 0xbd, 0x3, 0x2, 0x2, 0x2, - 0x2, 0xbf, 0x3, 0x2, 0x2, 0x2, 0x2, 0xc1, 0x3, 0x2, 0x2, 0x2, 0x2, - 0xc3, 0x3, 0x2, 0x2, 0x2, 0x2, 0xc5, 0x3, 0x2, 0x2, 0x2, 0x2, 0xc7, - 0x3, 0x2, 0x2, 0x2, 0x2, 0xc9, 0x3, 0x2, 0x2, 0x2, 0x2, 0xcb, 0x3, - 0x2, 0x2, 0x2, 0x2, 0xcd, 0x3, 0x2, 0x2, 0x2, 0x2, 0xcf, 0x3, 0x2, - 0x2, 0x2, 0x2, 0xd1, 0x3, 0x2, 0x2, 0x2, 0x2, 0xd3, 0x3, 0x2, 0x2, - 0x2, 0x2, 0xd5, 0x3, 0x2, 0x2, 0x2, 0x2, 0xd7, 0x3, 0x2, 0x2, 0x2, - 0x2, 0xd9, 0x3, 0x2, 0x2, 0x2, 0x2, 0xdb, 0x3, 0x2, 0x2, 0x2, 0x2, - 0xdd, 0x3, 0x2, 0x2, 0x2, 0x2, 0xdf, 0x3, 0x2, 0x2, 0x2, 0x2, 0xe1, - 0x3, 0x2, 0x2, 0x2, 0x2, 0xe3, 0x3, 0x2, 0x2, 0x2, 0x2, 0xe5, 0x3, - 0x2, 0x2, 0x2, 0x2, 0xe7, 0x3, 0x2, 0x2, 0x2, 0x2, 0xe9, 0x3, 0x2, - 0x2, 0x2, 0x2, 0xeb, 0x3, 0x2, 0x2, 0x2, 0x2, 0xed, 0x3, 0x2, 0x2, - 0x2, 0x2, 0xef, 0x3, 0x2, 0x2, 0x2, 0x2, 0xf1, 0x3, 0x2, 0x2, 0x2, - 0x2, 0xf3, 0x3, 0x2, 0x2, 0x2, 0x2, 0xf5, 0x3, 0x2, 0x2, 0x2, 0x2, - 0xf7, 0x3, 0x2, 0x2, 0x2, 0x2, 0xf9, 0x3, 0x2, 0x2, 0x2, 0x2, 0xfb, - 0x3, 0x2, 0x2, 0x2, 0x2, 0xfd, 0x3, 0x2, 0x2, 0x2, 0x2, 0xff, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x101, 0x3, 0x2, 0x2, 0x2, 0x2, 0x103, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x105, 0x3, 0x2, 0x2, 0x2, 0x2, 0x107, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x109, 0x3, 0x2, 0x2, 0x2, 0x2, 0x10b, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x10d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x10f, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x111, 0x3, 0x2, 0x2, 0x2, 0x2, 0x113, 0x3, 0x2, 0x2, 0x2, 0x2, 0x115, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x117, 0x3, 0x2, 0x2, 0x2, 0x2, 0x119, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x11b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x11d, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x11f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x121, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x123, 0x3, 0x2, 0x2, 0x2, 0x2, 0x125, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x127, 0x3, 0x2, 0x2, 0x2, 0x2, 0x129, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x12b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x12d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x12f, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x131, 0x3, 0x2, 0x2, 0x2, 0x2, 0x133, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x135, 0x3, 0x2, 0x2, 0x2, 0x2, 0x137, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x139, 0x3, 0x2, 0x2, 0x2, 0x2, 0x13b, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x13d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x13f, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x141, 0x3, 0x2, 0x2, 0x2, 0x2, 0x143, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x145, 0x3, 0x2, 0x2, 0x2, 0x2, 0x147, 0x3, 0x2, 0x2, 0x2, 0x2, 0x149, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x14b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x14d, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x14f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x151, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x153, 0x3, 0x2, 0x2, 0x2, 0x2, 0x155, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x157, 0x3, 0x2, 0x2, 0x2, 0x2, 0x159, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x15b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x15d, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x15f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x161, 0x3, 0x2, 0x2, 0x2, 0x2, 0x163, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x165, 0x3, 0x2, 0x2, 0x2, 0x2, 0x167, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x169, 0x3, 0x2, 0x2, 0x2, 0x2, 0x16b, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x16d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x16f, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x171, 0x3, 0x2, 0x2, 0x2, 0x2, 0x173, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x175, 0x3, 0x2, 0x2, 0x2, 0x2, 0x177, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x179, 0x3, 0x2, 0x2, 0x2, 0x2, 0x17b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x17d, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x17f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x181, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x183, 0x3, 0x2, 0x2, 0x2, 0x2, 0x185, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x187, 0x3, 0x2, 0x2, 0x2, 0x2, 0x189, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x18b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x18d, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x18f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x191, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x193, 0x3, 0x2, 0x2, 0x2, 0x2, 0x195, 0x3, 0x2, 0x2, 0x2, 0x2, 0x197, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x199, 0x3, 0x2, 0x2, 0x2, 0x2, 0x19b, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x19d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x19f, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x1a1, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1a3, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x1a5, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1a7, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x1a9, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1ab, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x1ad, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1af, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1b1, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x1b3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1b5, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x1b7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1b9, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x1bb, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1bd, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x1bf, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1c1, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x1c3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1c5, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x1c7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1c9, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1cb, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x1cd, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1cf, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x1d1, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1d3, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x1d5, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1d7, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x1d9, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1db, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x1dd, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1df, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x1e1, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1e3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1e5, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x1e7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1e9, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x1eb, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1ed, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x1ef, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1f1, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x1f3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1f5, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x1f7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1f9, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x1fb, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1fd, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1ff, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x201, 0x3, 0x2, 0x2, 0x2, 0x2, 0x203, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x205, 0x3, 0x2, 0x2, 0x2, 0x2, 0x207, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x209, 0x3, 0x2, 0x2, 0x2, 0x2, 0x20b, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x20d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x20f, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x211, 0x3, 0x2, 0x2, 0x2, 0x2, 0x213, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x215, 0x3, 0x2, 0x2, 0x2, 0x2, 0x217, 0x3, 0x2, 0x2, 0x2, 0x2, 0x219, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x21b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x21d, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x21f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x221, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x223, 0x3, 0x2, 0x2, 0x2, 0x2, 0x225, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x227, 0x3, 0x2, 0x2, 0x2, 0x2, 0x229, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x22b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x22d, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x22f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x231, 0x3, 0x2, 0x2, 0x2, 0x2, 0x233, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x235, 0x3, 0x2, 0x2, 0x2, 0x2, 0x237, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x239, 0x3, 0x2, 0x2, 0x2, 0x2, 0x23b, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x23d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x23f, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x241, 0x3, 0x2, 0x2, 0x2, 0x2, 0x243, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x245, 0x3, 0x2, 0x2, 0x2, 0x2, 0x247, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x249, 0x3, 0x2, 0x2, 0x2, 0x2, 0x24b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x24d, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x24f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x251, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x253, 0x3, 0x2, 0x2, 0x2, 0x2, 0x255, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x257, 0x3, 0x2, 0x2, 0x2, 0x2, 0x259, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x25b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x25d, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x25f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x261, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x263, 0x3, 0x2, 0x2, 0x2, 0x2, 0x265, 0x3, 0x2, 0x2, 0x2, 0x2, 0x267, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x269, 0x3, 0x2, 0x2, 0x2, 0x2, 0x26b, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x26d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x26f, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x271, 0x3, 0x2, 0x2, 0x2, 0x2, 0x273, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x275, 0x3, 0x2, 0x2, 0x2, 0x2, 0x277, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x279, 0x3, 0x2, 0x2, 0x2, 0x2, 0x27b, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x27d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x27f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x281, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x283, 0x3, 0x2, 0x2, 0x2, 0x2, 0x285, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x287, 0x3, 0x2, 0x2, 0x2, 0x2, 0x289, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x28b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x28d, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x28f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x291, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x293, 0x3, 0x2, 0x2, 0x2, 0x2, 0x295, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x297, 0x3, 0x2, 0x2, 0x2, 0x2, 0x299, 0x3, 0x2, 0x2, 0x2, 0x2, 0x29b, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x29d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x29f, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x2a1, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2a3, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x2a5, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2a7, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x2a9, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2ab, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x2ad, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2af, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x2b1, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2b3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2b5, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x2b7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2b9, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x2bb, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2bd, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x2bf, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2c1, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x2c3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2c5, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x2c7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2c9, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x2cb, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2cd, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2cf, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x2d1, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2d3, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x2eb, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2ef, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x2f5, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2fb, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x2fd, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2ff, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x301, 0x3, 0x2, 0x2, 0x2, 0x2, 0x303, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x305, 0x3, 0x2, 0x2, 0x2, 0x3, 0x307, 0x3, 0x2, 0x2, 0x2, 0x5, 0x31e, - 0x3, 0x2, 0x2, 0x2, 0x7, 0x323, 0x3, 0x2, 0x2, 0x2, 0x9, 0x329, 0x3, - 0x2, 0x2, 0x2, 0xb, 0x32f, 0x3, 0x2, 0x2, 0x2, 0xd, 0x335, 0x3, 0x2, - 0x2, 0x2, 0xf, 0x33b, 0x3, 0x2, 0x2, 0x2, 0x11, 0x343, 0x3, 0x2, - 0x2, 0x2, 0x13, 0x34b, 0x3, 0x2, 0x2, 0x2, 0x15, 0x353, 0x3, 0x2, - 0x2, 0x2, 0x17, 0x35b, 0x3, 0x2, 0x2, 0x2, 0x19, 0x363, 0x3, 0x2, - 0x2, 0x2, 0x1b, 0x36b, 0x3, 0x2, 0x2, 0x2, 0x1d, 0x373, 0x3, 0x2, - 0x2, 0x2, 0x1f, 0x37b, 0x3, 0x2, 0x2, 0x2, 0x21, 0x383, 0x3, 0x2, - 0x2, 0x2, 0x23, 0x38b, 0x3, 0x2, 0x2, 0x2, 0x25, 0x393, 0x3, 0x2, - 0x2, 0x2, 0x27, 0x39b, 0x3, 0x2, 0x2, 0x2, 0x29, 0x3a3, 0x3, 0x2, - 0x2, 0x2, 0x2b, 0x3ab, 0x3, 0x2, 0x2, 0x2, 0x2d, 0x3b3, 0x3, 0x2, - 0x2, 0x2, 0x2f, 0x3bb, 0x3, 0x2, 0x2, 0x2, 0x31, 0x3c2, 0x3, 0x2, - 0x2, 0x2, 0x33, 0x3e8, 0x3, 0x2, 0x2, 0x2, 0x35, 0x3fa, 0x3, 0x2, - 0x2, 0x2, 0x37, 0x400, 0x3, 0x2, 0x2, 0x2, 0x39, 0x405, 0x3, 0x2, - 0x2, 0x2, 0x3b, 0x40d, 0x3, 0x2, 0x2, 0x2, 0x3d, 0x41c, 0x3, 0x2, - 0x2, 0x2, 0x3f, 0x42b, 0x3, 0x2, 0x2, 0x2, 0x41, 0x434, 0x3, 0x2, - 0x2, 0x2, 0x43, 0x43a, 0x3, 0x2, 0x2, 0x2, 0x45, 0x447, 0x3, 0x2, - 0x2, 0x2, 0x47, 0x44d, 0x3, 0x2, 0x2, 0x2, 0x49, 0x465, 0x3, 0x2, - 0x2, 0x2, 0x4b, 0x46e, 0x3, 0x2, 0x2, 0x2, 0x4d, 0x476, 0x3, 0x2, - 0x2, 0x2, 0x4f, 0x47e, 0x3, 0x2, 0x2, 0x2, 0x51, 0x481, 0x3, 0x2, - 0x2, 0x2, 0x53, 0x488, 0x3, 0x2, 0x2, 0x2, 0x55, 0x490, 0x3, 0x2, - 0x2, 0x2, 0x57, 0x498, 0x3, 0x2, 0x2, 0x2, 0x59, 0x4a0, 0x3, 0x2, - 0x2, 0x2, 0x5b, 0x4a8, 0x3, 0x2, 0x2, 0x2, 0x5d, 0x4b2, 0x3, 0x2, - 0x2, 0x2, 0x5f, 0x4bc, 0x3, 0x2, 0x2, 0x2, 0x61, 0x4c6, 0x3, 0x2, - 0x2, 0x2, 0x63, 0x4d0, 0x3, 0x2, 0x2, 0x2, 0x65, 0x4da, 0x3, 0x2, - 0x2, 0x2, 0x67, 0x4e4, 0x3, 0x2, 0x2, 0x2, 0x69, 0x4ee, 0x3, 0x2, - 0x2, 0x2, 0x6b, 0x4f8, 0x3, 0x2, 0x2, 0x2, 0x6d, 0x502, 0x3, 0x2, - 0x2, 0x2, 0x6f, 0x50c, 0x3, 0x2, 0x2, 0x2, 0x71, 0x516, 0x3, 0x2, - 0x2, 0x2, 0x73, 0x520, 0x3, 0x2, 0x2, 0x2, 0x75, 0x52a, 0x3, 0x2, - 0x2, 0x2, 0x77, 0x534, 0x3, 0x2, 0x2, 0x2, 0x79, 0x53e, 0x3, 0x2, - 0x2, 0x2, 0x7b, 0x548, 0x3, 0x2, 0x2, 0x2, 0x7d, 0x54d, 0x3, 0x2, - 0x2, 0x2, 0x7f, 0x552, 0x3, 0x2, 0x2, 0x2, 0x81, 0x559, 0x3, 0x2, - 0x2, 0x2, 0x83, 0x56b, 0x3, 0x2, 0x2, 0x2, 0x85, 0x582, 0x3, 0x2, - 0x2, 0x2, 0x87, 0x588, 0x3, 0x2, 0x2, 0x2, 0x89, 0x58f, 0x3, 0x2, - 0x2, 0x2, 0x8b, 0x596, 0x3, 0x2, 0x2, 0x2, 0x8d, 0x59d, 0x3, 0x2, - 0x2, 0x2, 0x8f, 0x5a4, 0x3, 0x2, 0x2, 0x2, 0x91, 0x5ad, 0x3, 0x2, - 0x2, 0x2, 0x93, 0x5b6, 0x3, 0x2, 0x2, 0x2, 0x95, 0x5bf, 0x3, 0x2, - 0x2, 0x2, 0x97, 0x5c8, 0x3, 0x2, 0x2, 0x2, 0x99, 0x5d1, 0x3, 0x2, - 0x2, 0x2, 0x9b, 0x5da, 0x3, 0x2, 0x2, 0x2, 0x9d, 0x5e3, 0x3, 0x2, - 0x2, 0x2, 0x9f, 0x5ec, 0x3, 0x2, 0x2, 0x2, 0xa1, 0x5f5, 0x3, 0x2, - 0x2, 0x2, 0xa3, 0x5fe, 0x3, 0x2, 0x2, 0x2, 0xa5, 0x607, 0x3, 0x2, - 0x2, 0x2, 0xa7, 0x610, 0x3, 0x2, 0x2, 0x2, 0xa9, 0x619, 0x3, 0x2, - 0x2, 0x2, 0xab, 0x622, 0x3, 0x2, 0x2, 0x2, 0xad, 0x62b, 0x3, 0x2, - 0x2, 0x2, 0xaf, 0x634, 0x3, 0x2, 0x2, 0x2, 0xb1, 0x638, 0x3, 0x2, - 0x2, 0x2, 0xb3, 0x644, 0x3, 0x2, 0x2, 0x2, 0xb5, 0x64b, 0x3, 0x2, - 0x2, 0x2, 0xb7, 0x650, 0x3, 0x2, 0x2, 0x2, 0xb9, 0x656, 0x3, 0x2, - 0x2, 0x2, 0xbb, 0x65c, 0x3, 0x2, 0x2, 0x2, 0xbd, 0x662, 0x3, 0x2, - 0x2, 0x2, 0xbf, 0x668, 0x3, 0x2, 0x2, 0x2, 0xc1, 0x670, 0x3, 0x2, - 0x2, 0x2, 0xc3, 0x678, 0x3, 0x2, 0x2, 0x2, 0xc5, 0x680, 0x3, 0x2, - 0x2, 0x2, 0xc7, 0x688, 0x3, 0x2, 0x2, 0x2, 0xc9, 0x690, 0x3, 0x2, - 0x2, 0x2, 0xcb, 0x698, 0x3, 0x2, 0x2, 0x2, 0xcd, 0x6a0, 0x3, 0x2, - 0x2, 0x2, 0xcf, 0x6a8, 0x3, 0x2, 0x2, 0x2, 0xd1, 0x6b0, 0x3, 0x2, - 0x2, 0x2, 0xd3, 0x6b8, 0x3, 0x2, 0x2, 0x2, 0xd5, 0x6c0, 0x3, 0x2, - 0x2, 0x2, 0xd7, 0x6c8, 0x3, 0x2, 0x2, 0x2, 0xd9, 0x6d0, 0x3, 0x2, - 0x2, 0x2, 0xdb, 0x6d8, 0x3, 0x2, 0x2, 0x2, 0xdd, 0x6e0, 0x3, 0x2, - 0x2, 0x2, 0xdf, 0x6e8, 0x3, 0x2, 0x2, 0x2, 0xe1, 0x6eb, 0x3, 0x2, - 0x2, 0x2, 0xe3, 0x6ee, 0x3, 0x2, 0x2, 0x2, 0xe5, 0x6f5, 0x3, 0x2, - 0x2, 0x2, 0xe7, 0x70d, 0x3, 0x2, 0x2, 0x2, 0xe9, 0x70f, 0x3, 0x2, - 0x2, 0x2, 0xeb, 0x71a, 0x3, 0x2, 0x2, 0x2, 0xed, 0x71e, 0x3, 0x2, - 0x2, 0x2, 0xef, 0x726, 0x3, 0x2, 0x2, 0x2, 0xf1, 0x72e, 0x3, 0x2, - 0x2, 0x2, 0xf3, 0x733, 0x3, 0x2, 0x2, 0x2, 0xf5, 0x738, 0x3, 0x2, - 0x2, 0x2, 0xf7, 0x73d, 0x3, 0x2, 0x2, 0x2, 0xf9, 0x742, 0x3, 0x2, - 0x2, 0x2, 0xfb, 0x749, 0x3, 0x2, 0x2, 0x2, 0xfd, 0x750, 0x3, 0x2, - 0x2, 0x2, 0xff, 0x757, 0x3, 0x2, 0x2, 0x2, 0x101, 0x75e, 0x3, 0x2, - 0x2, 0x2, 0x103, 0x765, 0x3, 0x2, 0x2, 0x2, 0x105, 0x76c, 0x3, 0x2, - 0x2, 0x2, 0x107, 0x773, 0x3, 0x2, 0x2, 0x2, 0x109, 0x77a, 0x3, 0x2, - 0x2, 0x2, 0x10b, 0x781, 0x3, 0x2, 0x2, 0x2, 0x10d, 0x788, 0x3, 0x2, - 0x2, 0x2, 0x10f, 0x78f, 0x3, 0x2, 0x2, 0x2, 0x111, 0x796, 0x3, 0x2, - 0x2, 0x2, 0x113, 0x79d, 0x3, 0x2, 0x2, 0x2, 0x115, 0x7a4, 0x3, 0x2, - 0x2, 0x2, 0x117, 0x7ab, 0x3, 0x2, 0x2, 0x2, 0x119, 0x7b2, 0x3, 0x2, - 0x2, 0x2, 0x11b, 0x7bc, 0x3, 0x2, 0x2, 0x2, 0x11d, 0x7c1, 0x3, 0x2, - 0x2, 0x2, 0x11f, 0x7c9, 0x3, 0x2, 0x2, 0x2, 0x121, 0x7d0, 0x3, 0x2, - 0x2, 0x2, 0x123, 0x7db, 0x3, 0x2, 0x2, 0x2, 0x125, 0x7e0, 0x3, 0x2, - 0x2, 0x2, 0x127, 0x7e7, 0x3, 0x2, 0x2, 0x2, 0x129, 0x7f7, 0x3, 0x2, - 0x2, 0x2, 0x12b, 0x805, 0x3, 0x2, 0x2, 0x2, 0x12d, 0x80c, 0x3, 0x2, - 0x2, 0x2, 0x12f, 0x810, 0x3, 0x2, 0x2, 0x2, 0x131, 0x81c, 0x3, 0x2, - 0x2, 0x2, 0x133, 0x825, 0x3, 0x2, 0x2, 0x2, 0x135, 0x82d, 0x3, 0x2, - 0x2, 0x2, 0x137, 0x838, 0x3, 0x2, 0x2, 0x2, 0x139, 0x83e, 0x3, 0x2, - 0x2, 0x2, 0x13b, 0x84a, 0x3, 0x2, 0x2, 0x2, 0x13d, 0x852, 0x3, 0x2, - 0x2, 0x2, 0x13f, 0x86a, 0x3, 0x2, 0x2, 0x2, 0x141, 0x88d, 0x3, 0x2, - 0x2, 0x2, 0x143, 0x8af, 0x3, 0x2, 0x2, 0x2, 0x145, 0x8ca, 0x3, 0x2, - 0x2, 0x2, 0x147, 0x8ea, 0x3, 0x2, 0x2, 0x2, 0x149, 0x905, 0x3, 0x2, - 0x2, 0x2, 0x14b, 0x925, 0x3, 0x2, 0x2, 0x2, 0x14d, 0x940, 0x3, 0x2, - 0x2, 0x2, 0x14f, 0x948, 0x3, 0x2, 0x2, 0x2, 0x151, 0x968, 0x3, 0x2, - 0x2, 0x2, 0x153, 0x971, 0x3, 0x2, 0x2, 0x2, 0x155, 0x978, 0x3, 0x2, - 0x2, 0x2, 0x157, 0x982, 0x3, 0x2, 0x2, 0x2, 0x159, 0x98b, 0x3, 0x2, - 0x2, 0x2, 0x15b, 0x99f, 0x3, 0x2, 0x2, 0x2, 0x15d, 0x9b2, 0x3, 0x2, - 0x2, 0x2, 0x15f, 0x9be, 0x3, 0x2, 0x2, 0x2, 0x161, 0x9cf, 0x3, 0x2, - 0x2, 0x2, 0x163, 0x9db, 0x3, 0x2, 0x2, 0x2, 0x165, 0x9ec, 0x3, 0x2, - 0x2, 0x2, 0x167, 0x9f8, 0x3, 0x2, 0x2, 0x2, 0x169, 0x9ff, 0x3, 0x2, - 0x2, 0x2, 0x16b, 0xa07, 0x3, 0x2, 0x2, 0x2, 0x16d, 0xa0f, 0x3, 0x2, - 0x2, 0x2, 0x16f, 0xa26, 0x3, 0x2, 0x2, 0x2, 0x171, 0xa33, 0x3, 0x2, - 0x2, 0x2, 0x173, 0xa3a, 0x3, 0x2, 0x2, 0x2, 0x175, 0xa41, 0x3, 0x2, - 0x2, 0x2, 0x177, 0xa48, 0x3, 0x2, 0x2, 0x2, 0x179, 0xa59, 0x3, 0x2, - 0x2, 0x2, 0x17b, 0xa66, 0x3, 0x2, 0x2, 0x2, 0x17d, 0xa75, 0x3, 0x2, - 0x2, 0x2, 0x17f, 0xa7c, 0x3, 0x2, 0x2, 0x2, 0x181, 0xa86, 0x3, 0x2, - 0x2, 0x2, 0x183, 0xa95, 0x3, 0x2, 0x2, 0x2, 0x185, 0xa9f, 0x3, 0x2, - 0x2, 0x2, 0x187, 0xaae, 0x3, 0x2, 0x2, 0x2, 0x189, 0xaba, 0x3, 0x2, - 0x2, 0x2, 0x18b, 0xacb, 0x3, 0x2, 0x2, 0x2, 0x18d, 0xad5, 0x3, 0x2, - 0x2, 0x2, 0x18f, 0xae1, 0x3, 0x2, 0x2, 0x2, 0x191, 0xaf2, 0x3, 0x2, - 0x2, 0x2, 0x193, 0xafb, 0x3, 0x2, 0x2, 0x2, 0x195, 0xb07, 0x3, 0x2, - 0x2, 0x2, 0x197, 0xb16, 0x3, 0x2, 0x2, 0x2, 0x199, 0xb1e, 0x3, 0x2, - 0x2, 0x2, 0x19b, 0xb23, 0x3, 0x2, 0x2, 0x2, 0x19d, 0xb2c, 0x3, 0x2, - 0x2, 0x2, 0x19f, 0xb35, 0x3, 0x2, 0x2, 0x2, 0x1a1, 0xb42, 0x3, 0x2, - 0x2, 0x2, 0x1a3, 0xb48, 0x3, 0x2, 0x2, 0x2, 0x1a5, 0xb4e, 0x3, 0x2, - 0x2, 0x2, 0x1a7, 0xb54, 0x3, 0x2, 0x2, 0x2, 0x1a9, 0xb5a, 0x3, 0x2, - 0x2, 0x2, 0x1ab, 0xb62, 0x3, 0x2, 0x2, 0x2, 0x1ad, 0xb6a, 0x3, 0x2, - 0x2, 0x2, 0x1af, 0xb72, 0x3, 0x2, 0x2, 0x2, 0x1b1, 0xb7a, 0x3, 0x2, - 0x2, 0x2, 0x1b3, 0xb82, 0x3, 0x2, 0x2, 0x2, 0x1b5, 0xb8a, 0x3, 0x2, - 0x2, 0x2, 0x1b7, 0xb92, 0x3, 0x2, 0x2, 0x2, 0x1b9, 0xb9a, 0x3, 0x2, - 0x2, 0x2, 0x1bb, 0xba2, 0x3, 0x2, 0x2, 0x2, 0x1bd, 0xbaa, 0x3, 0x2, - 0x2, 0x2, 0x1bf, 0xbb2, 0x3, 0x2, 0x2, 0x2, 0x1c1, 0xbba, 0x3, 0x2, - 0x2, 0x2, 0x1c3, 0xbc2, 0x3, 0x2, 0x2, 0x2, 0x1c5, 0xbca, 0x3, 0x2, - 0x2, 0x2, 0x1c7, 0xbd2, 0x3, 0x2, 0x2, 0x2, 0x1c9, 0xbda, 0x3, 0x2, - 0x2, 0x2, 0x1cb, 0xbe0, 0x3, 0x2, 0x2, 0x2, 0x1cd, 0xbe7, 0x3, 0x2, - 0x2, 0x2, 0x1cf, 0xbee, 0x3, 0x2, 0x2, 0x2, 0x1d1, 0xbf5, 0x3, 0x2, - 0x2, 0x2, 0x1d3, 0xbfc, 0x3, 0x2, 0x2, 0x2, 0x1d5, 0xc05, 0x3, 0x2, - 0x2, 0x2, 0x1d7, 0xc0e, 0x3, 0x2, 0x2, 0x2, 0x1d9, 0xc17, 0x3, 0x2, - 0x2, 0x2, 0x1db, 0xc20, 0x3, 0x2, 0x2, 0x2, 0x1dd, 0xc29, 0x3, 0x2, - 0x2, 0x2, 0x1df, 0xc32, 0x3, 0x2, 0x2, 0x2, 0x1e1, 0xc3b, 0x3, 0x2, - 0x2, 0x2, 0x1e3, 0xc44, 0x3, 0x2, 0x2, 0x2, 0x1e5, 0xc4d, 0x3, 0x2, - 0x2, 0x2, 0x1e7, 0xc56, 0x3, 0x2, 0x2, 0x2, 0x1e9, 0xc5f, 0x3, 0x2, - 0x2, 0x2, 0x1eb, 0xc68, 0x3, 0x2, 0x2, 0x2, 0x1ed, 0xc71, 0x3, 0x2, - 0x2, 0x2, 0x1ef, 0xc7a, 0x3, 0x2, 0x2, 0x2, 0x1f1, 0xc83, 0x3, 0x2, - 0x2, 0x2, 0x1f3, 0xc8c, 0x3, 0x2, 0x2, 0x2, 0x1f5, 0xc93, 0x3, 0x2, - 0x2, 0x2, 0x1f7, 0xc9c, 0x3, 0x2, 0x2, 0x2, 0x1f9, 0xca1, 0x3, 0x2, - 0x2, 0x2, 0x1fb, 0xca7, 0x3, 0x2, 0x2, 0x2, 0x1fd, 0xcb9, 0x3, 0x2, - 0x2, 0x2, 0x1ff, 0xccc, 0x3, 0x2, 0x2, 0x2, 0x201, 0xce0, 0x3, 0x2, - 0x2, 0x2, 0x203, 0xcfe, 0x3, 0x2, 0x2, 0x2, 0x205, 0xd15, 0x3, 0x2, - 0x2, 0x2, 0x207, 0xd2e, 0x3, 0x2, 0x2, 0x2, 0x209, 0xd48, 0x3, 0x2, - 0x2, 0x2, 0x20b, 0xd59, 0x3, 0x2, 0x2, 0x2, 0x20d, 0xd75, 0x3, 0x2, - 0x2, 0x2, 0x20f, 0xd7e, 0x3, 0x2, 0x2, 0x2, 0x211, 0xd87, 0x3, 0x2, - 0x2, 0x2, 0x213, 0xd90, 0x3, 0x2, 0x2, 0x2, 0x215, 0xd9c, 0x3, 0x2, - 0x2, 0x2, 0x217, 0xda6, 0x3, 0x2, 0x2, 0x2, 0x219, 0xdb0, 0x3, 0x2, - 0x2, 0x2, 0x21b, 0xdba, 0x3, 0x2, 0x2, 0x2, 0x21d, 0xdc8, 0x3, 0x2, - 0x2, 0x2, 0x21f, 0xdcf, 0x3, 0x2, 0x2, 0x2, 0x221, 0xdd6, 0x3, 0x2, - 0x2, 0x2, 0x223, 0xde1, 0x3, 0x2, 0x2, 0x2, 0x225, 0xdf0, 0x3, 0x2, - 0x2, 0x2, 0x227, 0xdfe, 0x3, 0x2, 0x2, 0x2, 0x229, 0xe04, 0x3, 0x2, - 0x2, 0x2, 0x22b, 0xe0b, 0x3, 0x2, 0x2, 0x2, 0x22d, 0xe12, 0x3, 0x2, - 0x2, 0x2, 0x22f, 0xe1d, 0x3, 0x2, 0x2, 0x2, 0x231, 0xe25, 0x3, 0x2, - 0x2, 0x2, 0x233, 0xe2d, 0x3, 0x2, 0x2, 0x2, 0x235, 0xe32, 0x3, 0x2, - 0x2, 0x2, 0x237, 0xe39, 0x3, 0x2, 0x2, 0x2, 0x239, 0xe3f, 0x3, 0x2, - 0x2, 0x2, 0x23b, 0xe46, 0x3, 0x2, 0x2, 0x2, 0x23d, 0xe51, 0x3, 0x2, - 0x2, 0x2, 0x23f, 0xe57, 0x3, 0x2, 0x2, 0x2, 0x241, 0xe5c, 0x3, 0x2, - 0x2, 0x2, 0x243, 0xe62, 0x3, 0x2, 0x2, 0x2, 0x245, 0xe6c, 0x3, 0x2, - 0x2, 0x2, 0x247, 0xe74, 0x3, 0x2, 0x2, 0x2, 0x249, 0xe7d, 0x3, 0x2, - 0x2, 0x2, 0x24b, 0xe8a, 0x3, 0x2, 0x2, 0x2, 0x24d, 0xe91, 0x3, 0x2, - 0x2, 0x2, 0x24f, 0xe9d, 0x3, 0x2, 0x2, 0x2, 0x251, 0xeae, 0x3, 0x2, - 0x2, 0x2, 0x253, 0xeba, 0x3, 0x2, 0x2, 0x2, 0x255, 0xebc, 0x3, 0x2, - 0x2, 0x2, 0x257, 0xebe, 0x3, 0x2, 0x2, 0x2, 0x259, 0xec0, 0x3, 0x2, - 0x2, 0x2, 0x25b, 0xec2, 0x3, 0x2, 0x2, 0x2, 0x25d, 0xec4, 0x3, 0x2, - 0x2, 0x2, 0x25f, 0xec6, 0x3, 0x2, 0x2, 0x2, 0x261, 0xec9, 0x3, 0x2, - 0x2, 0x2, 0x263, 0xecb, 0x3, 0x2, 0x2, 0x2, 0x265, 0xece, 0x3, 0x2, - 0x2, 0x2, 0x267, 0xed0, 0x3, 0x2, 0x2, 0x2, 0x269, 0xed3, 0x3, 0x2, - 0x2, 0x2, 0x26b, 0xed6, 0x3, 0x2, 0x2, 0x2, 0x26d, 0xed9, 0x3, 0x2, - 0x2, 0x2, 0x26f, 0xedb, 0x3, 0x2, 0x2, 0x2, 0x271, 0xede, 0x3, 0x2, - 0x2, 0x2, 0x273, 0xee0, 0x3, 0x2, 0x2, 0x2, 0x275, 0xee3, 0x3, 0x2, - 0x2, 0x2, 0x277, 0xee5, 0x3, 0x2, 0x2, 0x2, 0x279, 0xee7, 0x3, 0x2, - 0x2, 0x2, 0x27b, 0xee9, 0x3, 0x2, 0x2, 0x2, 0x27d, 0xeeb, 0x3, 0x2, - 0x2, 0x2, 0x27f, 0xeed, 0x3, 0x2, 0x2, 0x2, 0x281, 0xef0, 0x3, 0x2, - 0x2, 0x2, 0x283, 0xef3, 0x3, 0x2, 0x2, 0x2, 0x285, 0xef5, 0x3, 0x2, - 0x2, 0x2, 0x287, 0xef7, 0x3, 0x2, 0x2, 0x2, 0x289, 0xef9, 0x3, 0x2, - 0x2, 0x2, 0x28b, 0xefb, 0x3, 0x2, 0x2, 0x2, 0x28d, 0xefd, 0x3, 0x2, - 0x2, 0x2, 0x28f, 0xf00, 0x3, 0x2, 0x2, 0x2, 0x291, 0xf02, 0x3, 0x2, - 0x2, 0x2, 0x293, 0xf04, 0x3, 0x2, 0x2, 0x2, 0x295, 0xf06, 0x3, 0x2, - 0x2, 0x2, 0x297, 0xf09, 0x3, 0x2, 0x2, 0x2, 0x299, 0xf0c, 0x3, 0x2, - 0x2, 0x2, 0x29b, 0xf0f, 0x3, 0x2, 0x2, 0x2, 0x29d, 0xf12, 0x3, 0x2, - 0x2, 0x2, 0x29f, 0xf15, 0x3, 0x2, 0x2, 0x2, 0x2a1, 0xf19, 0x3, 0x2, - 0x2, 0x2, 0x2a3, 0xf1d, 0x3, 0x2, 0x2, 0x2, 0x2a5, 0xf20, 0x3, 0x2, - 0x2, 0x2, 0x2a7, 0xf23, 0x3, 0x2, 0x2, 0x2, 0x2a9, 0xf26, 0x3, 0x2, - 0x2, 0x2, 0x2ab, 0xf29, 0x3, 0x2, 0x2, 0x2, 0x2ad, 0xf2c, 0x3, 0x2, - 0x2, 0x2, 0x2af, 0xf2e, 0x3, 0x2, 0x2, 0x2, 0x2b1, 0xf33, 0x3, 0x2, - 0x2, 0x2, 0x2b3, 0xf39, 0x3, 0x2, 0x2, 0x2, 0x2b5, 0xf48, 0x3, 0x2, - 0x2, 0x2, 0x2b7, 0xf52, 0x3, 0x2, 0x2, 0x2, 0x2b9, 0xf5a, 0x3, 0x2, - 0x2, 0x2, 0x2bb, 0xf66, 0x3, 0x2, 0x2, 0x2, 0x2bd, 0xf6d, 0x3, 0x2, - 0x2, 0x2, 0x2bf, 0xf83, 0x3, 0x2, 0x2, 0x2, 0x2c1, 0xf98, 0x3, 0x2, - 0x2, 0x2, 0x2c3, 0xfb7, 0x3, 0x2, 0x2, 0x2, 0x2c5, 0xfd6, 0x3, 0x2, - 0x2, 0x2, 0x2c7, 0xff4, 0x3, 0x2, 0x2, 0x2, 0x2c9, 0x1000, 0x3, 0x2, - 0x2, 0x2, 0x2cb, 0x1016, 0x3, 0x2, 0x2, 0x2, 0x2cd, 0x1032, 0x3, - 0x2, 0x2, 0x2, 0x2cf, 0x1113, 0x3, 0x2, 0x2, 0x2, 0x2d1, 0x1141, - 0x3, 0x2, 0x2, 0x2, 0x2d3, 0x1143, 0x3, 0x2, 0x2, 0x2, 0x2d5, 0x114b, - 0x3, 0x2, 0x2, 0x2, 0x2d7, 0x114d, 0x3, 0x2, 0x2, 0x2, 0x2d9, 0x1150, - 0x3, 0x2, 0x2, 0x2, 0x2db, 0x1158, 0x3, 0x2, 0x2, 0x2, 0x2dd, 0x115f, - 0x3, 0x2, 0x2, 0x2, 0x2df, 0x1169, 0x3, 0x2, 0x2, 0x2, 0x2e1, 0x1175, - 0x3, 0x2, 0x2, 0x2, 0x2e3, 0x1177, 0x3, 0x2, 0x2, 0x2, 0x2e5, 0x117a, - 0x3, 0x2, 0x2, 0x2, 0x2e7, 0x117f, 0x3, 0x2, 0x2, 0x2, 0x2e9, 0x1192, - 0x3, 0x2, 0x2, 0x2, 0x2eb, 0x119c, 0x3, 0x2, 0x2, 0x2, 0x2ed, 0x119e, - 0x3, 0x2, 0x2, 0x2, 0x2ef, 0x11ac, 0x3, 0x2, 0x2, 0x2, 0x2f1, 0x11ae, - 0x3, 0x2, 0x2, 0x2, 0x2f3, 0x11b0, 0x3, 0x2, 0x2, 0x2, 0x2f5, 0x11b3, - 0x3, 0x2, 0x2, 0x2, 0x2f7, 0x11ba, 0x3, 0x2, 0x2, 0x2, 0x2f9, 0x11c0, - 0x3, 0x2, 0x2, 0x2, 0x2fb, 0x11c2, 0x3, 0x2, 0x2, 0x2, 0x2fd, 0x11d6, - 0x3, 0x2, 0x2, 0x2, 0x2ff, 0x11ec, 0x3, 0x2, 0x2, 0x2, 0x301, 0x11f7, - 0x3, 0x2, 0x2, 0x2, 0x303, 0x11fb, 0x3, 0x2, 0x2, 0x2, 0x305, 0x1209, - 0x3, 0x2, 0x2, 0x2, 0x307, 0x308, 0x7, 0x43, 0x2, 0x2, 0x308, 0x309, - 0x7, 0x72, 0x2, 0x2, 0x309, 0x30a, 0x7, 0x72, 0x2, 0x2, 0x30a, 0x30b, - 0x7, 0x67, 0x2, 0x2, 0x30b, 0x30c, 0x7, 0x70, 0x2, 0x2, 0x30c, 0x30d, - 0x7, 0x66, 0x2, 0x2, 0x30d, 0x30e, 0x7, 0x55, 0x2, 0x2, 0x30e, 0x30f, - 0x7, 0x76, 0x2, 0x2, 0x30f, 0x310, 0x7, 0x74, 0x2, 0x2, 0x310, 0x311, - 0x7, 0x77, 0x2, 0x2, 0x311, 0x312, 0x7, 0x65, 0x2, 0x2, 0x312, 0x313, - 0x7, 0x76, 0x2, 0x2, 0x313, 0x314, 0x7, 0x77, 0x2, 0x2, 0x314, 0x315, - 0x7, 0x74, 0x2, 0x2, 0x315, 0x316, 0x7, 0x67, 0x2, 0x2, 0x316, 0x317, - 0x7, 0x66, 0x2, 0x2, 0x317, 0x318, 0x7, 0x44, 0x2, 0x2, 0x318, 0x319, - 0x7, 0x77, 0x2, 0x2, 0x319, 0x31a, 0x7, 0x68, 0x2, 0x2, 0x31a, 0x31b, - 0x7, 0x68, 0x2, 0x2, 0x31b, 0x31c, 0x7, 0x67, 0x2, 0x2, 0x31c, 0x31d, - 0x7, 0x74, 0x2, 0x2, 0x31d, 0x4, 0x3, 0x2, 0x2, 0x2, 0x31e, 0x31f, - 0x7, 0x64, 0x2, 0x2, 0x31f, 0x320, 0x7, 0x71, 0x2, 0x2, 0x320, 0x321, - 0x7, 0x71, 0x2, 0x2, 0x321, 0x322, 0x7, 0x6e, 0x2, 0x2, 0x322, 0x6, - 0x3, 0x2, 0x2, 0x2, 0x323, 0x324, 0x7, 0x64, 0x2, 0x2, 0x324, 0x325, - 0x7, 0x71, 0x2, 0x2, 0x325, 0x326, 0x7, 0x71, 0x2, 0x2, 0x326, 0x327, - 0x7, 0x6e, 0x2, 0x2, 0x327, 0x328, 0x7, 0x33, 0x2, 0x2, 0x328, 0x8, - 0x3, 0x2, 0x2, 0x2, 0x329, 0x32a, 0x7, 0x64, 0x2, 0x2, 0x32a, 0x32b, - 0x7, 0x71, 0x2, 0x2, 0x32b, 0x32c, 0x7, 0x71, 0x2, 0x2, 0x32c, 0x32d, - 0x7, 0x6e, 0x2, 0x2, 0x32d, 0x32e, 0x7, 0x34, 0x2, 0x2, 0x32e, 0xa, - 0x3, 0x2, 0x2, 0x2, 0x32f, 0x330, 0x7, 0x64, 0x2, 0x2, 0x330, 0x331, - 0x7, 0x71, 0x2, 0x2, 0x331, 0x332, 0x7, 0x71, 0x2, 0x2, 0x332, 0x333, - 0x7, 0x6e, 0x2, 0x2, 0x333, 0x334, 0x7, 0x35, 0x2, 0x2, 0x334, 0xc, - 0x3, 0x2, 0x2, 0x2, 0x335, 0x336, 0x7, 0x64, 0x2, 0x2, 0x336, 0x337, - 0x7, 0x71, 0x2, 0x2, 0x337, 0x338, 0x7, 0x71, 0x2, 0x2, 0x338, 0x339, - 0x7, 0x6e, 0x2, 0x2, 0x339, 0x33a, 0x7, 0x36, 0x2, 0x2, 0x33a, 0xe, - 0x3, 0x2, 0x2, 0x2, 0x33b, 0x33c, 0x7, 0x64, 0x2, 0x2, 0x33c, 0x33d, - 0x7, 0x71, 0x2, 0x2, 0x33d, 0x33e, 0x7, 0x71, 0x2, 0x2, 0x33e, 0x33f, - 0x7, 0x6e, 0x2, 0x2, 0x33f, 0x340, 0x7, 0x33, 0x2, 0x2, 0x340, 0x341, - 0x7, 0x7a, 0x2, 0x2, 0x341, 0x342, 0x7, 0x33, 0x2, 0x2, 0x342, 0x10, - 0x3, 0x2, 0x2, 0x2, 0x343, 0x344, 0x7, 0x64, 0x2, 0x2, 0x344, 0x345, - 0x7, 0x71, 0x2, 0x2, 0x345, 0x346, 0x7, 0x71, 0x2, 0x2, 0x346, 0x347, - 0x7, 0x6e, 0x2, 0x2, 0x347, 0x348, 0x7, 0x33, 0x2, 0x2, 0x348, 0x349, - 0x7, 0x7a, 0x2, 0x2, 0x349, 0x34a, 0x7, 0x34, 0x2, 0x2, 0x34a, 0x12, + 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x169, 0x3, 0x16a, 0x3, 0x16a, + 0x3, 0x16a, 0x3, 0x16a, 0x3, 0x16a, 0x3, 0x16a, 0x3, 0x16a, 0x3, + 0x16a, 0x3, 0x16a, 0x3, 0x16a, 0x3, 0x16a, 0x3, 0x16a, 0x3, 0x16a, + 0x3, 0x16a, 0x3, 0x16a, 0x3, 0x16a, 0x3, 0x16a, 0x3, 0x16a, 0x3, + 0x16a, 0x3, 0x16a, 0x3, 0x16b, 0x3, 0x16b, 0x3, 0x16b, 0x3, 0x16b, + 0x3, 0x16b, 0x3, 0x16b, 0x3, 0x16b, 0x3, 0x16b, 0x3, 0x16b, 0x3, + 0x16b, 0x3, 0x16b, 0x3, 0x16b, 0x3, 0x16b, 0x3, 0x16b, 0x3, 0x16b, + 0x3, 0x16b, 0x3, 0x16b, 0x3, 0x16b, 0x3, 0x16b, 0x3, 0x16b, 0x3, + 0x16b, 0x3, 0x16b, 0x3, 0x16c, 0x3, 0x16c, 0x3, 0x16c, 0x3, 0x16c, + 0x3, 0x16c, 0x3, 0x16c, 0x3, 0x16c, 0x3, 0x16c, 0x3, 0x16c, 0x3, + 0x16c, 0x3, 0x16c, 0x3, 0x16c, 0x3, 0x16c, 0x3, 0x16c, 0x3, 0x16c, + 0x3, 0x16c, 0x3, 0x16c, 0x3, 0x16c, 0x3, 0x16c, 0x3, 0x16c, 0x3, + 0x16c, 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16d, + 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16d, 0x3, + 0x16d, 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16d, + 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16d, 0x3, + 0x16d, 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16d, + 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16d, 0x3, 0x16e, 0x3, + 0x16e, 0x3, 0x16e, 0x3, 0x16e, 0x3, 0x16e, 0x3, 0x16e, 0x3, 0x16e, + 0x3, 0x16e, 0x3, 0x16e, 0x3, 0x16e, 0x3, 0x16e, 0x3, 0x16e, 0x3, + 0x16e, 0x3, 0x16e, 0x3, 0x16e, 0x3, 0x16e, 0x3, 0x16e, 0x3, 0x16e, + 0x3, 0x16e, 0x3, 0x16e, 0x3, 0x16e, 0x3, 0x16e, 0x3, 0x16e, 0x3, + 0x16e, 0x3, 0x16e, 0x3, 0x16e, 0x3, 0x16e, 0x3, 0x16e, 0x3, 0x16e, + 0x3, 0x16e, 0x3, 0x16e, 0x3, 0x16f, 0x3, 0x16f, 0x3, 0x16f, 0x3, + 0x16f, 0x3, 0x16f, 0x3, 0x16f, 0x3, 0x16f, 0x3, 0x16f, 0x3, 0x16f, + 0x3, 0x16f, 0x3, 0x16f, 0x3, 0x16f, 0x3, 0x16f, 0x3, 0x16f, 0x3, + 0x16f, 0x3, 0x16f, 0x3, 0x16f, 0x3, 0x16f, 0x3, 0x16f, 0x3, 0x16f, + 0x3, 0x16f, 0x3, 0x16f, 0x3, 0x16f, 0x3, 0x16f, 0x3, 0x16f, 0x3, + 0x16f, 0x3, 0x16f, 0x3, 0x16f, 0x3, 0x16f, 0x3, 0x16f, 0x3, 0x170, + 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, + 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x7, 0x170, 0x10a8, 0xa, + 0x170, 0xc, 0x170, 0xe, 0x170, 0x10ab, 0xb, 0x170, 0x3, 0x170, 0x3, + 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, + 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, + 0x170, 0x3, 0x170, 0x7, 0x170, 0x10bb, 0xa, 0x170, 0xc, 0x170, 0xe, + 0x170, 0x10be, 0xb, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, + 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, + 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x7, 0x170, 0x10cd, + 0xa, 0x170, 0xc, 0x170, 0xe, 0x170, 0x10d0, 0xb, 0x170, 0x3, 0x170, + 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, + 0x170, 0x7, 0x170, 0x10d9, 0xa, 0x170, 0xc, 0x170, 0xe, 0x170, 0x10dc, + 0xb, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, + 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x7, 0x170, 0x10e6, 0xa, + 0x170, 0xc, 0x170, 0xe, 0x170, 0x10e9, 0xb, 0x170, 0x3, 0x170, 0x3, + 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, + 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x7, 0x170, 0x10f5, 0xa, 0x170, + 0xc, 0x170, 0xe, 0x170, 0x10f8, 0xb, 0x170, 0x3, 0x170, 0x3, 0x170, + 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, + 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, + 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x7, 0x170, 0x110a, 0xa, 0x170, + 0xc, 0x170, 0xe, 0x170, 0x110d, 0xb, 0x170, 0x3, 0x170, 0x3, 0x170, + 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, + 0x170, 0x3, 0x170, 0x7, 0x170, 0x1118, 0xa, 0x170, 0xc, 0x170, 0xe, + 0x170, 0x111b, 0xb, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, + 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, + 0x3, 0x170, 0x7, 0x170, 0x1127, 0xa, 0x170, 0xc, 0x170, 0xe, 0x170, + 0x112a, 0xb, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, + 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, + 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, + 0x7, 0x170, 0x113b, 0xa, 0x170, 0xc, 0x170, 0xe, 0x170, 0x113e, 0xb, + 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, + 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x7, + 0x170, 0x114a, 0xa, 0x170, 0xc, 0x170, 0xe, 0x170, 0x114d, 0xb, 0x170, + 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, + 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, + 0x7, 0x170, 0x115a, 0xa, 0x170, 0xc, 0x170, 0xe, 0x170, 0x115d, 0xb, + 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, 0x3, 0x170, + 0x3, 0x170, 0x3, 0x170, 0x7, 0x170, 0x1166, 0xa, 0x170, 0xc, 0x170, + 0xe, 0x170, 0x1169, 0xb, 0x170, 0x5, 0x170, 0x116b, 0xa, 0x170, 0x3, + 0x171, 0x3, 0x171, 0x3, 0x171, 0x3, 0x171, 0x3, 0x171, 0x3, 0x171, + 0x7, 0x171, 0x1173, 0xa, 0x171, 0xc, 0x171, 0xe, 0x171, 0x1176, 0xb, + 0x171, 0x3, 0x171, 0x3, 0x171, 0x3, 0x171, 0x3, 0x171, 0x3, 0x171, + 0x3, 0x171, 0x7, 0x171, 0x117e, 0xa, 0x171, 0xc, 0x171, 0xe, 0x171, + 0x1181, 0xb, 0x171, 0x3, 0x171, 0x3, 0x171, 0x3, 0x171, 0x3, 0x171, + 0x3, 0x171, 0x3, 0x171, 0x7, 0x171, 0x1189, 0xa, 0x171, 0xc, 0x171, + 0xe, 0x171, 0x118c, 0xb, 0x171, 0x3, 0x171, 0x3, 0x171, 0x3, 0x171, + 0x3, 0x171, 0x3, 0x171, 0x3, 0x171, 0x7, 0x171, 0x1194, 0xa, 0x171, + 0xc, 0x171, 0xe, 0x171, 0x1197, 0xb, 0x171, 0x5, 0x171, 0x1199, 0xa, + 0x171, 0x3, 0x172, 0x3, 0x172, 0x3, 0x172, 0x7, 0x172, 0x119e, 0xa, + 0x172, 0xc, 0x172, 0xe, 0x172, 0x11a1, 0xb, 0x172, 0x3, 0x173, 0x3, + 0x173, 0x3, 0x174, 0x3, 0x174, 0x3, 0x175, 0x6, 0x175, 0x11a8, 0xa, + 0x175, 0xd, 0x175, 0xe, 0x175, 0x11a9, 0x3, 0x176, 0x3, 0x176, 0x3, + 0x176, 0x3, 0x176, 0x5, 0x176, 0x11b0, 0xa, 0x176, 0x3, 0x176, 0x6, + 0x176, 0x11b3, 0xa, 0x176, 0xd, 0x176, 0xe, 0x176, 0x11b4, 0x3, 0x177, + 0x3, 0x177, 0x3, 0x178, 0x5, 0x178, 0x11ba, 0xa, 0x178, 0x3, 0x178, + 0x3, 0x178, 0x3, 0x178, 0x3, 0x178, 0x3, 0x178, 0x5, 0x178, 0x11c1, + 0xa, 0x178, 0x3, 0x179, 0x3, 0x179, 0x5, 0x179, 0x11c5, 0xa, 0x179, + 0x3, 0x179, 0x3, 0x179, 0x3, 0x179, 0x5, 0x179, 0x11ca, 0xa, 0x179, + 0x3, 0x179, 0x5, 0x179, 0x11cd, 0xa, 0x179, 0x3, 0x17a, 0x3, 0x17a, + 0x3, 0x17b, 0x6, 0x17b, 0x11d2, 0xa, 0x17b, 0xd, 0x17b, 0xe, 0x17b, + 0x11d3, 0x3, 0x17c, 0x6, 0x17c, 0x11d7, 0xa, 0x17c, 0xd, 0x17c, 0xe, + 0x17c, 0x11d8, 0x3, 0x17d, 0x5, 0x17d, 0x11dc, 0xa, 0x17d, 0x3, 0x17d, + 0x5, 0x17d, 0x11df, 0xa, 0x17d, 0x3, 0x17d, 0x5, 0x17d, 0x11e2, 0xa, + 0x17d, 0x3, 0x17d, 0x5, 0x17d, 0x11e5, 0xa, 0x17d, 0x3, 0x17d, 0x5, + 0x17d, 0x11e8, 0xa, 0x17d, 0x5, 0x17d, 0x11ea, 0xa, 0x17d, 0x3, 0x17e, + 0x3, 0x17e, 0x5, 0x17e, 0x11ee, 0xa, 0x17e, 0x3, 0x17e, 0x3, 0x17e, + 0x5, 0x17e, 0x11f2, 0xa, 0x17e, 0x5, 0x17e, 0x11f4, 0xa, 0x17e, 0x3, + 0x17f, 0x3, 0x17f, 0x3, 0x180, 0x3, 0x180, 0x5, 0x180, 0x11fa, 0xa, + 0x180, 0x3, 0x180, 0x5, 0x180, 0x11fd, 0xa, 0x180, 0x3, 0x180, 0x3, + 0x180, 0x3, 0x180, 0x5, 0x180, 0x1202, 0xa, 0x180, 0x5, 0x180, 0x1204, + 0xa, 0x180, 0x3, 0x181, 0x3, 0x181, 0x3, 0x182, 0x3, 0x182, 0x3, + 0x182, 0x3, 0x183, 0x3, 0x183, 0x5, 0x183, 0x120d, 0xa, 0x183, 0x3, + 0x183, 0x3, 0x183, 0x3, 0x184, 0x6, 0x184, 0x1212, 0xa, 0x184, 0xd, + 0x184, 0xe, 0x184, 0x1213, 0x3, 0x185, 0x3, 0x185, 0x5, 0x185, 0x1218, + 0xa, 0x185, 0x3, 0x186, 0x3, 0x186, 0x5, 0x186, 0x121c, 0xa, 0x186, + 0x3, 0x186, 0x3, 0x186, 0x3, 0x186, 0x3, 0x186, 0x3, 0x186, 0x3, + 0x186, 0x3, 0x186, 0x3, 0x186, 0x3, 0x186, 0x7, 0x186, 0x1227, 0xa, + 0x186, 0xc, 0x186, 0xe, 0x186, 0x122a, 0xb, 0x186, 0x3, 0x186, 0x3, + 0x186, 0x3, 0x187, 0x3, 0x187, 0x5, 0x187, 0x1230, 0xa, 0x187, 0x3, + 0x187, 0x3, 0x187, 0x3, 0x187, 0x3, 0x187, 0x3, 0x187, 0x3, 0x187, + 0x5, 0x187, 0x1238, 0xa, 0x187, 0x3, 0x187, 0x3, 0x187, 0x5, 0x187, + 0x123c, 0xa, 0x187, 0x3, 0x187, 0x5, 0x187, 0x123f, 0xa, 0x187, 0x3, + 0x187, 0x3, 0x187, 0x3, 0x188, 0x6, 0x188, 0x1244, 0xa, 0x188, 0xd, + 0x188, 0xe, 0x188, 0x1245, 0x3, 0x188, 0x3, 0x188, 0x3, 0x189, 0x3, + 0x189, 0x5, 0x189, 0x124c, 0xa, 0x189, 0x3, 0x189, 0x5, 0x189, 0x124f, + 0xa, 0x189, 0x3, 0x189, 0x3, 0x189, 0x3, 0x18a, 0x3, 0x18a, 0x3, + 0x18a, 0x3, 0x18a, 0x7, 0x18a, 0x1257, 0xa, 0x18a, 0xc, 0x18a, 0xe, + 0x18a, 0x125a, 0xb, 0x18a, 0x3, 0x18a, 0x3, 0x18a, 0x3, 0x18a, 0x3, + 0x18a, 0x3, 0x18a, 0x3, 0x18b, 0x3, 0x18b, 0x3, 0x18b, 0x3, 0x18b, + 0x7, 0x18b, 0x1265, 0xa, 0x18b, 0xc, 0x18b, 0xe, 0x18b, 0x1268, 0xb, + 0x18b, 0x3, 0x18b, 0x3, 0x18b, 0x3, 0x1258, 0x2, 0x18c, 0x3, 0x3, + 0x5, 0x4, 0x7, 0x5, 0x9, 0x6, 0xb, 0x7, 0xd, 0x8, 0xf, 0x9, 0x11, + 0xa, 0x13, 0xb, 0x15, 0xc, 0x17, 0xd, 0x19, 0xe, 0x1b, 0xf, 0x1d, + 0x10, 0x1f, 0x11, 0x21, 0x12, 0x23, 0x13, 0x25, 0x14, 0x27, 0x15, + 0x29, 0x16, 0x2b, 0x17, 0x2d, 0x18, 0x2f, 0x19, 0x31, 0x1a, 0x33, + 0x1b, 0x35, 0x1c, 0x37, 0x1d, 0x39, 0x1e, 0x3b, 0x1f, 0x3d, 0x20, + 0x3f, 0x21, 0x41, 0x22, 0x43, 0x23, 0x45, 0x24, 0x47, 0x25, 0x49, + 0x26, 0x4b, 0x27, 0x4d, 0x28, 0x4f, 0x29, 0x51, 0x2a, 0x53, 0x2b, + 0x55, 0x2c, 0x57, 0x2d, 0x59, 0x2e, 0x5b, 0x2f, 0x5d, 0x30, 0x5f, + 0x31, 0x61, 0x32, 0x63, 0x33, 0x65, 0x34, 0x67, 0x35, 0x69, 0x36, + 0x6b, 0x37, 0x6d, 0x38, 0x6f, 0x39, 0x71, 0x3a, 0x73, 0x3b, 0x75, + 0x3c, 0x77, 0x3d, 0x79, 0x3e, 0x7b, 0x3f, 0x7d, 0x40, 0x7f, 0x41, + 0x81, 0x42, 0x83, 0x43, 0x85, 0x44, 0x87, 0x45, 0x89, 0x46, 0x8b, + 0x47, 0x8d, 0x48, 0x8f, 0x49, 0x91, 0x4a, 0x93, 0x4b, 0x95, 0x4c, + 0x97, 0x4d, 0x99, 0x4e, 0x9b, 0x4f, 0x9d, 0x50, 0x9f, 0x51, 0xa1, + 0x52, 0xa3, 0x53, 0xa5, 0x54, 0xa7, 0x55, 0xa9, 0x56, 0xab, 0x57, + 0xad, 0x58, 0xaf, 0x59, 0xb1, 0x5a, 0xb3, 0x5b, 0xb5, 0x5c, 0xb7, + 0x5d, 0xb9, 0x5e, 0xbb, 0x5f, 0xbd, 0x60, 0xbf, 0x61, 0xc1, 0x62, + 0xc3, 0x63, 0xc5, 0x64, 0xc7, 0x65, 0xc9, 0x66, 0xcb, 0x67, 0xcd, + 0x68, 0xcf, 0x69, 0xd1, 0x6a, 0xd3, 0x6b, 0xd5, 0x6c, 0xd7, 0x6d, + 0xd9, 0x6e, 0xdb, 0x6f, 0xdd, 0x70, 0xdf, 0x71, 0xe1, 0x72, 0xe3, + 0x73, 0xe5, 0x74, 0xe7, 0x75, 0xe9, 0x76, 0xeb, 0x77, 0xed, 0x78, + 0xef, 0x79, 0xf1, 0x7a, 0xf3, 0x7b, 0xf5, 0x7c, 0xf7, 0x7d, 0xf9, + 0x7e, 0xfb, 0x7f, 0xfd, 0x80, 0xff, 0x81, 0x101, 0x82, 0x103, 0x83, + 0x105, 0x84, 0x107, 0x85, 0x109, 0x86, 0x10b, 0x87, 0x10d, 0x88, + 0x10f, 0x89, 0x111, 0x8a, 0x113, 0x8b, 0x115, 0x8c, 0x117, 0x8d, + 0x119, 0x8e, 0x11b, 0x8f, 0x11d, 0x90, 0x11f, 0x91, 0x121, 0x92, + 0x123, 0x93, 0x125, 0x94, 0x127, 0x95, 0x129, 0x96, 0x12b, 0x97, + 0x12d, 0x98, 0x12f, 0x99, 0x131, 0x9a, 0x133, 0x9b, 0x135, 0x9c, + 0x137, 0x9d, 0x139, 0x9e, 0x13b, 0x9f, 0x13d, 0xa0, 0x13f, 0xa1, + 0x141, 0xa2, 0x143, 0xa3, 0x145, 0xa4, 0x147, 0xa5, 0x149, 0xa6, + 0x14b, 0xa7, 0x14d, 0xa8, 0x14f, 0xa9, 0x151, 0xaa, 0x153, 0xab, + 0x155, 0xac, 0x157, 0xad, 0x159, 0xae, 0x15b, 0xaf, 0x15d, 0xb0, + 0x15f, 0xb1, 0x161, 0xb2, 0x163, 0xb3, 0x165, 0xb4, 0x167, 0xb5, + 0x169, 0xb6, 0x16b, 0xb7, 0x16d, 0xb8, 0x16f, 0xb9, 0x171, 0xba, + 0x173, 0xbb, 0x175, 0xbc, 0x177, 0xbd, 0x179, 0xbe, 0x17b, 0xbf, + 0x17d, 0xc0, 0x17f, 0xc1, 0x181, 0xc2, 0x183, 0xc3, 0x185, 0xc4, + 0x187, 0xc5, 0x189, 0xc6, 0x18b, 0xc7, 0x18d, 0xc8, 0x18f, 0xc9, + 0x191, 0xca, 0x193, 0xcb, 0x195, 0xcc, 0x197, 0xcd, 0x199, 0xce, + 0x19b, 0xcf, 0x19d, 0xd0, 0x19f, 0xd1, 0x1a1, 0xd2, 0x1a3, 0xd3, + 0x1a5, 0xd4, 0x1a7, 0xd5, 0x1a9, 0xd6, 0x1ab, 0xd7, 0x1ad, 0xd8, + 0x1af, 0xd9, 0x1b1, 0xda, 0x1b3, 0xdb, 0x1b5, 0xdc, 0x1b7, 0xdd, + 0x1b9, 0xde, 0x1bb, 0xdf, 0x1bd, 0xe0, 0x1bf, 0xe1, 0x1c1, 0xe2, + 0x1c3, 0xe3, 0x1c5, 0xe4, 0x1c7, 0xe5, 0x1c9, 0xe6, 0x1cb, 0xe7, + 0x1cd, 0xe8, 0x1cf, 0xe9, 0x1d1, 0xea, 0x1d3, 0xeb, 0x1d5, 0xec, + 0x1d7, 0xed, 0x1d9, 0xee, 0x1db, 0xef, 0x1dd, 0xf0, 0x1df, 0xf1, + 0x1e1, 0xf2, 0x1e3, 0xf3, 0x1e5, 0xf4, 0x1e7, 0xf5, 0x1e9, 0xf6, + 0x1eb, 0xf7, 0x1ed, 0xf8, 0x1ef, 0xf9, 0x1f1, 0xfa, 0x1f3, 0xfb, + 0x1f5, 0xfc, 0x1f7, 0xfd, 0x1f9, 0xfe, 0x1fb, 0xff, 0x1fd, 0x100, + 0x1ff, 0x101, 0x201, 0x102, 0x203, 0x103, 0x205, 0x104, 0x207, 0x105, + 0x209, 0x106, 0x20b, 0x107, 0x20d, 0x108, 0x20f, 0x109, 0x211, 0x10a, + 0x213, 0x10b, 0x215, 0x10c, 0x217, 0x10d, 0x219, 0x10e, 0x21b, 0x10f, + 0x21d, 0x110, 0x21f, 0x111, 0x221, 0x112, 0x223, 0x113, 0x225, 0x114, + 0x227, 0x115, 0x229, 0x116, 0x22b, 0x117, 0x22d, 0x118, 0x22f, 0x119, + 0x231, 0x11a, 0x233, 0x11b, 0x235, 0x11c, 0x237, 0x11d, 0x239, 0x11e, + 0x23b, 0x11f, 0x23d, 0x120, 0x23f, 0x121, 0x241, 0x122, 0x243, 0x123, + 0x245, 0x124, 0x247, 0x125, 0x249, 0x126, 0x24b, 0x127, 0x24d, 0x128, + 0x24f, 0x129, 0x251, 0x12a, 0x253, 0x12b, 0x255, 0x12c, 0x257, 0x12d, + 0x259, 0x12e, 0x25b, 0x12f, 0x25d, 0x130, 0x25f, 0x131, 0x261, 0x132, + 0x263, 0x133, 0x265, 0x134, 0x267, 0x135, 0x269, 0x136, 0x26b, 0x137, + 0x26d, 0x138, 0x26f, 0x139, 0x271, 0x13a, 0x273, 0x13b, 0x275, 0x13c, + 0x277, 0x13d, 0x279, 0x13e, 0x27b, 0x13f, 0x27d, 0x140, 0x27f, 0x141, + 0x281, 0x142, 0x283, 0x143, 0x285, 0x144, 0x287, 0x145, 0x289, 0x146, + 0x28b, 0x147, 0x28d, 0x148, 0x28f, 0x149, 0x291, 0x14a, 0x293, 0x14b, + 0x295, 0x14c, 0x297, 0x14d, 0x299, 0x14e, 0x29b, 0x14f, 0x29d, 0x150, + 0x29f, 0x151, 0x2a1, 0x152, 0x2a3, 0x153, 0x2a5, 0x154, 0x2a7, 0x155, + 0x2a9, 0x156, 0x2ab, 0x157, 0x2ad, 0x158, 0x2af, 0x159, 0x2b1, 0x15a, + 0x2b3, 0x15b, 0x2b5, 0x15c, 0x2b7, 0x15d, 0x2b9, 0x15e, 0x2bb, 0x15f, + 0x2bd, 0x160, 0x2bf, 0x161, 0x2c1, 0x162, 0x2c3, 0x163, 0x2c5, 0x164, + 0x2c7, 0x165, 0x2c9, 0x166, 0x2cb, 0x167, 0x2cd, 0x168, 0x2cf, 0x169, + 0x2d1, 0x16a, 0x2d3, 0x16b, 0x2d5, 0x16c, 0x2d7, 0x16d, 0x2d9, 0x16e, + 0x2db, 0x16f, 0x2dd, 0x170, 0x2df, 0x171, 0x2e1, 0x172, 0x2e3, 0x173, + 0x2e5, 0x2, 0x2e7, 0x2, 0x2e9, 0x2, 0x2eb, 0x2, 0x2ed, 0x2, 0x2ef, + 0x2, 0x2f1, 0x2, 0x2f3, 0x2, 0x2f5, 0x2, 0x2f7, 0x2, 0x2f9, 0x2, + 0x2fb, 0x174, 0x2fd, 0x2, 0x2ff, 0x175, 0x301, 0x2, 0x303, 0x2, 0x305, + 0x176, 0x307, 0x2, 0x309, 0x2, 0x30b, 0x177, 0x30d, 0x178, 0x30f, + 0x179, 0x311, 0x17a, 0x313, 0x17b, 0x315, 0x17c, 0x3, 0x2, 0xd, 0x5, + 0x2, 0x43, 0x5c, 0x61, 0x61, 0x63, 0x7c, 0x3, 0x2, 0x32, 0x3b, 0x5, + 0x2, 0x32, 0x3b, 0x43, 0x48, 0x63, 0x68, 0x4, 0x2, 0x2d, 0x2d, 0x2f, + 0x2f, 0x4, 0x2, 0x57, 0x57, 0x77, 0x77, 0x4, 0x2, 0x4e, 0x4e, 0x6e, + 0x6e, 0x8, 0x2, 0x48, 0x48, 0x4a, 0x4a, 0x4e, 0x4e, 0x68, 0x68, 0x6a, + 0x6a, 0x6e, 0x6e, 0xc, 0x2, 0x24, 0x24, 0x29, 0x29, 0x41, 0x41, 0x5e, + 0x5e, 0x63, 0x64, 0x68, 0x68, 0x70, 0x70, 0x74, 0x74, 0x76, 0x76, + 0x78, 0x78, 0x6, 0x2, 0xc, 0xc, 0xf, 0xf, 0x24, 0x24, 0x5e, 0x5e, + 0x4, 0x2, 0xc, 0xc, 0xf, 0xf, 0x4, 0x2, 0xb, 0xb, 0x22, 0x22, 0x2, + 0x12a9, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x5, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x9, 0x3, 0x2, 0x2, 0x2, 0x2, + 0xb, 0x3, 0x2, 0x2, 0x2, 0x2, 0xd, 0x3, 0x2, 0x2, 0x2, 0x2, 0xf, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x11, 0x3, 0x2, 0x2, 0x2, 0x2, 0x13, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x15, 0x3, 0x2, 0x2, 0x2, 0x2, 0x17, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x19, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1b, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x1d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1f, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x21, 0x3, 0x2, 0x2, 0x2, 0x2, 0x23, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x25, 0x3, 0x2, 0x2, 0x2, 0x2, 0x27, 0x3, 0x2, 0x2, 0x2, 0x2, 0x29, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x2b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2d, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x2f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x31, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x33, 0x3, 0x2, 0x2, 0x2, 0x2, 0x35, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x37, 0x3, 0x2, 0x2, 0x2, 0x2, 0x39, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x3b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3d, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x3f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x41, 0x3, 0x2, 0x2, 0x2, 0x2, 0x43, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x45, 0x3, 0x2, 0x2, 0x2, 0x2, 0x47, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x49, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4b, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x4d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4f, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x51, 0x3, 0x2, 0x2, 0x2, 0x2, 0x53, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x55, 0x3, 0x2, 0x2, 0x2, 0x2, 0x57, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x59, 0x3, 0x2, 0x2, 0x2, 0x2, 0x5b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x5d, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x5f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x61, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x63, 0x3, 0x2, 0x2, 0x2, 0x2, 0x65, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x67, 0x3, 0x2, 0x2, 0x2, 0x2, 0x69, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x6b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x6d, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x6f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x71, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x73, 0x3, 0x2, 0x2, 0x2, 0x2, 0x75, 0x3, 0x2, 0x2, 0x2, 0x2, 0x77, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x79, 0x3, 0x2, 0x2, 0x2, 0x2, 0x7b, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x7d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x7f, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x81, 0x3, 0x2, 0x2, 0x2, 0x2, 0x83, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x85, 0x3, 0x2, 0x2, 0x2, 0x2, 0x87, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x89, 0x3, 0x2, 0x2, 0x2, 0x2, 0x8b, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x8d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x8f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x91, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x93, 0x3, 0x2, 0x2, 0x2, 0x2, 0x95, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x97, 0x3, 0x2, 0x2, 0x2, 0x2, 0x99, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x9b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x9d, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x9f, 0x3, 0x2, 0x2, 0x2, 0x2, 0xa1, 0x3, 0x2, 0x2, 0x2, + 0x2, 0xa3, 0x3, 0x2, 0x2, 0x2, 0x2, 0xa5, 0x3, 0x2, 0x2, 0x2, 0x2, + 0xa7, 0x3, 0x2, 0x2, 0x2, 0x2, 0xa9, 0x3, 0x2, 0x2, 0x2, 0x2, 0xab, + 0x3, 0x2, 0x2, 0x2, 0x2, 0xad, 0x3, 0x2, 0x2, 0x2, 0x2, 0xaf, 0x3, + 0x2, 0x2, 0x2, 0x2, 0xb1, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb3, 0x3, 0x2, + 0x2, 0x2, 0x2, 0xb5, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb7, 0x3, 0x2, 0x2, + 0x2, 0x2, 0xb9, 0x3, 0x2, 0x2, 0x2, 0x2, 0xbb, 0x3, 0x2, 0x2, 0x2, + 0x2, 0xbd, 0x3, 0x2, 0x2, 0x2, 0x2, 0xbf, 0x3, 0x2, 0x2, 0x2, 0x2, + 0xc1, 0x3, 0x2, 0x2, 0x2, 0x2, 0xc3, 0x3, 0x2, 0x2, 0x2, 0x2, 0xc5, + 0x3, 0x2, 0x2, 0x2, 0x2, 0xc7, 0x3, 0x2, 0x2, 0x2, 0x2, 0xc9, 0x3, + 0x2, 0x2, 0x2, 0x2, 0xcb, 0x3, 0x2, 0x2, 0x2, 0x2, 0xcd, 0x3, 0x2, + 0x2, 0x2, 0x2, 0xcf, 0x3, 0x2, 0x2, 0x2, 0x2, 0xd1, 0x3, 0x2, 0x2, + 0x2, 0x2, 0xd3, 0x3, 0x2, 0x2, 0x2, 0x2, 0xd5, 0x3, 0x2, 0x2, 0x2, + 0x2, 0xd7, 0x3, 0x2, 0x2, 0x2, 0x2, 0xd9, 0x3, 0x2, 0x2, 0x2, 0x2, + 0xdb, 0x3, 0x2, 0x2, 0x2, 0x2, 0xdd, 0x3, 0x2, 0x2, 0x2, 0x2, 0xdf, + 0x3, 0x2, 0x2, 0x2, 0x2, 0xe1, 0x3, 0x2, 0x2, 0x2, 0x2, 0xe3, 0x3, + 0x2, 0x2, 0x2, 0x2, 0xe5, 0x3, 0x2, 0x2, 0x2, 0x2, 0xe7, 0x3, 0x2, + 0x2, 0x2, 0x2, 0xe9, 0x3, 0x2, 0x2, 0x2, 0x2, 0xeb, 0x3, 0x2, 0x2, + 0x2, 0x2, 0xed, 0x3, 0x2, 0x2, 0x2, 0x2, 0xef, 0x3, 0x2, 0x2, 0x2, + 0x2, 0xf1, 0x3, 0x2, 0x2, 0x2, 0x2, 0xf3, 0x3, 0x2, 0x2, 0x2, 0x2, + 0xf5, 0x3, 0x2, 0x2, 0x2, 0x2, 0xf7, 0x3, 0x2, 0x2, 0x2, 0x2, 0xf9, + 0x3, 0x2, 0x2, 0x2, 0x2, 0xfb, 0x3, 0x2, 0x2, 0x2, 0x2, 0xfd, 0x3, + 0x2, 0x2, 0x2, 0x2, 0xff, 0x3, 0x2, 0x2, 0x2, 0x2, 0x101, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x103, 0x3, 0x2, 0x2, 0x2, 0x2, 0x105, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x107, 0x3, 0x2, 0x2, 0x2, 0x2, 0x109, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x10b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x10d, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x10f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x111, 0x3, 0x2, 0x2, 0x2, 0x2, 0x113, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x115, 0x3, 0x2, 0x2, 0x2, 0x2, 0x117, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x119, 0x3, 0x2, 0x2, 0x2, 0x2, 0x11b, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x11d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x11f, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x121, 0x3, 0x2, 0x2, 0x2, 0x2, 0x123, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x125, 0x3, 0x2, 0x2, 0x2, 0x2, 0x127, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x129, 0x3, 0x2, 0x2, 0x2, 0x2, 0x12b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x12d, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x12f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x131, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x133, 0x3, 0x2, 0x2, 0x2, 0x2, 0x135, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x137, 0x3, 0x2, 0x2, 0x2, 0x2, 0x139, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x13b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x13d, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x13f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x141, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x143, 0x3, 0x2, 0x2, 0x2, 0x2, 0x145, 0x3, 0x2, 0x2, 0x2, 0x2, 0x147, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x149, 0x3, 0x2, 0x2, 0x2, 0x2, 0x14b, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x14d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x14f, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x151, 0x3, 0x2, 0x2, 0x2, 0x2, 0x153, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x155, 0x3, 0x2, 0x2, 0x2, 0x2, 0x157, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x159, 0x3, 0x2, 0x2, 0x2, 0x2, 0x15b, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x15d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x15f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x161, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x163, 0x3, 0x2, 0x2, 0x2, 0x2, 0x165, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x167, 0x3, 0x2, 0x2, 0x2, 0x2, 0x169, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x16b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x16d, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x16f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x171, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x173, 0x3, 0x2, 0x2, 0x2, 0x2, 0x175, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x177, 0x3, 0x2, 0x2, 0x2, 0x2, 0x179, 0x3, 0x2, 0x2, 0x2, 0x2, 0x17b, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x17d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x17f, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x181, 0x3, 0x2, 0x2, 0x2, 0x2, 0x183, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x185, 0x3, 0x2, 0x2, 0x2, 0x2, 0x187, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x189, 0x3, 0x2, 0x2, 0x2, 0x2, 0x18b, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x18d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x18f, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x191, 0x3, 0x2, 0x2, 0x2, 0x2, 0x193, 0x3, 0x2, 0x2, 0x2, 0x2, 0x195, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x197, 0x3, 0x2, 0x2, 0x2, 0x2, 0x199, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x19b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x19d, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x19f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1a1, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x1a3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1a5, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x1a7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1a9, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x1ab, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1ad, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1af, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x1b1, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1b3, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x1b5, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1b7, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x1b9, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1bb, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x1bd, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1bf, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x1c1, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1c3, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x1c5, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1c7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1c9, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x1cb, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1cd, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x1cf, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1d1, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x1d3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1d5, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x1d7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1d9, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x1db, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1dd, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x1df, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1e1, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1e3, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x1e5, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1e7, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x1e9, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1eb, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x1ed, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1ef, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x1f1, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1f3, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x1f5, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1f7, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x1f9, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1fb, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1fd, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x1ff, 0x3, 0x2, 0x2, 0x2, 0x2, 0x201, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x203, 0x3, 0x2, 0x2, 0x2, 0x2, 0x205, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x207, 0x3, 0x2, 0x2, 0x2, 0x2, 0x209, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x20b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x20d, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x20f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x211, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x213, 0x3, 0x2, 0x2, 0x2, 0x2, 0x215, 0x3, 0x2, 0x2, 0x2, 0x2, 0x217, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x219, 0x3, 0x2, 0x2, 0x2, 0x2, 0x21b, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x21d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x21f, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x221, 0x3, 0x2, 0x2, 0x2, 0x2, 0x223, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x225, 0x3, 0x2, 0x2, 0x2, 0x2, 0x227, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x229, 0x3, 0x2, 0x2, 0x2, 0x2, 0x22b, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x22d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x22f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x231, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x233, 0x3, 0x2, 0x2, 0x2, 0x2, 0x235, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x237, 0x3, 0x2, 0x2, 0x2, 0x2, 0x239, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x23b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x23d, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x23f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x241, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x243, 0x3, 0x2, 0x2, 0x2, 0x2, 0x245, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x247, 0x3, 0x2, 0x2, 0x2, 0x2, 0x249, 0x3, 0x2, 0x2, 0x2, 0x2, 0x24b, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x24d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x24f, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x251, 0x3, 0x2, 0x2, 0x2, 0x2, 0x253, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x255, 0x3, 0x2, 0x2, 0x2, 0x2, 0x257, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x259, 0x3, 0x2, 0x2, 0x2, 0x2, 0x25b, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x25d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x25f, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x261, 0x3, 0x2, 0x2, 0x2, 0x2, 0x263, 0x3, 0x2, 0x2, 0x2, 0x2, 0x265, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x267, 0x3, 0x2, 0x2, 0x2, 0x2, 0x269, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x26b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x26d, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x26f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x271, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x273, 0x3, 0x2, 0x2, 0x2, 0x2, 0x275, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x277, 0x3, 0x2, 0x2, 0x2, 0x2, 0x279, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x27b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x27d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x27f, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x281, 0x3, 0x2, 0x2, 0x2, 0x2, 0x283, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x285, 0x3, 0x2, 0x2, 0x2, 0x2, 0x287, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x289, 0x3, 0x2, 0x2, 0x2, 0x2, 0x28b, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x28d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x28f, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x291, 0x3, 0x2, 0x2, 0x2, 0x2, 0x293, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x295, 0x3, 0x2, 0x2, 0x2, 0x2, 0x297, 0x3, 0x2, 0x2, 0x2, 0x2, 0x299, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x29b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x29d, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x29f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2a1, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x2a3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2a5, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x2a7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2a9, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x2ab, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2ad, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x2af, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2b1, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2b3, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x2b5, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2b7, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x2b9, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2bb, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x2bd, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2bf, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x2c1, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2c3, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x2c5, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2c7, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x2c9, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2cb, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2cd, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x2cf, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2d1, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x2d3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2d5, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x2d7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2d9, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x2db, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2dd, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x2df, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2e1, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x2e3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2fb, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2ff, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x305, 0x3, 0x2, 0x2, 0x2, 0x2, 0x30b, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x30d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x30f, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x311, 0x3, 0x2, 0x2, 0x2, 0x2, 0x313, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x315, 0x3, 0x2, 0x2, 0x2, 0x3, 0x317, 0x3, 0x2, 0x2, 0x2, + 0x5, 0x32e, 0x3, 0x2, 0x2, 0x2, 0x7, 0x333, 0x3, 0x2, 0x2, 0x2, 0x9, + 0x339, 0x3, 0x2, 0x2, 0x2, 0xb, 0x33f, 0x3, 0x2, 0x2, 0x2, 0xd, 0x345, + 0x3, 0x2, 0x2, 0x2, 0xf, 0x34b, 0x3, 0x2, 0x2, 0x2, 0x11, 0x353, + 0x3, 0x2, 0x2, 0x2, 0x13, 0x35b, 0x3, 0x2, 0x2, 0x2, 0x15, 0x363, + 0x3, 0x2, 0x2, 0x2, 0x17, 0x36b, 0x3, 0x2, 0x2, 0x2, 0x19, 0x373, + 0x3, 0x2, 0x2, 0x2, 0x1b, 0x37b, 0x3, 0x2, 0x2, 0x2, 0x1d, 0x383, + 0x3, 0x2, 0x2, 0x2, 0x1f, 0x38b, 0x3, 0x2, 0x2, 0x2, 0x21, 0x393, + 0x3, 0x2, 0x2, 0x2, 0x23, 0x39b, 0x3, 0x2, 0x2, 0x2, 0x25, 0x3a3, + 0x3, 0x2, 0x2, 0x2, 0x27, 0x3ab, 0x3, 0x2, 0x2, 0x2, 0x29, 0x3b3, + 0x3, 0x2, 0x2, 0x2, 0x2b, 0x3bb, 0x3, 0x2, 0x2, 0x2, 0x2d, 0x3c3, + 0x3, 0x2, 0x2, 0x2, 0x2f, 0x3cb, 0x3, 0x2, 0x2, 0x2, 0x31, 0x3d2, + 0x3, 0x2, 0x2, 0x2, 0x33, 0x3f8, 0x3, 0x2, 0x2, 0x2, 0x35, 0x40a, + 0x3, 0x2, 0x2, 0x2, 0x37, 0x410, 0x3, 0x2, 0x2, 0x2, 0x39, 0x415, + 0x3, 0x2, 0x2, 0x2, 0x3b, 0x41d, 0x3, 0x2, 0x2, 0x2, 0x3d, 0x426, + 0x3, 0x2, 0x2, 0x2, 0x3f, 0x435, 0x3, 0x2, 0x2, 0x2, 0x41, 0x444, + 0x3, 0x2, 0x2, 0x2, 0x43, 0x44a, 0x3, 0x2, 0x2, 0x2, 0x45, 0x457, + 0x3, 0x2, 0x2, 0x2, 0x47, 0x45d, 0x3, 0x2, 0x2, 0x2, 0x49, 0x475, + 0x3, 0x2, 0x2, 0x2, 0x4b, 0x47e, 0x3, 0x2, 0x2, 0x2, 0x4d, 0x486, + 0x3, 0x2, 0x2, 0x2, 0x4f, 0x48e, 0x3, 0x2, 0x2, 0x2, 0x51, 0x491, + 0x3, 0x2, 0x2, 0x2, 0x53, 0x498, 0x3, 0x2, 0x2, 0x2, 0x55, 0x4a0, + 0x3, 0x2, 0x2, 0x2, 0x57, 0x4a8, 0x3, 0x2, 0x2, 0x2, 0x59, 0x4b0, + 0x3, 0x2, 0x2, 0x2, 0x5b, 0x4b8, 0x3, 0x2, 0x2, 0x2, 0x5d, 0x4c2, + 0x3, 0x2, 0x2, 0x2, 0x5f, 0x4cc, 0x3, 0x2, 0x2, 0x2, 0x61, 0x4d6, + 0x3, 0x2, 0x2, 0x2, 0x63, 0x4e0, 0x3, 0x2, 0x2, 0x2, 0x65, 0x4ea, + 0x3, 0x2, 0x2, 0x2, 0x67, 0x4f4, 0x3, 0x2, 0x2, 0x2, 0x69, 0x4fe, + 0x3, 0x2, 0x2, 0x2, 0x6b, 0x508, 0x3, 0x2, 0x2, 0x2, 0x6d, 0x512, + 0x3, 0x2, 0x2, 0x2, 0x6f, 0x51c, 0x3, 0x2, 0x2, 0x2, 0x71, 0x526, + 0x3, 0x2, 0x2, 0x2, 0x73, 0x530, 0x3, 0x2, 0x2, 0x2, 0x75, 0x53a, + 0x3, 0x2, 0x2, 0x2, 0x77, 0x544, 0x3, 0x2, 0x2, 0x2, 0x79, 0x54e, + 0x3, 0x2, 0x2, 0x2, 0x7b, 0x558, 0x3, 0x2, 0x2, 0x2, 0x7d, 0x55d, + 0x3, 0x2, 0x2, 0x2, 0x7f, 0x562, 0x3, 0x2, 0x2, 0x2, 0x81, 0x569, + 0x3, 0x2, 0x2, 0x2, 0x83, 0x570, 0x3, 0x2, 0x2, 0x2, 0x85, 0x582, + 0x3, 0x2, 0x2, 0x2, 0x87, 0x599, 0x3, 0x2, 0x2, 0x2, 0x89, 0x59f, + 0x3, 0x2, 0x2, 0x2, 0x8b, 0x5a6, 0x3, 0x2, 0x2, 0x2, 0x8d, 0x5ad, + 0x3, 0x2, 0x2, 0x2, 0x8f, 0x5b4, 0x3, 0x2, 0x2, 0x2, 0x91, 0x5bb, + 0x3, 0x2, 0x2, 0x2, 0x93, 0x5c4, 0x3, 0x2, 0x2, 0x2, 0x95, 0x5cd, + 0x3, 0x2, 0x2, 0x2, 0x97, 0x5d6, 0x3, 0x2, 0x2, 0x2, 0x99, 0x5df, + 0x3, 0x2, 0x2, 0x2, 0x9b, 0x5e8, 0x3, 0x2, 0x2, 0x2, 0x9d, 0x5f1, + 0x3, 0x2, 0x2, 0x2, 0x9f, 0x5fa, 0x3, 0x2, 0x2, 0x2, 0xa1, 0x603, + 0x3, 0x2, 0x2, 0x2, 0xa3, 0x60c, 0x3, 0x2, 0x2, 0x2, 0xa5, 0x615, + 0x3, 0x2, 0x2, 0x2, 0xa7, 0x61e, 0x3, 0x2, 0x2, 0x2, 0xa9, 0x627, + 0x3, 0x2, 0x2, 0x2, 0xab, 0x630, 0x3, 0x2, 0x2, 0x2, 0xad, 0x639, + 0x3, 0x2, 0x2, 0x2, 0xaf, 0x642, 0x3, 0x2, 0x2, 0x2, 0xb1, 0x64b, + 0x3, 0x2, 0x2, 0x2, 0xb3, 0x64f, 0x3, 0x2, 0x2, 0x2, 0xb5, 0x65b, + 0x3, 0x2, 0x2, 0x2, 0xb7, 0x66c, 0x3, 0x2, 0x2, 0x2, 0xb9, 0x673, + 0x3, 0x2, 0x2, 0x2, 0xbb, 0x678, 0x3, 0x2, 0x2, 0x2, 0xbd, 0x67e, + 0x3, 0x2, 0x2, 0x2, 0xbf, 0x684, 0x3, 0x2, 0x2, 0x2, 0xc1, 0x68a, + 0x3, 0x2, 0x2, 0x2, 0xc3, 0x690, 0x3, 0x2, 0x2, 0x2, 0xc5, 0x698, + 0x3, 0x2, 0x2, 0x2, 0xc7, 0x6a0, 0x3, 0x2, 0x2, 0x2, 0xc9, 0x6a8, + 0x3, 0x2, 0x2, 0x2, 0xcb, 0x6b0, 0x3, 0x2, 0x2, 0x2, 0xcd, 0x6b8, + 0x3, 0x2, 0x2, 0x2, 0xcf, 0x6c0, 0x3, 0x2, 0x2, 0x2, 0xd1, 0x6c8, + 0x3, 0x2, 0x2, 0x2, 0xd3, 0x6d0, 0x3, 0x2, 0x2, 0x2, 0xd5, 0x6d8, + 0x3, 0x2, 0x2, 0x2, 0xd7, 0x6e0, 0x3, 0x2, 0x2, 0x2, 0xd9, 0x6e8, + 0x3, 0x2, 0x2, 0x2, 0xdb, 0x6f0, 0x3, 0x2, 0x2, 0x2, 0xdd, 0x6f8, + 0x3, 0x2, 0x2, 0x2, 0xdf, 0x700, 0x3, 0x2, 0x2, 0x2, 0xe1, 0x708, + 0x3, 0x2, 0x2, 0x2, 0xe3, 0x710, 0x3, 0x2, 0x2, 0x2, 0xe5, 0x713, + 0x3, 0x2, 0x2, 0x2, 0xe7, 0x716, 0x3, 0x2, 0x2, 0x2, 0xe9, 0x71d, + 0x3, 0x2, 0x2, 0x2, 0xeb, 0x735, 0x3, 0x2, 0x2, 0x2, 0xed, 0x737, + 0x3, 0x2, 0x2, 0x2, 0xef, 0x742, 0x3, 0x2, 0x2, 0x2, 0xf1, 0x746, + 0x3, 0x2, 0x2, 0x2, 0xf3, 0x74e, 0x3, 0x2, 0x2, 0x2, 0xf5, 0x756, + 0x3, 0x2, 0x2, 0x2, 0xf7, 0x75e, 0x3, 0x2, 0x2, 0x2, 0xf9, 0x763, + 0x3, 0x2, 0x2, 0x2, 0xfb, 0x768, 0x3, 0x2, 0x2, 0x2, 0xfd, 0x76d, + 0x3, 0x2, 0x2, 0x2, 0xff, 0x772, 0x3, 0x2, 0x2, 0x2, 0x101, 0x779, + 0x3, 0x2, 0x2, 0x2, 0x103, 0x780, 0x3, 0x2, 0x2, 0x2, 0x105, 0x787, + 0x3, 0x2, 0x2, 0x2, 0x107, 0x78e, 0x3, 0x2, 0x2, 0x2, 0x109, 0x795, + 0x3, 0x2, 0x2, 0x2, 0x10b, 0x79c, 0x3, 0x2, 0x2, 0x2, 0x10d, 0x7a3, + 0x3, 0x2, 0x2, 0x2, 0x10f, 0x7aa, 0x3, 0x2, 0x2, 0x2, 0x111, 0x7b1, + 0x3, 0x2, 0x2, 0x2, 0x113, 0x7b8, 0x3, 0x2, 0x2, 0x2, 0x115, 0x7bf, + 0x3, 0x2, 0x2, 0x2, 0x117, 0x7c6, 0x3, 0x2, 0x2, 0x2, 0x119, 0x7cd, + 0x3, 0x2, 0x2, 0x2, 0x11b, 0x7d4, 0x3, 0x2, 0x2, 0x2, 0x11d, 0x7db, + 0x3, 0x2, 0x2, 0x2, 0x11f, 0x7e2, 0x3, 0x2, 0x2, 0x2, 0x121, 0x7ec, + 0x3, 0x2, 0x2, 0x2, 0x123, 0x7f1, 0x3, 0x2, 0x2, 0x2, 0x125, 0x7f9, + 0x3, 0x2, 0x2, 0x2, 0x127, 0x800, 0x3, 0x2, 0x2, 0x2, 0x129, 0x80b, + 0x3, 0x2, 0x2, 0x2, 0x12b, 0x810, 0x3, 0x2, 0x2, 0x2, 0x12d, 0x817, + 0x3, 0x2, 0x2, 0x2, 0x12f, 0x827, 0x3, 0x2, 0x2, 0x2, 0x131, 0x835, + 0x3, 0x2, 0x2, 0x2, 0x133, 0x83c, 0x3, 0x2, 0x2, 0x2, 0x135, 0x840, + 0x3, 0x2, 0x2, 0x2, 0x137, 0x84c, 0x3, 0x2, 0x2, 0x2, 0x139, 0x855, + 0x3, 0x2, 0x2, 0x2, 0x13b, 0x85d, 0x3, 0x2, 0x2, 0x2, 0x13d, 0x868, + 0x3, 0x2, 0x2, 0x2, 0x13f, 0x86e, 0x3, 0x2, 0x2, 0x2, 0x141, 0x87a, + 0x3, 0x2, 0x2, 0x2, 0x143, 0x882, 0x3, 0x2, 0x2, 0x2, 0x145, 0x89a, + 0x3, 0x2, 0x2, 0x2, 0x147, 0x8bd, 0x3, 0x2, 0x2, 0x2, 0x149, 0x8df, + 0x3, 0x2, 0x2, 0x2, 0x14b, 0x8fa, 0x3, 0x2, 0x2, 0x2, 0x14d, 0x91a, + 0x3, 0x2, 0x2, 0x2, 0x14f, 0x935, 0x3, 0x2, 0x2, 0x2, 0x151, 0x955, + 0x3, 0x2, 0x2, 0x2, 0x153, 0x970, 0x3, 0x2, 0x2, 0x2, 0x155, 0x978, + 0x3, 0x2, 0x2, 0x2, 0x157, 0x998, 0x3, 0x2, 0x2, 0x2, 0x159, 0x9a1, + 0x3, 0x2, 0x2, 0x2, 0x15b, 0x9a8, 0x3, 0x2, 0x2, 0x2, 0x15d, 0x9b2, + 0x3, 0x2, 0x2, 0x2, 0x15f, 0x9bb, 0x3, 0x2, 0x2, 0x2, 0x161, 0x9cf, + 0x3, 0x2, 0x2, 0x2, 0x163, 0x9e2, 0x3, 0x2, 0x2, 0x2, 0x165, 0x9ee, + 0x3, 0x2, 0x2, 0x2, 0x167, 0x9ff, 0x3, 0x2, 0x2, 0x2, 0x169, 0xa0b, + 0x3, 0x2, 0x2, 0x2, 0x16b, 0xa1c, 0x3, 0x2, 0x2, 0x2, 0x16d, 0xa28, + 0x3, 0x2, 0x2, 0x2, 0x16f, 0xa2f, 0x3, 0x2, 0x2, 0x2, 0x171, 0xa37, + 0x3, 0x2, 0x2, 0x2, 0x173, 0xa3f, 0x3, 0x2, 0x2, 0x2, 0x175, 0xa56, + 0x3, 0x2, 0x2, 0x2, 0x177, 0xa63, 0x3, 0x2, 0x2, 0x2, 0x179, 0xa71, + 0x3, 0x2, 0x2, 0x2, 0x17b, 0xa78, 0x3, 0x2, 0x2, 0x2, 0x17d, 0xa7e, + 0x3, 0x2, 0x2, 0x2, 0x17f, 0xa85, 0x3, 0x2, 0x2, 0x2, 0x181, 0xa8c, + 0x3, 0x2, 0x2, 0x2, 0x183, 0xa9d, 0x3, 0x2, 0x2, 0x2, 0x185, 0xaaa, + 0x3, 0x2, 0x2, 0x2, 0x187, 0xab9, 0x3, 0x2, 0x2, 0x2, 0x189, 0xac0, + 0x3, 0x2, 0x2, 0x2, 0x18b, 0xac8, 0x3, 0x2, 0x2, 0x2, 0x18d, 0xad2, + 0x3, 0x2, 0x2, 0x2, 0x18f, 0xae1, 0x3, 0x2, 0x2, 0x2, 0x191, 0xaeb, + 0x3, 0x2, 0x2, 0x2, 0x193, 0xafa, 0x3, 0x2, 0x2, 0x2, 0x195, 0xb06, + 0x3, 0x2, 0x2, 0x2, 0x197, 0xb17, 0x3, 0x2, 0x2, 0x2, 0x199, 0xb21, + 0x3, 0x2, 0x2, 0x2, 0x19b, 0xb2d, 0x3, 0x2, 0x2, 0x2, 0x19d, 0xb3e, + 0x3, 0x2, 0x2, 0x2, 0x19f, 0xb47, 0x3, 0x2, 0x2, 0x2, 0x1a1, 0xb53, + 0x3, 0x2, 0x2, 0x2, 0x1a3, 0xb62, 0x3, 0x2, 0x2, 0x2, 0x1a5, 0xb6a, + 0x3, 0x2, 0x2, 0x2, 0x1a7, 0xb6f, 0x3, 0x2, 0x2, 0x2, 0x1a9, 0xb75, + 0x3, 0x2, 0x2, 0x2, 0x1ab, 0xb7b, 0x3, 0x2, 0x2, 0x2, 0x1ad, 0xb81, + 0x3, 0x2, 0x2, 0x2, 0x1af, 0xb87, 0x3, 0x2, 0x2, 0x2, 0x1b1, 0xb8f, + 0x3, 0x2, 0x2, 0x2, 0x1b3, 0xb97, 0x3, 0x2, 0x2, 0x2, 0x1b5, 0xb9f, + 0x3, 0x2, 0x2, 0x2, 0x1b7, 0xba7, 0x3, 0x2, 0x2, 0x2, 0x1b9, 0xbaf, + 0x3, 0x2, 0x2, 0x2, 0x1bb, 0xbb7, 0x3, 0x2, 0x2, 0x2, 0x1bd, 0xbbf, + 0x3, 0x2, 0x2, 0x2, 0x1bf, 0xbc7, 0x3, 0x2, 0x2, 0x2, 0x1c1, 0xbcf, + 0x3, 0x2, 0x2, 0x2, 0x1c3, 0xbd7, 0x3, 0x2, 0x2, 0x2, 0x1c5, 0xbdf, + 0x3, 0x2, 0x2, 0x2, 0x1c7, 0xbe7, 0x3, 0x2, 0x2, 0x2, 0x1c9, 0xbef, + 0x3, 0x2, 0x2, 0x2, 0x1cb, 0xbf7, 0x3, 0x2, 0x2, 0x2, 0x1cd, 0xbff, + 0x3, 0x2, 0x2, 0x2, 0x1cf, 0xc07, 0x3, 0x2, 0x2, 0x2, 0x1d1, 0xc10, + 0x3, 0x2, 0x2, 0x2, 0x1d3, 0xc19, 0x3, 0x2, 0x2, 0x2, 0x1d5, 0xc22, + 0x3, 0x2, 0x2, 0x2, 0x1d7, 0xc28, 0x3, 0x2, 0x2, 0x2, 0x1d9, 0xc31, + 0x3, 0x2, 0x2, 0x2, 0x1db, 0xc37, 0x3, 0x2, 0x2, 0x2, 0x1dd, 0xc3e, + 0x3, 0x2, 0x2, 0x2, 0x1df, 0xc45, 0x3, 0x2, 0x2, 0x2, 0x1e1, 0xc4c, + 0x3, 0x2, 0x2, 0x2, 0x1e3, 0xc53, 0x3, 0x2, 0x2, 0x2, 0x1e5, 0xc5c, + 0x3, 0x2, 0x2, 0x2, 0x1e7, 0xc65, 0x3, 0x2, 0x2, 0x2, 0x1e9, 0xc6e, + 0x3, 0x2, 0x2, 0x2, 0x1eb, 0xc77, 0x3, 0x2, 0x2, 0x2, 0x1ed, 0xc80, + 0x3, 0x2, 0x2, 0x2, 0x1ef, 0xc89, 0x3, 0x2, 0x2, 0x2, 0x1f1, 0xc92, + 0x3, 0x2, 0x2, 0x2, 0x1f3, 0xc9b, 0x3, 0x2, 0x2, 0x2, 0x1f5, 0xca4, + 0x3, 0x2, 0x2, 0x2, 0x1f7, 0xcad, 0x3, 0x2, 0x2, 0x2, 0x1f9, 0xcb6, + 0x3, 0x2, 0x2, 0x2, 0x1fb, 0xcbf, 0x3, 0x2, 0x2, 0x2, 0x1fd, 0xcc8, + 0x3, 0x2, 0x2, 0x2, 0x1ff, 0xcd1, 0x3, 0x2, 0x2, 0x2, 0x201, 0xcda, + 0x3, 0x2, 0x2, 0x2, 0x203, 0xce3, 0x3, 0x2, 0x2, 0x2, 0x205, 0xcea, + 0x3, 0x2, 0x2, 0x2, 0x207, 0xcf3, 0x3, 0x2, 0x2, 0x2, 0x209, 0xcf8, + 0x3, 0x2, 0x2, 0x2, 0x20b, 0xcfe, 0x3, 0x2, 0x2, 0x2, 0x20d, 0xd10, + 0x3, 0x2, 0x2, 0x2, 0x20f, 0xd23, 0x3, 0x2, 0x2, 0x2, 0x211, 0xd37, + 0x3, 0x2, 0x2, 0x2, 0x213, 0xd55, 0x3, 0x2, 0x2, 0x2, 0x215, 0xd6c, + 0x3, 0x2, 0x2, 0x2, 0x217, 0xd85, 0x3, 0x2, 0x2, 0x2, 0x219, 0xd9f, + 0x3, 0x2, 0x2, 0x2, 0x21b, 0xdb0, 0x3, 0x2, 0x2, 0x2, 0x21d, 0xdcc, + 0x3, 0x2, 0x2, 0x2, 0x21f, 0xdd5, 0x3, 0x2, 0x2, 0x2, 0x221, 0xdde, + 0x3, 0x2, 0x2, 0x2, 0x223, 0xde7, 0x3, 0x2, 0x2, 0x2, 0x225, 0xdf3, + 0x3, 0x2, 0x2, 0x2, 0x227, 0xdfd, 0x3, 0x2, 0x2, 0x2, 0x229, 0xe07, + 0x3, 0x2, 0x2, 0x2, 0x22b, 0xe11, 0x3, 0x2, 0x2, 0x2, 0x22d, 0xe1f, + 0x3, 0x2, 0x2, 0x2, 0x22f, 0xe26, 0x3, 0x2, 0x2, 0x2, 0x231, 0xe2d, + 0x3, 0x2, 0x2, 0x2, 0x233, 0xe38, 0x3, 0x2, 0x2, 0x2, 0x235, 0xe47, + 0x3, 0x2, 0x2, 0x2, 0x237, 0xe55, 0x3, 0x2, 0x2, 0x2, 0x239, 0xe5b, + 0x3, 0x2, 0x2, 0x2, 0x23b, 0xe62, 0x3, 0x2, 0x2, 0x2, 0x23d, 0xe69, + 0x3, 0x2, 0x2, 0x2, 0x23f, 0xe74, 0x3, 0x2, 0x2, 0x2, 0x241, 0xe7c, + 0x3, 0x2, 0x2, 0x2, 0x243, 0xe84, 0x3, 0x2, 0x2, 0x2, 0x245, 0xe89, + 0x3, 0x2, 0x2, 0x2, 0x247, 0xe90, 0x3, 0x2, 0x2, 0x2, 0x249, 0xe96, + 0x3, 0x2, 0x2, 0x2, 0x24b, 0xe9d, 0x3, 0x2, 0x2, 0x2, 0x24d, 0xea8, + 0x3, 0x2, 0x2, 0x2, 0x24f, 0xeae, 0x3, 0x2, 0x2, 0x2, 0x251, 0xeb3, + 0x3, 0x2, 0x2, 0x2, 0x253, 0xeb9, 0x3, 0x2, 0x2, 0x2, 0x255, 0xec3, + 0x3, 0x2, 0x2, 0x2, 0x257, 0xecb, 0x3, 0x2, 0x2, 0x2, 0x259, 0xed4, + 0x3, 0x2, 0x2, 0x2, 0x25b, 0xee1, 0x3, 0x2, 0x2, 0x2, 0x25d, 0xee8, + 0x3, 0x2, 0x2, 0x2, 0x25f, 0xef4, 0x3, 0x2, 0x2, 0x2, 0x261, 0xf05, + 0x3, 0x2, 0x2, 0x2, 0x263, 0xf11, 0x3, 0x2, 0x2, 0x2, 0x265, 0xf13, + 0x3, 0x2, 0x2, 0x2, 0x267, 0xf15, 0x3, 0x2, 0x2, 0x2, 0x269, 0xf17, + 0x3, 0x2, 0x2, 0x2, 0x26b, 0xf19, 0x3, 0x2, 0x2, 0x2, 0x26d, 0xf1b, + 0x3, 0x2, 0x2, 0x2, 0x26f, 0xf1d, 0x3, 0x2, 0x2, 0x2, 0x271, 0xf20, + 0x3, 0x2, 0x2, 0x2, 0x273, 0xf22, 0x3, 0x2, 0x2, 0x2, 0x275, 0xf25, + 0x3, 0x2, 0x2, 0x2, 0x277, 0xf27, 0x3, 0x2, 0x2, 0x2, 0x279, 0xf2a, + 0x3, 0x2, 0x2, 0x2, 0x27b, 0xf2d, 0x3, 0x2, 0x2, 0x2, 0x27d, 0xf30, + 0x3, 0x2, 0x2, 0x2, 0x27f, 0xf32, 0x3, 0x2, 0x2, 0x2, 0x281, 0xf35, + 0x3, 0x2, 0x2, 0x2, 0x283, 0xf37, 0x3, 0x2, 0x2, 0x2, 0x285, 0xf3a, + 0x3, 0x2, 0x2, 0x2, 0x287, 0xf3c, 0x3, 0x2, 0x2, 0x2, 0x289, 0xf3e, + 0x3, 0x2, 0x2, 0x2, 0x28b, 0xf40, 0x3, 0x2, 0x2, 0x2, 0x28d, 0xf42, + 0x3, 0x2, 0x2, 0x2, 0x28f, 0xf44, 0x3, 0x2, 0x2, 0x2, 0x291, 0xf47, + 0x3, 0x2, 0x2, 0x2, 0x293, 0xf4a, 0x3, 0x2, 0x2, 0x2, 0x295, 0xf4c, + 0x3, 0x2, 0x2, 0x2, 0x297, 0xf4e, 0x3, 0x2, 0x2, 0x2, 0x299, 0xf50, + 0x3, 0x2, 0x2, 0x2, 0x29b, 0xf52, 0x3, 0x2, 0x2, 0x2, 0x29d, 0xf54, + 0x3, 0x2, 0x2, 0x2, 0x29f, 0xf57, 0x3, 0x2, 0x2, 0x2, 0x2a1, 0xf59, + 0x3, 0x2, 0x2, 0x2, 0x2a3, 0xf5b, 0x3, 0x2, 0x2, 0x2, 0x2a5, 0xf5d, + 0x3, 0x2, 0x2, 0x2, 0x2a7, 0xf60, 0x3, 0x2, 0x2, 0x2, 0x2a9, 0xf63, + 0x3, 0x2, 0x2, 0x2, 0x2ab, 0xf66, 0x3, 0x2, 0x2, 0x2, 0x2ad, 0xf69, + 0x3, 0x2, 0x2, 0x2, 0x2af, 0xf6c, 0x3, 0x2, 0x2, 0x2, 0x2b1, 0xf70, + 0x3, 0x2, 0x2, 0x2, 0x2b3, 0xf74, 0x3, 0x2, 0x2, 0x2, 0x2b5, 0xf77, + 0x3, 0x2, 0x2, 0x2, 0x2b7, 0xf7a, 0x3, 0x2, 0x2, 0x2, 0x2b9, 0xf7d, + 0x3, 0x2, 0x2, 0x2, 0x2bb, 0xf80, 0x3, 0x2, 0x2, 0x2, 0x2bd, 0xf83, + 0x3, 0x2, 0x2, 0x2, 0x2bf, 0xf85, 0x3, 0x2, 0x2, 0x2, 0x2c1, 0xf8a, + 0x3, 0x2, 0x2, 0x2, 0x2c3, 0xf90, 0x3, 0x2, 0x2, 0x2, 0x2c5, 0xf9f, + 0x3, 0x2, 0x2, 0x2, 0x2c7, 0xfa9, 0x3, 0x2, 0x2, 0x2, 0x2c9, 0xfb1, + 0x3, 0x2, 0x2, 0x2, 0x2cb, 0xfbd, 0x3, 0x2, 0x2, 0x2, 0x2cd, 0xfc4, + 0x3, 0x2, 0x2, 0x2, 0x2cf, 0xfd0, 0x3, 0x2, 0x2, 0x2, 0x2d1, 0xfe6, + 0x3, 0x2, 0x2, 0x2, 0x2d3, 0x1002, 0x3, 0x2, 0x2, 0x2, 0x2d5, 0x1016, + 0x3, 0x2, 0x2, 0x2, 0x2d7, 0x102c, 0x3, 0x2, 0x2, 0x2, 0x2d9, 0x1041, + 0x3, 0x2, 0x2, 0x2, 0x2db, 0x1060, 0x3, 0x2, 0x2, 0x2, 0x2dd, 0x107f, + 0x3, 0x2, 0x2, 0x2, 0x2df, 0x116a, 0x3, 0x2, 0x2, 0x2, 0x2e1, 0x1198, + 0x3, 0x2, 0x2, 0x2, 0x2e3, 0x119a, 0x3, 0x2, 0x2, 0x2, 0x2e5, 0x11a2, + 0x3, 0x2, 0x2, 0x2, 0x2e7, 0x11a4, 0x3, 0x2, 0x2, 0x2, 0x2e9, 0x11a7, + 0x3, 0x2, 0x2, 0x2, 0x2eb, 0x11af, 0x3, 0x2, 0x2, 0x2, 0x2ed, 0x11b6, + 0x3, 0x2, 0x2, 0x2, 0x2ef, 0x11c0, 0x3, 0x2, 0x2, 0x2, 0x2f1, 0x11cc, + 0x3, 0x2, 0x2, 0x2, 0x2f3, 0x11ce, 0x3, 0x2, 0x2, 0x2, 0x2f5, 0x11d1, + 0x3, 0x2, 0x2, 0x2, 0x2f7, 0x11d6, 0x3, 0x2, 0x2, 0x2, 0x2f9, 0x11e9, + 0x3, 0x2, 0x2, 0x2, 0x2fb, 0x11f3, 0x3, 0x2, 0x2, 0x2, 0x2fd, 0x11f5, + 0x3, 0x2, 0x2, 0x2, 0x2ff, 0x1203, 0x3, 0x2, 0x2, 0x2, 0x301, 0x1205, + 0x3, 0x2, 0x2, 0x2, 0x303, 0x1207, 0x3, 0x2, 0x2, 0x2, 0x305, 0x120a, + 0x3, 0x2, 0x2, 0x2, 0x307, 0x1211, 0x3, 0x2, 0x2, 0x2, 0x309, 0x1217, + 0x3, 0x2, 0x2, 0x2, 0x30b, 0x1219, 0x3, 0x2, 0x2, 0x2, 0x30d, 0x122d, + 0x3, 0x2, 0x2, 0x2, 0x30f, 0x1243, 0x3, 0x2, 0x2, 0x2, 0x311, 0x124e, + 0x3, 0x2, 0x2, 0x2, 0x313, 0x1252, 0x3, 0x2, 0x2, 0x2, 0x315, 0x1260, + 0x3, 0x2, 0x2, 0x2, 0x317, 0x318, 0x7, 0x43, 0x2, 0x2, 0x318, 0x319, + 0x7, 0x72, 0x2, 0x2, 0x319, 0x31a, 0x7, 0x72, 0x2, 0x2, 0x31a, 0x31b, + 0x7, 0x67, 0x2, 0x2, 0x31b, 0x31c, 0x7, 0x70, 0x2, 0x2, 0x31c, 0x31d, + 0x7, 0x66, 0x2, 0x2, 0x31d, 0x31e, 0x7, 0x55, 0x2, 0x2, 0x31e, 0x31f, + 0x7, 0x76, 0x2, 0x2, 0x31f, 0x320, 0x7, 0x74, 0x2, 0x2, 0x320, 0x321, + 0x7, 0x77, 0x2, 0x2, 0x321, 0x322, 0x7, 0x65, 0x2, 0x2, 0x322, 0x323, + 0x7, 0x76, 0x2, 0x2, 0x323, 0x324, 0x7, 0x77, 0x2, 0x2, 0x324, 0x325, + 0x7, 0x74, 0x2, 0x2, 0x325, 0x326, 0x7, 0x67, 0x2, 0x2, 0x326, 0x327, + 0x7, 0x66, 0x2, 0x2, 0x327, 0x328, 0x7, 0x44, 0x2, 0x2, 0x328, 0x329, + 0x7, 0x77, 0x2, 0x2, 0x329, 0x32a, 0x7, 0x68, 0x2, 0x2, 0x32a, 0x32b, + 0x7, 0x68, 0x2, 0x2, 0x32b, 0x32c, 0x7, 0x67, 0x2, 0x2, 0x32c, 0x32d, + 0x7, 0x74, 0x2, 0x2, 0x32d, 0x4, 0x3, 0x2, 0x2, 0x2, 0x32e, 0x32f, + 0x7, 0x64, 0x2, 0x2, 0x32f, 0x330, 0x7, 0x71, 0x2, 0x2, 0x330, 0x331, + 0x7, 0x71, 0x2, 0x2, 0x331, 0x332, 0x7, 0x6e, 0x2, 0x2, 0x332, 0x6, + 0x3, 0x2, 0x2, 0x2, 0x333, 0x334, 0x7, 0x64, 0x2, 0x2, 0x334, 0x335, + 0x7, 0x71, 0x2, 0x2, 0x335, 0x336, 0x7, 0x71, 0x2, 0x2, 0x336, 0x337, + 0x7, 0x6e, 0x2, 0x2, 0x337, 0x338, 0x7, 0x33, 0x2, 0x2, 0x338, 0x8, + 0x3, 0x2, 0x2, 0x2, 0x339, 0x33a, 0x7, 0x64, 0x2, 0x2, 0x33a, 0x33b, + 0x7, 0x71, 0x2, 0x2, 0x33b, 0x33c, 0x7, 0x71, 0x2, 0x2, 0x33c, 0x33d, + 0x7, 0x6e, 0x2, 0x2, 0x33d, 0x33e, 0x7, 0x34, 0x2, 0x2, 0x33e, 0xa, + 0x3, 0x2, 0x2, 0x2, 0x33f, 0x340, 0x7, 0x64, 0x2, 0x2, 0x340, 0x341, + 0x7, 0x71, 0x2, 0x2, 0x341, 0x342, 0x7, 0x71, 0x2, 0x2, 0x342, 0x343, + 0x7, 0x6e, 0x2, 0x2, 0x343, 0x344, 0x7, 0x35, 0x2, 0x2, 0x344, 0xc, + 0x3, 0x2, 0x2, 0x2, 0x345, 0x346, 0x7, 0x64, 0x2, 0x2, 0x346, 0x347, + 0x7, 0x71, 0x2, 0x2, 0x347, 0x348, 0x7, 0x71, 0x2, 0x2, 0x348, 0x349, + 0x7, 0x6e, 0x2, 0x2, 0x349, 0x34a, 0x7, 0x36, 0x2, 0x2, 0x34a, 0xe, 0x3, 0x2, 0x2, 0x2, 0x34b, 0x34c, 0x7, 0x64, 0x2, 0x2, 0x34c, 0x34d, 0x7, 0x71, 0x2, 0x2, 0x34d, 0x34e, 0x7, 0x71, 0x2, 0x2, 0x34e, 0x34f, 0x7, 0x6e, 0x2, 0x2, 0x34f, 0x350, 0x7, 0x33, 0x2, 0x2, 0x350, 0x351, - 0x7, 0x7a, 0x2, 0x2, 0x351, 0x352, 0x7, 0x35, 0x2, 0x2, 0x352, 0x14, + 0x7, 0x7a, 0x2, 0x2, 0x351, 0x352, 0x7, 0x33, 0x2, 0x2, 0x352, 0x10, 0x3, 0x2, 0x2, 0x2, 0x353, 0x354, 0x7, 0x64, 0x2, 0x2, 0x354, 0x355, 0x7, 0x71, 0x2, 0x2, 0x355, 0x356, 0x7, 0x71, 0x2, 0x2, 0x356, 0x357, 0x7, 0x6e, 0x2, 0x2, 0x357, 0x358, 0x7, 0x33, 0x2, 0x2, 0x358, 0x359, - 0x7, 0x7a, 0x2, 0x2, 0x359, 0x35a, 0x7, 0x36, 0x2, 0x2, 0x35a, 0x16, + 0x7, 0x7a, 0x2, 0x2, 0x359, 0x35a, 0x7, 0x34, 0x2, 0x2, 0x35a, 0x12, 0x3, 0x2, 0x2, 0x2, 0x35b, 0x35c, 0x7, 0x64, 0x2, 0x2, 0x35c, 0x35d, 0x7, 0x71, 0x2, 0x2, 0x35d, 0x35e, 0x7, 0x71, 0x2, 0x2, 0x35e, 0x35f, - 0x7, 0x6e, 0x2, 0x2, 0x35f, 0x360, 0x7, 0x34, 0x2, 0x2, 0x360, 0x361, - 0x7, 0x7a, 0x2, 0x2, 0x361, 0x362, 0x7, 0x33, 0x2, 0x2, 0x362, 0x18, + 0x7, 0x6e, 0x2, 0x2, 0x35f, 0x360, 0x7, 0x33, 0x2, 0x2, 0x360, 0x361, + 0x7, 0x7a, 0x2, 0x2, 0x361, 0x362, 0x7, 0x35, 0x2, 0x2, 0x362, 0x14, 0x3, 0x2, 0x2, 0x2, 0x363, 0x364, 0x7, 0x64, 0x2, 0x2, 0x364, 0x365, 0x7, 0x71, 0x2, 0x2, 0x365, 0x366, 0x7, 0x71, 0x2, 0x2, 0x366, 0x367, - 0x7, 0x6e, 0x2, 0x2, 0x367, 0x368, 0x7, 0x34, 0x2, 0x2, 0x368, 0x369, - 0x7, 0x7a, 0x2, 0x2, 0x369, 0x36a, 0x7, 0x34, 0x2, 0x2, 0x36a, 0x1a, + 0x7, 0x6e, 0x2, 0x2, 0x367, 0x368, 0x7, 0x33, 0x2, 0x2, 0x368, 0x369, + 0x7, 0x7a, 0x2, 0x2, 0x369, 0x36a, 0x7, 0x36, 0x2, 0x2, 0x36a, 0x16, 0x3, 0x2, 0x2, 0x2, 0x36b, 0x36c, 0x7, 0x64, 0x2, 0x2, 0x36c, 0x36d, 0x7, 0x71, 0x2, 0x2, 0x36d, 0x36e, 0x7, 0x71, 0x2, 0x2, 0x36e, 0x36f, 0x7, 0x6e, 0x2, 0x2, 0x36f, 0x370, 0x7, 0x34, 0x2, 0x2, 0x370, 0x371, - 0x7, 0x7a, 0x2, 0x2, 0x371, 0x372, 0x7, 0x35, 0x2, 0x2, 0x372, 0x1c, + 0x7, 0x7a, 0x2, 0x2, 0x371, 0x372, 0x7, 0x33, 0x2, 0x2, 0x372, 0x18, 0x3, 0x2, 0x2, 0x2, 0x373, 0x374, 0x7, 0x64, 0x2, 0x2, 0x374, 0x375, 0x7, 0x71, 0x2, 0x2, 0x375, 0x376, 0x7, 0x71, 0x2, 0x2, 0x376, 0x377, 0x7, 0x6e, 0x2, 0x2, 0x377, 0x378, 0x7, 0x34, 0x2, 0x2, 0x378, 0x379, - 0x7, 0x7a, 0x2, 0x2, 0x379, 0x37a, 0x7, 0x36, 0x2, 0x2, 0x37a, 0x1e, + 0x7, 0x7a, 0x2, 0x2, 0x379, 0x37a, 0x7, 0x34, 0x2, 0x2, 0x37a, 0x1a, 0x3, 0x2, 0x2, 0x2, 0x37b, 0x37c, 0x7, 0x64, 0x2, 0x2, 0x37c, 0x37d, 0x7, 0x71, 0x2, 0x2, 0x37d, 0x37e, 0x7, 0x71, 0x2, 0x2, 0x37e, 0x37f, - 0x7, 0x6e, 0x2, 0x2, 0x37f, 0x380, 0x7, 0x35, 0x2, 0x2, 0x380, 0x381, - 0x7, 0x7a, 0x2, 0x2, 0x381, 0x382, 0x7, 0x33, 0x2, 0x2, 0x382, 0x20, + 0x7, 0x6e, 0x2, 0x2, 0x37f, 0x380, 0x7, 0x34, 0x2, 0x2, 0x380, 0x381, + 0x7, 0x7a, 0x2, 0x2, 0x381, 0x382, 0x7, 0x35, 0x2, 0x2, 0x382, 0x1c, 0x3, 0x2, 0x2, 0x2, 0x383, 0x384, 0x7, 0x64, 0x2, 0x2, 0x384, 0x385, 0x7, 0x71, 0x2, 0x2, 0x385, 0x386, 0x7, 0x71, 0x2, 0x2, 0x386, 0x387, - 0x7, 0x6e, 0x2, 0x2, 0x387, 0x388, 0x7, 0x35, 0x2, 0x2, 0x388, 0x389, - 0x7, 0x7a, 0x2, 0x2, 0x389, 0x38a, 0x7, 0x34, 0x2, 0x2, 0x38a, 0x22, + 0x7, 0x6e, 0x2, 0x2, 0x387, 0x388, 0x7, 0x34, 0x2, 0x2, 0x388, 0x389, + 0x7, 0x7a, 0x2, 0x2, 0x389, 0x38a, 0x7, 0x36, 0x2, 0x2, 0x38a, 0x1e, 0x3, 0x2, 0x2, 0x2, 0x38b, 0x38c, 0x7, 0x64, 0x2, 0x2, 0x38c, 0x38d, 0x7, 0x71, 0x2, 0x2, 0x38d, 0x38e, 0x7, 0x71, 0x2, 0x2, 0x38e, 0x38f, 0x7, 0x6e, 0x2, 0x2, 0x38f, 0x390, 0x7, 0x35, 0x2, 0x2, 0x390, 0x391, - 0x7, 0x7a, 0x2, 0x2, 0x391, 0x392, 0x7, 0x35, 0x2, 0x2, 0x392, 0x24, + 0x7, 0x7a, 0x2, 0x2, 0x391, 0x392, 0x7, 0x33, 0x2, 0x2, 0x392, 0x20, 0x3, 0x2, 0x2, 0x2, 0x393, 0x394, 0x7, 0x64, 0x2, 0x2, 0x394, 0x395, 0x7, 0x71, 0x2, 0x2, 0x395, 0x396, 0x7, 0x71, 0x2, 0x2, 0x396, 0x397, 0x7, 0x6e, 0x2, 0x2, 0x397, 0x398, 0x7, 0x35, 0x2, 0x2, 0x398, 0x399, - 0x7, 0x7a, 0x2, 0x2, 0x399, 0x39a, 0x7, 0x36, 0x2, 0x2, 0x39a, 0x26, + 0x7, 0x7a, 0x2, 0x2, 0x399, 0x39a, 0x7, 0x34, 0x2, 0x2, 0x39a, 0x22, 0x3, 0x2, 0x2, 0x2, 0x39b, 0x39c, 0x7, 0x64, 0x2, 0x2, 0x39c, 0x39d, 0x7, 0x71, 0x2, 0x2, 0x39d, 0x39e, 0x7, 0x71, 0x2, 0x2, 0x39e, 0x39f, - 0x7, 0x6e, 0x2, 0x2, 0x39f, 0x3a0, 0x7, 0x36, 0x2, 0x2, 0x3a0, 0x3a1, - 0x7, 0x7a, 0x2, 0x2, 0x3a1, 0x3a2, 0x7, 0x33, 0x2, 0x2, 0x3a2, 0x28, + 0x7, 0x6e, 0x2, 0x2, 0x39f, 0x3a0, 0x7, 0x35, 0x2, 0x2, 0x3a0, 0x3a1, + 0x7, 0x7a, 0x2, 0x2, 0x3a1, 0x3a2, 0x7, 0x35, 0x2, 0x2, 0x3a2, 0x24, 0x3, 0x2, 0x2, 0x2, 0x3a3, 0x3a4, 0x7, 0x64, 0x2, 0x2, 0x3a4, 0x3a5, 0x7, 0x71, 0x2, 0x2, 0x3a5, 0x3a6, 0x7, 0x71, 0x2, 0x2, 0x3a6, 0x3a7, - 0x7, 0x6e, 0x2, 0x2, 0x3a7, 0x3a8, 0x7, 0x36, 0x2, 0x2, 0x3a8, 0x3a9, - 0x7, 0x7a, 0x2, 0x2, 0x3a9, 0x3aa, 0x7, 0x34, 0x2, 0x2, 0x3aa, 0x2a, + 0x7, 0x6e, 0x2, 0x2, 0x3a7, 0x3a8, 0x7, 0x35, 0x2, 0x2, 0x3a8, 0x3a9, + 0x7, 0x7a, 0x2, 0x2, 0x3a9, 0x3aa, 0x7, 0x36, 0x2, 0x2, 0x3aa, 0x26, 0x3, 0x2, 0x2, 0x2, 0x3ab, 0x3ac, 0x7, 0x64, 0x2, 0x2, 0x3ac, 0x3ad, 0x7, 0x71, 0x2, 0x2, 0x3ad, 0x3ae, 0x7, 0x71, 0x2, 0x2, 0x3ae, 0x3af, 0x7, 0x6e, 0x2, 0x2, 0x3af, 0x3b0, 0x7, 0x36, 0x2, 0x2, 0x3b0, 0x3b1, - 0x7, 0x7a, 0x2, 0x2, 0x3b1, 0x3b2, 0x7, 0x35, 0x2, 0x2, 0x3b2, 0x2c, + 0x7, 0x7a, 0x2, 0x2, 0x3b1, 0x3b2, 0x7, 0x33, 0x2, 0x2, 0x3b2, 0x28, 0x3, 0x2, 0x2, 0x2, 0x3b3, 0x3b4, 0x7, 0x64, 0x2, 0x2, 0x3b4, 0x3b5, 0x7, 0x71, 0x2, 0x2, 0x3b5, 0x3b6, 0x7, 0x71, 0x2, 0x2, 0x3b6, 0x3b7, 0x7, 0x6e, 0x2, 0x2, 0x3b7, 0x3b8, 0x7, 0x36, 0x2, 0x2, 0x3b8, 0x3b9, - 0x7, 0x7a, 0x2, 0x2, 0x3b9, 0x3ba, 0x7, 0x36, 0x2, 0x2, 0x3ba, 0x2e, - 0x3, 0x2, 0x2, 0x2, 0x3bb, 0x3bc, 0x7, 0x44, 0x2, 0x2, 0x3bc, 0x3bd, - 0x7, 0x77, 0x2, 0x2, 0x3bd, 0x3be, 0x7, 0x68, 0x2, 0x2, 0x3be, 0x3bf, - 0x7, 0x68, 0x2, 0x2, 0x3bf, 0x3c0, 0x7, 0x67, 0x2, 0x2, 0x3c0, 0x3c1, - 0x7, 0x74, 0x2, 0x2, 0x3c1, 0x30, 0x3, 0x2, 0x2, 0x2, 0x3c2, 0x3c3, - 0x7, 0x44, 0x2, 0x2, 0x3c3, 0x3c4, 0x7, 0x77, 0x2, 0x2, 0x3c4, 0x3c5, - 0x7, 0x6b, 0x2, 0x2, 0x3c5, 0x3c6, 0x7, 0x6e, 0x2, 0x2, 0x3c6, 0x3c7, - 0x7, 0x76, 0x2, 0x2, 0x3c7, 0x3c8, 0x7, 0x4b, 0x2, 0x2, 0x3c8, 0x3c9, - 0x7, 0x70, 0x2, 0x2, 0x3c9, 0x3ca, 0x7, 0x56, 0x2, 0x2, 0x3ca, 0x3cb, - 0x7, 0x74, 0x2, 0x2, 0x3cb, 0x3cc, 0x7, 0x6b, 0x2, 0x2, 0x3cc, 0x3cd, - 0x7, 0x63, 0x2, 0x2, 0x3cd, 0x3ce, 0x7, 0x70, 0x2, 0x2, 0x3ce, 0x3cf, - 0x7, 0x69, 0x2, 0x2, 0x3cf, 0x3d0, 0x7, 0x6e, 0x2, 0x2, 0x3d0, 0x3d1, - 0x7, 0x67, 0x2, 0x2, 0x3d1, 0x3d2, 0x7, 0x4b, 0x2, 0x2, 0x3d2, 0x3d3, - 0x7, 0x70, 0x2, 0x2, 0x3d3, 0x3d4, 0x7, 0x76, 0x2, 0x2, 0x3d4, 0x3d5, - 0x7, 0x67, 0x2, 0x2, 0x3d5, 0x3d6, 0x7, 0x74, 0x2, 0x2, 0x3d6, 0x3d7, - 0x7, 0x75, 0x2, 0x2, 0x3d7, 0x3d8, 0x7, 0x67, 0x2, 0x2, 0x3d8, 0x3d9, - 0x7, 0x65, 0x2, 0x2, 0x3d9, 0x3da, 0x7, 0x76, 0x2, 0x2, 0x3da, 0x3db, - 0x7, 0x6b, 0x2, 0x2, 0x3db, 0x3dc, 0x7, 0x71, 0x2, 0x2, 0x3dc, 0x3dd, - 0x7, 0x70, 0x2, 0x2, 0x3dd, 0x3de, 0x7, 0x43, 0x2, 0x2, 0x3de, 0x3df, - 0x7, 0x76, 0x2, 0x2, 0x3df, 0x3e0, 0x7, 0x76, 0x2, 0x2, 0x3e0, 0x3e1, - 0x7, 0x74, 0x2, 0x2, 0x3e1, 0x3e2, 0x7, 0x6b, 0x2, 0x2, 0x3e2, 0x3e3, - 0x7, 0x64, 0x2, 0x2, 0x3e3, 0x3e4, 0x7, 0x77, 0x2, 0x2, 0x3e4, 0x3e5, - 0x7, 0x76, 0x2, 0x2, 0x3e5, 0x3e6, 0x7, 0x67, 0x2, 0x2, 0x3e6, 0x3e7, - 0x7, 0x75, 0x2, 0x2, 0x3e7, 0x32, 0x3, 0x2, 0x2, 0x2, 0x3e8, 0x3e9, - 0x7, 0x44, 0x2, 0x2, 0x3e9, 0x3ea, 0x7, 0x7b, 0x2, 0x2, 0x3ea, 0x3eb, - 0x7, 0x76, 0x2, 0x2, 0x3eb, 0x3ec, 0x7, 0x67, 0x2, 0x2, 0x3ec, 0x3ed, - 0x7, 0x43, 0x2, 0x2, 0x3ed, 0x3ee, 0x7, 0x66, 0x2, 0x2, 0x3ee, 0x3ef, - 0x7, 0x66, 0x2, 0x2, 0x3ef, 0x3f0, 0x7, 0x74, 0x2, 0x2, 0x3f0, 0x3f1, - 0x7, 0x67, 0x2, 0x2, 0x3f1, 0x3f2, 0x7, 0x75, 0x2, 0x2, 0x3f2, 0x3f3, - 0x7, 0x75, 0x2, 0x2, 0x3f3, 0x3f4, 0x7, 0x44, 0x2, 0x2, 0x3f4, 0x3f5, - 0x7, 0x77, 0x2, 0x2, 0x3f5, 0x3f6, 0x7, 0x68, 0x2, 0x2, 0x3f6, 0x3f7, - 0x7, 0x68, 0x2, 0x2, 0x3f7, 0x3f8, 0x7, 0x67, 0x2, 0x2, 0x3f8, 0x3f9, - 0x7, 0x74, 0x2, 0x2, 0x3f9, 0x34, 0x3, 0x2, 0x2, 0x2, 0x3fa, 0x3fb, - 0x7, 0x64, 0x2, 0x2, 0x3fb, 0x3fc, 0x7, 0x74, 0x2, 0x2, 0x3fc, 0x3fd, - 0x7, 0x67, 0x2, 0x2, 0x3fd, 0x3fe, 0x7, 0x63, 0x2, 0x2, 0x3fe, 0x3ff, - 0x7, 0x6d, 0x2, 0x2, 0x3ff, 0x36, 0x3, 0x2, 0x2, 0x2, 0x400, 0x401, - 0x7, 0x65, 0x2, 0x2, 0x401, 0x402, 0x7, 0x63, 0x2, 0x2, 0x402, 0x403, - 0x7, 0x75, 0x2, 0x2, 0x403, 0x404, 0x7, 0x67, 0x2, 0x2, 0x404, 0x38, - 0x3, 0x2, 0x2, 0x2, 0x405, 0x406, 0x7, 0x65, 0x2, 0x2, 0x406, 0x407, - 0x7, 0x64, 0x2, 0x2, 0x407, 0x408, 0x7, 0x77, 0x2, 0x2, 0x408, 0x409, - 0x7, 0x68, 0x2, 0x2, 0x409, 0x40a, 0x7, 0x68, 0x2, 0x2, 0x40a, 0x40b, - 0x7, 0x67, 0x2, 0x2, 0x40b, 0x40c, 0x7, 0x74, 0x2, 0x2, 0x40c, 0x3a, - 0x3, 0x2, 0x2, 0x2, 0x40d, 0x40e, 0x7, 0x65, 0x2, 0x2, 0x40e, 0x40f, - 0x7, 0x71, 0x2, 0x2, 0x40f, 0x410, 0x7, 0x70, 0x2, 0x2, 0x410, 0x411, - 0x7, 0x75, 0x2, 0x2, 0x411, 0x412, 0x7, 0x76, 0x2, 0x2, 0x412, 0x413, - 0x7, 0x63, 0x2, 0x2, 0x413, 0x414, 0x7, 0x70, 0x2, 0x2, 0x414, 0x415, - 0x7, 0x76, 0x2, 0x2, 0x415, 0x416, 0x7, 0x64, 0x2, 0x2, 0x416, 0x417, - 0x7, 0x77, 0x2, 0x2, 0x417, 0x418, 0x7, 0x68, 0x2, 0x2, 0x418, 0x419, - 0x7, 0x68, 0x2, 0x2, 0x419, 0x41a, 0x7, 0x67, 0x2, 0x2, 0x41a, 0x41b, - 0x7, 0x74, 0x2, 0x2, 0x41b, 0x3c, 0x3, 0x2, 0x2, 0x2, 0x41c, 0x41d, - 0x7, 0x45, 0x2, 0x2, 0x41d, 0x41e, 0x7, 0x71, 0x2, 0x2, 0x41e, 0x41f, - 0x7, 0x70, 0x2, 0x2, 0x41f, 0x420, 0x7, 0x75, 0x2, 0x2, 0x420, 0x421, - 0x7, 0x76, 0x2, 0x2, 0x421, 0x422, 0x7, 0x63, 0x2, 0x2, 0x422, 0x423, - 0x7, 0x70, 0x2, 0x2, 0x423, 0x424, 0x7, 0x76, 0x2, 0x2, 0x424, 0x425, - 0x7, 0x44, 0x2, 0x2, 0x425, 0x426, 0x7, 0x77, 0x2, 0x2, 0x426, 0x427, - 0x7, 0x68, 0x2, 0x2, 0x427, 0x428, 0x7, 0x68, 0x2, 0x2, 0x428, 0x429, - 0x7, 0x67, 0x2, 0x2, 0x429, 0x42a, 0x7, 0x74, 0x2, 0x2, 0x42a, 0x3e, - 0x3, 0x2, 0x2, 0x2, 0x42b, 0x42c, 0x7, 0x65, 0x2, 0x2, 0x42c, 0x42d, - 0x7, 0x67, 0x2, 0x2, 0x42d, 0x42e, 0x7, 0x70, 0x2, 0x2, 0x42e, 0x42f, - 0x7, 0x76, 0x2, 0x2, 0x42f, 0x430, 0x7, 0x74, 0x2, 0x2, 0x430, 0x431, - 0x7, 0x71, 0x2, 0x2, 0x431, 0x432, 0x7, 0x6b, 0x2, 0x2, 0x432, 0x433, - 0x7, 0x66, 0x2, 0x2, 0x433, 0x40, 0x3, 0x2, 0x2, 0x2, 0x434, 0x435, - 0x7, 0x65, 0x2, 0x2, 0x435, 0x436, 0x7, 0x6e, 0x2, 0x2, 0x436, 0x437, - 0x7, 0x63, 0x2, 0x2, 0x437, 0x438, 0x7, 0x75, 0x2, 0x2, 0x438, 0x439, - 0x7, 0x75, 0x2, 0x2, 0x439, 0x42, 0x3, 0x2, 0x2, 0x2, 0x43a, 0x43b, - 0x7, 0x65, 0x2, 0x2, 0x43b, 0x43c, 0x7, 0x71, 0x2, 0x2, 0x43c, 0x43d, - 0x7, 0x6e, 0x2, 0x2, 0x43d, 0x43e, 0x7, 0x77, 0x2, 0x2, 0x43e, 0x43f, - 0x7, 0x6f, 0x2, 0x2, 0x43f, 0x440, 0x7, 0x70, 0x2, 0x2, 0x440, 0x441, - 0x7, 0x61, 0x2, 0x2, 0x441, 0x442, 0x7, 0x6f, 0x2, 0x2, 0x442, 0x443, - 0x7, 0x63, 0x2, 0x2, 0x443, 0x444, 0x7, 0x6c, 0x2, 0x2, 0x444, 0x445, - 0x7, 0x71, 0x2, 0x2, 0x445, 0x446, 0x7, 0x74, 0x2, 0x2, 0x446, 0x44, - 0x3, 0x2, 0x2, 0x2, 0x447, 0x448, 0x7, 0x65, 0x2, 0x2, 0x448, 0x449, - 0x7, 0x71, 0x2, 0x2, 0x449, 0x44a, 0x7, 0x70, 0x2, 0x2, 0x44a, 0x44b, - 0x7, 0x75, 0x2, 0x2, 0x44b, 0x44c, 0x7, 0x76, 0x2, 0x2, 0x44c, 0x46, - 0x3, 0x2, 0x2, 0x2, 0x44d, 0x44e, 0x7, 0x45, 0x2, 0x2, 0x44e, 0x44f, - 0x7, 0x71, 0x2, 0x2, 0x44f, 0x450, 0x7, 0x70, 0x2, 0x2, 0x450, 0x451, - 0x7, 0x75, 0x2, 0x2, 0x451, 0x452, 0x7, 0x77, 0x2, 0x2, 0x452, 0x453, - 0x7, 0x6f, 0x2, 0x2, 0x453, 0x454, 0x7, 0x67, 0x2, 0x2, 0x454, 0x455, - 0x7, 0x55, 0x2, 0x2, 0x455, 0x456, 0x7, 0x76, 0x2, 0x2, 0x456, 0x457, - 0x7, 0x74, 0x2, 0x2, 0x457, 0x458, 0x7, 0x77, 0x2, 0x2, 0x458, 0x459, - 0x7, 0x65, 0x2, 0x2, 0x459, 0x45a, 0x7, 0x76, 0x2, 0x2, 0x45a, 0x45b, - 0x7, 0x77, 0x2, 0x2, 0x45b, 0x45c, 0x7, 0x74, 0x2, 0x2, 0x45c, 0x45d, - 0x7, 0x67, 0x2, 0x2, 0x45d, 0x45e, 0x7, 0x66, 0x2, 0x2, 0x45e, 0x45f, - 0x7, 0x44, 0x2, 0x2, 0x45f, 0x460, 0x7, 0x77, 0x2, 0x2, 0x460, 0x461, - 0x7, 0x68, 0x2, 0x2, 0x461, 0x462, 0x7, 0x68, 0x2, 0x2, 0x462, 0x463, - 0x7, 0x67, 0x2, 0x2, 0x463, 0x464, 0x7, 0x74, 0x2, 0x2, 0x464, 0x48, - 0x3, 0x2, 0x2, 0x2, 0x465, 0x466, 0x7, 0x65, 0x2, 0x2, 0x466, 0x467, - 0x7, 0x71, 0x2, 0x2, 0x467, 0x468, 0x7, 0x70, 0x2, 0x2, 0x468, 0x469, - 0x7, 0x76, 0x2, 0x2, 0x469, 0x46a, 0x7, 0x6b, 0x2, 0x2, 0x46a, 0x46b, - 0x7, 0x70, 0x2, 0x2, 0x46b, 0x46c, 0x7, 0x77, 0x2, 0x2, 0x46c, 0x46d, - 0x7, 0x67, 0x2, 0x2, 0x46d, 0x4a, 0x3, 0x2, 0x2, 0x2, 0x46e, 0x46f, - 0x7, 0x66, 0x2, 0x2, 0x46f, 0x470, 0x7, 0x67, 0x2, 0x2, 0x470, 0x471, - 0x7, 0x68, 0x2, 0x2, 0x471, 0x472, 0x7, 0x63, 0x2, 0x2, 0x472, 0x473, - 0x7, 0x77, 0x2, 0x2, 0x473, 0x474, 0x7, 0x6e, 0x2, 0x2, 0x474, 0x475, - 0x7, 0x76, 0x2, 0x2, 0x475, 0x4c, 0x3, 0x2, 0x2, 0x2, 0x476, 0x477, - 0x7, 0x66, 0x2, 0x2, 0x477, 0x478, 0x7, 0x6b, 0x2, 0x2, 0x478, 0x479, - 0x7, 0x75, 0x2, 0x2, 0x479, 0x47a, 0x7, 0x65, 0x2, 0x2, 0x47a, 0x47b, - 0x7, 0x63, 0x2, 0x2, 0x47b, 0x47c, 0x7, 0x74, 0x2, 0x2, 0x47c, 0x47d, - 0x7, 0x66, 0x2, 0x2, 0x47d, 0x4e, 0x3, 0x2, 0x2, 0x2, 0x47e, 0x47f, - 0x7, 0x66, 0x2, 0x2, 0x47f, 0x480, 0x7, 0x71, 0x2, 0x2, 0x480, 0x50, - 0x3, 0x2, 0x2, 0x2, 0x481, 0x482, 0x7, 0x66, 0x2, 0x2, 0x482, 0x483, - 0x7, 0x71, 0x2, 0x2, 0x483, 0x484, 0x7, 0x77, 0x2, 0x2, 0x484, 0x485, - 0x7, 0x64, 0x2, 0x2, 0x485, 0x486, 0x7, 0x6e, 0x2, 0x2, 0x486, 0x487, - 0x7, 0x67, 0x2, 0x2, 0x487, 0x52, 0x3, 0x2, 0x2, 0x2, 0x488, 0x489, - 0x7, 0x66, 0x2, 0x2, 0x489, 0x48a, 0x7, 0x71, 0x2, 0x2, 0x48a, 0x48b, - 0x7, 0x77, 0x2, 0x2, 0x48b, 0x48c, 0x7, 0x64, 0x2, 0x2, 0x48c, 0x48d, - 0x7, 0x6e, 0x2, 0x2, 0x48d, 0x48e, 0x7, 0x67, 0x2, 0x2, 0x48e, 0x48f, - 0x7, 0x33, 0x2, 0x2, 0x48f, 0x54, 0x3, 0x2, 0x2, 0x2, 0x490, 0x491, - 0x7, 0x66, 0x2, 0x2, 0x491, 0x492, 0x7, 0x71, 0x2, 0x2, 0x492, 0x493, - 0x7, 0x77, 0x2, 0x2, 0x493, 0x494, 0x7, 0x64, 0x2, 0x2, 0x494, 0x495, - 0x7, 0x6e, 0x2, 0x2, 0x495, 0x496, 0x7, 0x67, 0x2, 0x2, 0x496, 0x497, - 0x7, 0x34, 0x2, 0x2, 0x497, 0x56, 0x3, 0x2, 0x2, 0x2, 0x498, 0x499, + 0x7, 0x7a, 0x2, 0x2, 0x3b9, 0x3ba, 0x7, 0x34, 0x2, 0x2, 0x3ba, 0x2a, + 0x3, 0x2, 0x2, 0x2, 0x3bb, 0x3bc, 0x7, 0x64, 0x2, 0x2, 0x3bc, 0x3bd, + 0x7, 0x71, 0x2, 0x2, 0x3bd, 0x3be, 0x7, 0x71, 0x2, 0x2, 0x3be, 0x3bf, + 0x7, 0x6e, 0x2, 0x2, 0x3bf, 0x3c0, 0x7, 0x36, 0x2, 0x2, 0x3c0, 0x3c1, + 0x7, 0x7a, 0x2, 0x2, 0x3c1, 0x3c2, 0x7, 0x35, 0x2, 0x2, 0x3c2, 0x2c, + 0x3, 0x2, 0x2, 0x2, 0x3c3, 0x3c4, 0x7, 0x64, 0x2, 0x2, 0x3c4, 0x3c5, + 0x7, 0x71, 0x2, 0x2, 0x3c5, 0x3c6, 0x7, 0x71, 0x2, 0x2, 0x3c6, 0x3c7, + 0x7, 0x6e, 0x2, 0x2, 0x3c7, 0x3c8, 0x7, 0x36, 0x2, 0x2, 0x3c8, 0x3c9, + 0x7, 0x7a, 0x2, 0x2, 0x3c9, 0x3ca, 0x7, 0x36, 0x2, 0x2, 0x3ca, 0x2e, + 0x3, 0x2, 0x2, 0x2, 0x3cb, 0x3cc, 0x7, 0x44, 0x2, 0x2, 0x3cc, 0x3cd, + 0x7, 0x77, 0x2, 0x2, 0x3cd, 0x3ce, 0x7, 0x68, 0x2, 0x2, 0x3ce, 0x3cf, + 0x7, 0x68, 0x2, 0x2, 0x3cf, 0x3d0, 0x7, 0x67, 0x2, 0x2, 0x3d0, 0x3d1, + 0x7, 0x74, 0x2, 0x2, 0x3d1, 0x30, 0x3, 0x2, 0x2, 0x2, 0x3d2, 0x3d3, + 0x7, 0x44, 0x2, 0x2, 0x3d3, 0x3d4, 0x7, 0x77, 0x2, 0x2, 0x3d4, 0x3d5, + 0x7, 0x6b, 0x2, 0x2, 0x3d5, 0x3d6, 0x7, 0x6e, 0x2, 0x2, 0x3d6, 0x3d7, + 0x7, 0x76, 0x2, 0x2, 0x3d7, 0x3d8, 0x7, 0x4b, 0x2, 0x2, 0x3d8, 0x3d9, + 0x7, 0x70, 0x2, 0x2, 0x3d9, 0x3da, 0x7, 0x56, 0x2, 0x2, 0x3da, 0x3db, + 0x7, 0x74, 0x2, 0x2, 0x3db, 0x3dc, 0x7, 0x6b, 0x2, 0x2, 0x3dc, 0x3dd, + 0x7, 0x63, 0x2, 0x2, 0x3dd, 0x3de, 0x7, 0x70, 0x2, 0x2, 0x3de, 0x3df, + 0x7, 0x69, 0x2, 0x2, 0x3df, 0x3e0, 0x7, 0x6e, 0x2, 0x2, 0x3e0, 0x3e1, + 0x7, 0x67, 0x2, 0x2, 0x3e1, 0x3e2, 0x7, 0x4b, 0x2, 0x2, 0x3e2, 0x3e3, + 0x7, 0x70, 0x2, 0x2, 0x3e3, 0x3e4, 0x7, 0x76, 0x2, 0x2, 0x3e4, 0x3e5, + 0x7, 0x67, 0x2, 0x2, 0x3e5, 0x3e6, 0x7, 0x74, 0x2, 0x2, 0x3e6, 0x3e7, + 0x7, 0x75, 0x2, 0x2, 0x3e7, 0x3e8, 0x7, 0x67, 0x2, 0x2, 0x3e8, 0x3e9, + 0x7, 0x65, 0x2, 0x2, 0x3e9, 0x3ea, 0x7, 0x76, 0x2, 0x2, 0x3ea, 0x3eb, + 0x7, 0x6b, 0x2, 0x2, 0x3eb, 0x3ec, 0x7, 0x71, 0x2, 0x2, 0x3ec, 0x3ed, + 0x7, 0x70, 0x2, 0x2, 0x3ed, 0x3ee, 0x7, 0x43, 0x2, 0x2, 0x3ee, 0x3ef, + 0x7, 0x76, 0x2, 0x2, 0x3ef, 0x3f0, 0x7, 0x76, 0x2, 0x2, 0x3f0, 0x3f1, + 0x7, 0x74, 0x2, 0x2, 0x3f1, 0x3f2, 0x7, 0x6b, 0x2, 0x2, 0x3f2, 0x3f3, + 0x7, 0x64, 0x2, 0x2, 0x3f3, 0x3f4, 0x7, 0x77, 0x2, 0x2, 0x3f4, 0x3f5, + 0x7, 0x76, 0x2, 0x2, 0x3f5, 0x3f6, 0x7, 0x67, 0x2, 0x2, 0x3f6, 0x3f7, + 0x7, 0x75, 0x2, 0x2, 0x3f7, 0x32, 0x3, 0x2, 0x2, 0x2, 0x3f8, 0x3f9, + 0x7, 0x44, 0x2, 0x2, 0x3f9, 0x3fa, 0x7, 0x7b, 0x2, 0x2, 0x3fa, 0x3fb, + 0x7, 0x76, 0x2, 0x2, 0x3fb, 0x3fc, 0x7, 0x67, 0x2, 0x2, 0x3fc, 0x3fd, + 0x7, 0x43, 0x2, 0x2, 0x3fd, 0x3fe, 0x7, 0x66, 0x2, 0x2, 0x3fe, 0x3ff, + 0x7, 0x66, 0x2, 0x2, 0x3ff, 0x400, 0x7, 0x74, 0x2, 0x2, 0x400, 0x401, + 0x7, 0x67, 0x2, 0x2, 0x401, 0x402, 0x7, 0x75, 0x2, 0x2, 0x402, 0x403, + 0x7, 0x75, 0x2, 0x2, 0x403, 0x404, 0x7, 0x44, 0x2, 0x2, 0x404, 0x405, + 0x7, 0x77, 0x2, 0x2, 0x405, 0x406, 0x7, 0x68, 0x2, 0x2, 0x406, 0x407, + 0x7, 0x68, 0x2, 0x2, 0x407, 0x408, 0x7, 0x67, 0x2, 0x2, 0x408, 0x409, + 0x7, 0x74, 0x2, 0x2, 0x409, 0x34, 0x3, 0x2, 0x2, 0x2, 0x40a, 0x40b, + 0x7, 0x64, 0x2, 0x2, 0x40b, 0x40c, 0x7, 0x74, 0x2, 0x2, 0x40c, 0x40d, + 0x7, 0x67, 0x2, 0x2, 0x40d, 0x40e, 0x7, 0x63, 0x2, 0x2, 0x40e, 0x40f, + 0x7, 0x6d, 0x2, 0x2, 0x40f, 0x36, 0x3, 0x2, 0x2, 0x2, 0x410, 0x411, + 0x7, 0x65, 0x2, 0x2, 0x411, 0x412, 0x7, 0x63, 0x2, 0x2, 0x412, 0x413, + 0x7, 0x75, 0x2, 0x2, 0x413, 0x414, 0x7, 0x67, 0x2, 0x2, 0x414, 0x38, + 0x3, 0x2, 0x2, 0x2, 0x415, 0x416, 0x7, 0x65, 0x2, 0x2, 0x416, 0x417, + 0x7, 0x64, 0x2, 0x2, 0x417, 0x418, 0x7, 0x77, 0x2, 0x2, 0x418, 0x419, + 0x7, 0x68, 0x2, 0x2, 0x419, 0x41a, 0x7, 0x68, 0x2, 0x2, 0x41a, 0x41b, + 0x7, 0x67, 0x2, 0x2, 0x41b, 0x41c, 0x7, 0x74, 0x2, 0x2, 0x41c, 0x3a, + 0x3, 0x2, 0x2, 0x2, 0x41d, 0x41e, 0x7, 0x65, 0x2, 0x2, 0x41e, 0x41f, + 0x7, 0x67, 0x2, 0x2, 0x41f, 0x420, 0x7, 0x70, 0x2, 0x2, 0x420, 0x421, + 0x7, 0x76, 0x2, 0x2, 0x421, 0x422, 0x7, 0x74, 0x2, 0x2, 0x422, 0x423, + 0x7, 0x71, 0x2, 0x2, 0x423, 0x424, 0x7, 0x6b, 0x2, 0x2, 0x424, 0x425, + 0x7, 0x66, 0x2, 0x2, 0x425, 0x3c, 0x3, 0x2, 0x2, 0x2, 0x426, 0x427, + 0x7, 0x65, 0x2, 0x2, 0x427, 0x428, 0x7, 0x71, 0x2, 0x2, 0x428, 0x429, + 0x7, 0x70, 0x2, 0x2, 0x429, 0x42a, 0x7, 0x75, 0x2, 0x2, 0x42a, 0x42b, + 0x7, 0x76, 0x2, 0x2, 0x42b, 0x42c, 0x7, 0x63, 0x2, 0x2, 0x42c, 0x42d, + 0x7, 0x70, 0x2, 0x2, 0x42d, 0x42e, 0x7, 0x76, 0x2, 0x2, 0x42e, 0x42f, + 0x7, 0x64, 0x2, 0x2, 0x42f, 0x430, 0x7, 0x77, 0x2, 0x2, 0x430, 0x431, + 0x7, 0x68, 0x2, 0x2, 0x431, 0x432, 0x7, 0x68, 0x2, 0x2, 0x432, 0x433, + 0x7, 0x67, 0x2, 0x2, 0x433, 0x434, 0x7, 0x74, 0x2, 0x2, 0x434, 0x3e, + 0x3, 0x2, 0x2, 0x2, 0x435, 0x436, 0x7, 0x45, 0x2, 0x2, 0x436, 0x437, + 0x7, 0x71, 0x2, 0x2, 0x437, 0x438, 0x7, 0x70, 0x2, 0x2, 0x438, 0x439, + 0x7, 0x75, 0x2, 0x2, 0x439, 0x43a, 0x7, 0x76, 0x2, 0x2, 0x43a, 0x43b, + 0x7, 0x63, 0x2, 0x2, 0x43b, 0x43c, 0x7, 0x70, 0x2, 0x2, 0x43c, 0x43d, + 0x7, 0x76, 0x2, 0x2, 0x43d, 0x43e, 0x7, 0x44, 0x2, 0x2, 0x43e, 0x43f, + 0x7, 0x77, 0x2, 0x2, 0x43f, 0x440, 0x7, 0x68, 0x2, 0x2, 0x440, 0x441, + 0x7, 0x68, 0x2, 0x2, 0x441, 0x442, 0x7, 0x67, 0x2, 0x2, 0x442, 0x443, + 0x7, 0x74, 0x2, 0x2, 0x443, 0x40, 0x3, 0x2, 0x2, 0x2, 0x444, 0x445, + 0x7, 0x65, 0x2, 0x2, 0x445, 0x446, 0x7, 0x6e, 0x2, 0x2, 0x446, 0x447, + 0x7, 0x63, 0x2, 0x2, 0x447, 0x448, 0x7, 0x75, 0x2, 0x2, 0x448, 0x449, + 0x7, 0x75, 0x2, 0x2, 0x449, 0x42, 0x3, 0x2, 0x2, 0x2, 0x44a, 0x44b, + 0x7, 0x65, 0x2, 0x2, 0x44b, 0x44c, 0x7, 0x71, 0x2, 0x2, 0x44c, 0x44d, + 0x7, 0x6e, 0x2, 0x2, 0x44d, 0x44e, 0x7, 0x77, 0x2, 0x2, 0x44e, 0x44f, + 0x7, 0x6f, 0x2, 0x2, 0x44f, 0x450, 0x7, 0x70, 0x2, 0x2, 0x450, 0x451, + 0x7, 0x61, 0x2, 0x2, 0x451, 0x452, 0x7, 0x6f, 0x2, 0x2, 0x452, 0x453, + 0x7, 0x63, 0x2, 0x2, 0x453, 0x454, 0x7, 0x6c, 0x2, 0x2, 0x454, 0x455, + 0x7, 0x71, 0x2, 0x2, 0x455, 0x456, 0x7, 0x74, 0x2, 0x2, 0x456, 0x44, + 0x3, 0x2, 0x2, 0x2, 0x457, 0x458, 0x7, 0x65, 0x2, 0x2, 0x458, 0x459, + 0x7, 0x71, 0x2, 0x2, 0x459, 0x45a, 0x7, 0x70, 0x2, 0x2, 0x45a, 0x45b, + 0x7, 0x75, 0x2, 0x2, 0x45b, 0x45c, 0x7, 0x76, 0x2, 0x2, 0x45c, 0x46, + 0x3, 0x2, 0x2, 0x2, 0x45d, 0x45e, 0x7, 0x45, 0x2, 0x2, 0x45e, 0x45f, + 0x7, 0x71, 0x2, 0x2, 0x45f, 0x460, 0x7, 0x70, 0x2, 0x2, 0x460, 0x461, + 0x7, 0x75, 0x2, 0x2, 0x461, 0x462, 0x7, 0x77, 0x2, 0x2, 0x462, 0x463, + 0x7, 0x6f, 0x2, 0x2, 0x463, 0x464, 0x7, 0x67, 0x2, 0x2, 0x464, 0x465, + 0x7, 0x55, 0x2, 0x2, 0x465, 0x466, 0x7, 0x76, 0x2, 0x2, 0x466, 0x467, + 0x7, 0x74, 0x2, 0x2, 0x467, 0x468, 0x7, 0x77, 0x2, 0x2, 0x468, 0x469, + 0x7, 0x65, 0x2, 0x2, 0x469, 0x46a, 0x7, 0x76, 0x2, 0x2, 0x46a, 0x46b, + 0x7, 0x77, 0x2, 0x2, 0x46b, 0x46c, 0x7, 0x74, 0x2, 0x2, 0x46c, 0x46d, + 0x7, 0x67, 0x2, 0x2, 0x46d, 0x46e, 0x7, 0x66, 0x2, 0x2, 0x46e, 0x46f, + 0x7, 0x44, 0x2, 0x2, 0x46f, 0x470, 0x7, 0x77, 0x2, 0x2, 0x470, 0x471, + 0x7, 0x68, 0x2, 0x2, 0x471, 0x472, 0x7, 0x68, 0x2, 0x2, 0x472, 0x473, + 0x7, 0x67, 0x2, 0x2, 0x473, 0x474, 0x7, 0x74, 0x2, 0x2, 0x474, 0x48, + 0x3, 0x2, 0x2, 0x2, 0x475, 0x476, 0x7, 0x65, 0x2, 0x2, 0x476, 0x477, + 0x7, 0x71, 0x2, 0x2, 0x477, 0x478, 0x7, 0x70, 0x2, 0x2, 0x478, 0x479, + 0x7, 0x76, 0x2, 0x2, 0x479, 0x47a, 0x7, 0x6b, 0x2, 0x2, 0x47a, 0x47b, + 0x7, 0x70, 0x2, 0x2, 0x47b, 0x47c, 0x7, 0x77, 0x2, 0x2, 0x47c, 0x47d, + 0x7, 0x67, 0x2, 0x2, 0x47d, 0x4a, 0x3, 0x2, 0x2, 0x2, 0x47e, 0x47f, + 0x7, 0x66, 0x2, 0x2, 0x47f, 0x480, 0x7, 0x67, 0x2, 0x2, 0x480, 0x481, + 0x7, 0x68, 0x2, 0x2, 0x481, 0x482, 0x7, 0x63, 0x2, 0x2, 0x482, 0x483, + 0x7, 0x77, 0x2, 0x2, 0x483, 0x484, 0x7, 0x6e, 0x2, 0x2, 0x484, 0x485, + 0x7, 0x76, 0x2, 0x2, 0x485, 0x4c, 0x3, 0x2, 0x2, 0x2, 0x486, 0x487, + 0x7, 0x66, 0x2, 0x2, 0x487, 0x488, 0x7, 0x6b, 0x2, 0x2, 0x488, 0x489, + 0x7, 0x75, 0x2, 0x2, 0x489, 0x48a, 0x7, 0x65, 0x2, 0x2, 0x48a, 0x48b, + 0x7, 0x63, 0x2, 0x2, 0x48b, 0x48c, 0x7, 0x74, 0x2, 0x2, 0x48c, 0x48d, + 0x7, 0x66, 0x2, 0x2, 0x48d, 0x4e, 0x3, 0x2, 0x2, 0x2, 0x48e, 0x48f, + 0x7, 0x66, 0x2, 0x2, 0x48f, 0x490, 0x7, 0x71, 0x2, 0x2, 0x490, 0x50, + 0x3, 0x2, 0x2, 0x2, 0x491, 0x492, 0x7, 0x66, 0x2, 0x2, 0x492, 0x493, + 0x7, 0x71, 0x2, 0x2, 0x493, 0x494, 0x7, 0x77, 0x2, 0x2, 0x494, 0x495, + 0x7, 0x64, 0x2, 0x2, 0x495, 0x496, 0x7, 0x6e, 0x2, 0x2, 0x496, 0x497, + 0x7, 0x67, 0x2, 0x2, 0x497, 0x52, 0x3, 0x2, 0x2, 0x2, 0x498, 0x499, 0x7, 0x66, 0x2, 0x2, 0x499, 0x49a, 0x7, 0x71, 0x2, 0x2, 0x49a, 0x49b, 0x7, 0x77, 0x2, 0x2, 0x49b, 0x49c, 0x7, 0x64, 0x2, 0x2, 0x49c, 0x49d, 0x7, 0x6e, 0x2, 0x2, 0x49d, 0x49e, 0x7, 0x67, 0x2, 0x2, 0x49e, 0x49f, - 0x7, 0x35, 0x2, 0x2, 0x49f, 0x58, 0x3, 0x2, 0x2, 0x2, 0x4a0, 0x4a1, + 0x7, 0x33, 0x2, 0x2, 0x49f, 0x54, 0x3, 0x2, 0x2, 0x2, 0x4a0, 0x4a1, 0x7, 0x66, 0x2, 0x2, 0x4a1, 0x4a2, 0x7, 0x71, 0x2, 0x2, 0x4a2, 0x4a3, 0x7, 0x77, 0x2, 0x2, 0x4a3, 0x4a4, 0x7, 0x64, 0x2, 0x2, 0x4a4, 0x4a5, 0x7, 0x6e, 0x2, 0x2, 0x4a5, 0x4a6, 0x7, 0x67, 0x2, 0x2, 0x4a6, 0x4a7, - 0x7, 0x36, 0x2, 0x2, 0x4a7, 0x5a, 0x3, 0x2, 0x2, 0x2, 0x4a8, 0x4a9, + 0x7, 0x34, 0x2, 0x2, 0x4a7, 0x56, 0x3, 0x2, 0x2, 0x2, 0x4a8, 0x4a9, 0x7, 0x66, 0x2, 0x2, 0x4a9, 0x4aa, 0x7, 0x71, 0x2, 0x2, 0x4aa, 0x4ab, 0x7, 0x77, 0x2, 0x2, 0x4ab, 0x4ac, 0x7, 0x64, 0x2, 0x2, 0x4ac, 0x4ad, 0x7, 0x6e, 0x2, 0x2, 0x4ad, 0x4ae, 0x7, 0x67, 0x2, 0x2, 0x4ae, 0x4af, - 0x7, 0x33, 0x2, 0x2, 0x4af, 0x4b0, 0x7, 0x7a, 0x2, 0x2, 0x4b0, 0x4b1, - 0x7, 0x33, 0x2, 0x2, 0x4b1, 0x5c, 0x3, 0x2, 0x2, 0x2, 0x4b2, 0x4b3, - 0x7, 0x66, 0x2, 0x2, 0x4b3, 0x4b4, 0x7, 0x71, 0x2, 0x2, 0x4b4, 0x4b5, - 0x7, 0x77, 0x2, 0x2, 0x4b5, 0x4b6, 0x7, 0x64, 0x2, 0x2, 0x4b6, 0x4b7, - 0x7, 0x6e, 0x2, 0x2, 0x4b7, 0x4b8, 0x7, 0x67, 0x2, 0x2, 0x4b8, 0x4b9, - 0x7, 0x33, 0x2, 0x2, 0x4b9, 0x4ba, 0x7, 0x7a, 0x2, 0x2, 0x4ba, 0x4bb, - 0x7, 0x34, 0x2, 0x2, 0x4bb, 0x5e, 0x3, 0x2, 0x2, 0x2, 0x4bc, 0x4bd, - 0x7, 0x66, 0x2, 0x2, 0x4bd, 0x4be, 0x7, 0x71, 0x2, 0x2, 0x4be, 0x4bf, - 0x7, 0x77, 0x2, 0x2, 0x4bf, 0x4c0, 0x7, 0x64, 0x2, 0x2, 0x4c0, 0x4c1, - 0x7, 0x6e, 0x2, 0x2, 0x4c1, 0x4c2, 0x7, 0x67, 0x2, 0x2, 0x4c2, 0x4c3, - 0x7, 0x33, 0x2, 0x2, 0x4c3, 0x4c4, 0x7, 0x7a, 0x2, 0x2, 0x4c4, 0x4c5, - 0x7, 0x35, 0x2, 0x2, 0x4c5, 0x60, 0x3, 0x2, 0x2, 0x2, 0x4c6, 0x4c7, - 0x7, 0x66, 0x2, 0x2, 0x4c7, 0x4c8, 0x7, 0x71, 0x2, 0x2, 0x4c8, 0x4c9, - 0x7, 0x77, 0x2, 0x2, 0x4c9, 0x4ca, 0x7, 0x64, 0x2, 0x2, 0x4ca, 0x4cb, - 0x7, 0x6e, 0x2, 0x2, 0x4cb, 0x4cc, 0x7, 0x67, 0x2, 0x2, 0x4cc, 0x4cd, - 0x7, 0x33, 0x2, 0x2, 0x4cd, 0x4ce, 0x7, 0x7a, 0x2, 0x2, 0x4ce, 0x4cf, - 0x7, 0x36, 0x2, 0x2, 0x4cf, 0x62, 0x3, 0x2, 0x2, 0x2, 0x4d0, 0x4d1, - 0x7, 0x66, 0x2, 0x2, 0x4d1, 0x4d2, 0x7, 0x71, 0x2, 0x2, 0x4d2, 0x4d3, - 0x7, 0x77, 0x2, 0x2, 0x4d3, 0x4d4, 0x7, 0x64, 0x2, 0x2, 0x4d4, 0x4d5, - 0x7, 0x6e, 0x2, 0x2, 0x4d5, 0x4d6, 0x7, 0x67, 0x2, 0x2, 0x4d6, 0x4d7, - 0x7, 0x34, 0x2, 0x2, 0x4d7, 0x4d8, 0x7, 0x7a, 0x2, 0x2, 0x4d8, 0x4d9, - 0x7, 0x33, 0x2, 0x2, 0x4d9, 0x64, 0x3, 0x2, 0x2, 0x2, 0x4da, 0x4db, - 0x7, 0x66, 0x2, 0x2, 0x4db, 0x4dc, 0x7, 0x71, 0x2, 0x2, 0x4dc, 0x4dd, - 0x7, 0x77, 0x2, 0x2, 0x4dd, 0x4de, 0x7, 0x64, 0x2, 0x2, 0x4de, 0x4df, - 0x7, 0x6e, 0x2, 0x2, 0x4df, 0x4e0, 0x7, 0x67, 0x2, 0x2, 0x4e0, 0x4e1, - 0x7, 0x34, 0x2, 0x2, 0x4e1, 0x4e2, 0x7, 0x7a, 0x2, 0x2, 0x4e2, 0x4e3, - 0x7, 0x34, 0x2, 0x2, 0x4e3, 0x66, 0x3, 0x2, 0x2, 0x2, 0x4e4, 0x4e5, - 0x7, 0x66, 0x2, 0x2, 0x4e5, 0x4e6, 0x7, 0x71, 0x2, 0x2, 0x4e6, 0x4e7, - 0x7, 0x77, 0x2, 0x2, 0x4e7, 0x4e8, 0x7, 0x64, 0x2, 0x2, 0x4e8, 0x4e9, - 0x7, 0x6e, 0x2, 0x2, 0x4e9, 0x4ea, 0x7, 0x67, 0x2, 0x2, 0x4ea, 0x4eb, - 0x7, 0x34, 0x2, 0x2, 0x4eb, 0x4ec, 0x7, 0x7a, 0x2, 0x2, 0x4ec, 0x4ed, - 0x7, 0x35, 0x2, 0x2, 0x4ed, 0x68, 0x3, 0x2, 0x2, 0x2, 0x4ee, 0x4ef, - 0x7, 0x66, 0x2, 0x2, 0x4ef, 0x4f0, 0x7, 0x71, 0x2, 0x2, 0x4f0, 0x4f1, - 0x7, 0x77, 0x2, 0x2, 0x4f1, 0x4f2, 0x7, 0x64, 0x2, 0x2, 0x4f2, 0x4f3, - 0x7, 0x6e, 0x2, 0x2, 0x4f3, 0x4f4, 0x7, 0x67, 0x2, 0x2, 0x4f4, 0x4f5, - 0x7, 0x34, 0x2, 0x2, 0x4f5, 0x4f6, 0x7, 0x7a, 0x2, 0x2, 0x4f6, 0x4f7, - 0x7, 0x36, 0x2, 0x2, 0x4f7, 0x6a, 0x3, 0x2, 0x2, 0x2, 0x4f8, 0x4f9, - 0x7, 0x66, 0x2, 0x2, 0x4f9, 0x4fa, 0x7, 0x71, 0x2, 0x2, 0x4fa, 0x4fb, - 0x7, 0x77, 0x2, 0x2, 0x4fb, 0x4fc, 0x7, 0x64, 0x2, 0x2, 0x4fc, 0x4fd, - 0x7, 0x6e, 0x2, 0x2, 0x4fd, 0x4fe, 0x7, 0x67, 0x2, 0x2, 0x4fe, 0x4ff, - 0x7, 0x35, 0x2, 0x2, 0x4ff, 0x500, 0x7, 0x7a, 0x2, 0x2, 0x500, 0x501, - 0x7, 0x33, 0x2, 0x2, 0x501, 0x6c, 0x3, 0x2, 0x2, 0x2, 0x502, 0x503, - 0x7, 0x66, 0x2, 0x2, 0x503, 0x504, 0x7, 0x71, 0x2, 0x2, 0x504, 0x505, - 0x7, 0x77, 0x2, 0x2, 0x505, 0x506, 0x7, 0x64, 0x2, 0x2, 0x506, 0x507, - 0x7, 0x6e, 0x2, 0x2, 0x507, 0x508, 0x7, 0x67, 0x2, 0x2, 0x508, 0x509, - 0x7, 0x35, 0x2, 0x2, 0x509, 0x50a, 0x7, 0x7a, 0x2, 0x2, 0x50a, 0x50b, - 0x7, 0x34, 0x2, 0x2, 0x50b, 0x6e, 0x3, 0x2, 0x2, 0x2, 0x50c, 0x50d, - 0x7, 0x66, 0x2, 0x2, 0x50d, 0x50e, 0x7, 0x71, 0x2, 0x2, 0x50e, 0x50f, - 0x7, 0x77, 0x2, 0x2, 0x50f, 0x510, 0x7, 0x64, 0x2, 0x2, 0x510, 0x511, - 0x7, 0x6e, 0x2, 0x2, 0x511, 0x512, 0x7, 0x67, 0x2, 0x2, 0x512, 0x513, - 0x7, 0x35, 0x2, 0x2, 0x513, 0x514, 0x7, 0x7a, 0x2, 0x2, 0x514, 0x515, - 0x7, 0x35, 0x2, 0x2, 0x515, 0x70, 0x3, 0x2, 0x2, 0x2, 0x516, 0x517, - 0x7, 0x66, 0x2, 0x2, 0x517, 0x518, 0x7, 0x71, 0x2, 0x2, 0x518, 0x519, - 0x7, 0x77, 0x2, 0x2, 0x519, 0x51a, 0x7, 0x64, 0x2, 0x2, 0x51a, 0x51b, - 0x7, 0x6e, 0x2, 0x2, 0x51b, 0x51c, 0x7, 0x67, 0x2, 0x2, 0x51c, 0x51d, - 0x7, 0x35, 0x2, 0x2, 0x51d, 0x51e, 0x7, 0x7a, 0x2, 0x2, 0x51e, 0x51f, - 0x7, 0x36, 0x2, 0x2, 0x51f, 0x72, 0x3, 0x2, 0x2, 0x2, 0x520, 0x521, - 0x7, 0x66, 0x2, 0x2, 0x521, 0x522, 0x7, 0x71, 0x2, 0x2, 0x522, 0x523, - 0x7, 0x77, 0x2, 0x2, 0x523, 0x524, 0x7, 0x64, 0x2, 0x2, 0x524, 0x525, - 0x7, 0x6e, 0x2, 0x2, 0x525, 0x526, 0x7, 0x67, 0x2, 0x2, 0x526, 0x527, - 0x7, 0x36, 0x2, 0x2, 0x527, 0x528, 0x7, 0x7a, 0x2, 0x2, 0x528, 0x529, - 0x7, 0x33, 0x2, 0x2, 0x529, 0x74, 0x3, 0x2, 0x2, 0x2, 0x52a, 0x52b, - 0x7, 0x66, 0x2, 0x2, 0x52b, 0x52c, 0x7, 0x71, 0x2, 0x2, 0x52c, 0x52d, - 0x7, 0x77, 0x2, 0x2, 0x52d, 0x52e, 0x7, 0x64, 0x2, 0x2, 0x52e, 0x52f, - 0x7, 0x6e, 0x2, 0x2, 0x52f, 0x530, 0x7, 0x67, 0x2, 0x2, 0x530, 0x531, - 0x7, 0x36, 0x2, 0x2, 0x531, 0x532, 0x7, 0x7a, 0x2, 0x2, 0x532, 0x533, - 0x7, 0x34, 0x2, 0x2, 0x533, 0x76, 0x3, 0x2, 0x2, 0x2, 0x534, 0x535, - 0x7, 0x66, 0x2, 0x2, 0x535, 0x536, 0x7, 0x71, 0x2, 0x2, 0x536, 0x537, - 0x7, 0x77, 0x2, 0x2, 0x537, 0x538, 0x7, 0x64, 0x2, 0x2, 0x538, 0x539, - 0x7, 0x6e, 0x2, 0x2, 0x539, 0x53a, 0x7, 0x67, 0x2, 0x2, 0x53a, 0x53b, - 0x7, 0x36, 0x2, 0x2, 0x53b, 0x53c, 0x7, 0x7a, 0x2, 0x2, 0x53c, 0x53d, - 0x7, 0x35, 0x2, 0x2, 0x53d, 0x78, 0x3, 0x2, 0x2, 0x2, 0x53e, 0x53f, - 0x7, 0x66, 0x2, 0x2, 0x53f, 0x540, 0x7, 0x71, 0x2, 0x2, 0x540, 0x541, - 0x7, 0x77, 0x2, 0x2, 0x541, 0x542, 0x7, 0x64, 0x2, 0x2, 0x542, 0x543, - 0x7, 0x6e, 0x2, 0x2, 0x543, 0x544, 0x7, 0x67, 0x2, 0x2, 0x544, 0x545, - 0x7, 0x36, 0x2, 0x2, 0x545, 0x546, 0x7, 0x7a, 0x2, 0x2, 0x546, 0x547, - 0x7, 0x36, 0x2, 0x2, 0x547, 0x7a, 0x3, 0x2, 0x2, 0x2, 0x548, 0x549, - 0x7, 0x67, 0x2, 0x2, 0x549, 0x54a, 0x7, 0x6e, 0x2, 0x2, 0x54a, 0x54b, - 0x7, 0x75, 0x2, 0x2, 0x54b, 0x54c, 0x7, 0x67, 0x2, 0x2, 0x54c, 0x7c, - 0x3, 0x2, 0x2, 0x2, 0x54d, 0x54e, 0x7, 0x67, 0x2, 0x2, 0x54e, 0x54f, - 0x7, 0x70, 0x2, 0x2, 0x54f, 0x550, 0x7, 0x77, 0x2, 0x2, 0x550, 0x551, - 0x7, 0x6f, 0x2, 0x2, 0x551, 0x7e, 0x3, 0x2, 0x2, 0x2, 0x552, 0x553, - 0x7, 0x67, 0x2, 0x2, 0x553, 0x554, 0x7, 0x7a, 0x2, 0x2, 0x554, 0x555, - 0x7, 0x76, 0x2, 0x2, 0x555, 0x556, 0x7, 0x67, 0x2, 0x2, 0x556, 0x557, - 0x7, 0x74, 0x2, 0x2, 0x557, 0x558, 0x7, 0x70, 0x2, 0x2, 0x558, 0x80, - 0x3, 0x2, 0x2, 0x2, 0x559, 0x55a, 0x7, 0x48, 0x2, 0x2, 0x55a, 0x55b, - 0x7, 0x67, 0x2, 0x2, 0x55b, 0x55c, 0x7, 0x67, 0x2, 0x2, 0x55c, 0x55d, - 0x7, 0x66, 0x2, 0x2, 0x55d, 0x55e, 0x7, 0x64, 0x2, 0x2, 0x55e, 0x55f, - 0x7, 0x63, 0x2, 0x2, 0x55f, 0x560, 0x7, 0x65, 0x2, 0x2, 0x560, 0x561, - 0x7, 0x6d, 0x2, 0x2, 0x561, 0x562, 0x7, 0x56, 0x2, 0x2, 0x562, 0x563, + 0x7, 0x35, 0x2, 0x2, 0x4af, 0x58, 0x3, 0x2, 0x2, 0x2, 0x4b0, 0x4b1, + 0x7, 0x66, 0x2, 0x2, 0x4b1, 0x4b2, 0x7, 0x71, 0x2, 0x2, 0x4b2, 0x4b3, + 0x7, 0x77, 0x2, 0x2, 0x4b3, 0x4b4, 0x7, 0x64, 0x2, 0x2, 0x4b4, 0x4b5, + 0x7, 0x6e, 0x2, 0x2, 0x4b5, 0x4b6, 0x7, 0x67, 0x2, 0x2, 0x4b6, 0x4b7, + 0x7, 0x36, 0x2, 0x2, 0x4b7, 0x5a, 0x3, 0x2, 0x2, 0x2, 0x4b8, 0x4b9, + 0x7, 0x66, 0x2, 0x2, 0x4b9, 0x4ba, 0x7, 0x71, 0x2, 0x2, 0x4ba, 0x4bb, + 0x7, 0x77, 0x2, 0x2, 0x4bb, 0x4bc, 0x7, 0x64, 0x2, 0x2, 0x4bc, 0x4bd, + 0x7, 0x6e, 0x2, 0x2, 0x4bd, 0x4be, 0x7, 0x67, 0x2, 0x2, 0x4be, 0x4bf, + 0x7, 0x33, 0x2, 0x2, 0x4bf, 0x4c0, 0x7, 0x7a, 0x2, 0x2, 0x4c0, 0x4c1, + 0x7, 0x33, 0x2, 0x2, 0x4c1, 0x5c, 0x3, 0x2, 0x2, 0x2, 0x4c2, 0x4c3, + 0x7, 0x66, 0x2, 0x2, 0x4c3, 0x4c4, 0x7, 0x71, 0x2, 0x2, 0x4c4, 0x4c5, + 0x7, 0x77, 0x2, 0x2, 0x4c5, 0x4c6, 0x7, 0x64, 0x2, 0x2, 0x4c6, 0x4c7, + 0x7, 0x6e, 0x2, 0x2, 0x4c7, 0x4c8, 0x7, 0x67, 0x2, 0x2, 0x4c8, 0x4c9, + 0x7, 0x33, 0x2, 0x2, 0x4c9, 0x4ca, 0x7, 0x7a, 0x2, 0x2, 0x4ca, 0x4cb, + 0x7, 0x34, 0x2, 0x2, 0x4cb, 0x5e, 0x3, 0x2, 0x2, 0x2, 0x4cc, 0x4cd, + 0x7, 0x66, 0x2, 0x2, 0x4cd, 0x4ce, 0x7, 0x71, 0x2, 0x2, 0x4ce, 0x4cf, + 0x7, 0x77, 0x2, 0x2, 0x4cf, 0x4d0, 0x7, 0x64, 0x2, 0x2, 0x4d0, 0x4d1, + 0x7, 0x6e, 0x2, 0x2, 0x4d1, 0x4d2, 0x7, 0x67, 0x2, 0x2, 0x4d2, 0x4d3, + 0x7, 0x33, 0x2, 0x2, 0x4d3, 0x4d4, 0x7, 0x7a, 0x2, 0x2, 0x4d4, 0x4d5, + 0x7, 0x35, 0x2, 0x2, 0x4d5, 0x60, 0x3, 0x2, 0x2, 0x2, 0x4d6, 0x4d7, + 0x7, 0x66, 0x2, 0x2, 0x4d7, 0x4d8, 0x7, 0x71, 0x2, 0x2, 0x4d8, 0x4d9, + 0x7, 0x77, 0x2, 0x2, 0x4d9, 0x4da, 0x7, 0x64, 0x2, 0x2, 0x4da, 0x4db, + 0x7, 0x6e, 0x2, 0x2, 0x4db, 0x4dc, 0x7, 0x67, 0x2, 0x2, 0x4dc, 0x4dd, + 0x7, 0x33, 0x2, 0x2, 0x4dd, 0x4de, 0x7, 0x7a, 0x2, 0x2, 0x4de, 0x4df, + 0x7, 0x36, 0x2, 0x2, 0x4df, 0x62, 0x3, 0x2, 0x2, 0x2, 0x4e0, 0x4e1, + 0x7, 0x66, 0x2, 0x2, 0x4e1, 0x4e2, 0x7, 0x71, 0x2, 0x2, 0x4e2, 0x4e3, + 0x7, 0x77, 0x2, 0x2, 0x4e3, 0x4e4, 0x7, 0x64, 0x2, 0x2, 0x4e4, 0x4e5, + 0x7, 0x6e, 0x2, 0x2, 0x4e5, 0x4e6, 0x7, 0x67, 0x2, 0x2, 0x4e6, 0x4e7, + 0x7, 0x34, 0x2, 0x2, 0x4e7, 0x4e8, 0x7, 0x7a, 0x2, 0x2, 0x4e8, 0x4e9, + 0x7, 0x33, 0x2, 0x2, 0x4e9, 0x64, 0x3, 0x2, 0x2, 0x2, 0x4ea, 0x4eb, + 0x7, 0x66, 0x2, 0x2, 0x4eb, 0x4ec, 0x7, 0x71, 0x2, 0x2, 0x4ec, 0x4ed, + 0x7, 0x77, 0x2, 0x2, 0x4ed, 0x4ee, 0x7, 0x64, 0x2, 0x2, 0x4ee, 0x4ef, + 0x7, 0x6e, 0x2, 0x2, 0x4ef, 0x4f0, 0x7, 0x67, 0x2, 0x2, 0x4f0, 0x4f1, + 0x7, 0x34, 0x2, 0x2, 0x4f1, 0x4f2, 0x7, 0x7a, 0x2, 0x2, 0x4f2, 0x4f3, + 0x7, 0x34, 0x2, 0x2, 0x4f3, 0x66, 0x3, 0x2, 0x2, 0x2, 0x4f4, 0x4f5, + 0x7, 0x66, 0x2, 0x2, 0x4f5, 0x4f6, 0x7, 0x71, 0x2, 0x2, 0x4f6, 0x4f7, + 0x7, 0x77, 0x2, 0x2, 0x4f7, 0x4f8, 0x7, 0x64, 0x2, 0x2, 0x4f8, 0x4f9, + 0x7, 0x6e, 0x2, 0x2, 0x4f9, 0x4fa, 0x7, 0x67, 0x2, 0x2, 0x4fa, 0x4fb, + 0x7, 0x34, 0x2, 0x2, 0x4fb, 0x4fc, 0x7, 0x7a, 0x2, 0x2, 0x4fc, 0x4fd, + 0x7, 0x35, 0x2, 0x2, 0x4fd, 0x68, 0x3, 0x2, 0x2, 0x2, 0x4fe, 0x4ff, + 0x7, 0x66, 0x2, 0x2, 0x4ff, 0x500, 0x7, 0x71, 0x2, 0x2, 0x500, 0x501, + 0x7, 0x77, 0x2, 0x2, 0x501, 0x502, 0x7, 0x64, 0x2, 0x2, 0x502, 0x503, + 0x7, 0x6e, 0x2, 0x2, 0x503, 0x504, 0x7, 0x67, 0x2, 0x2, 0x504, 0x505, + 0x7, 0x34, 0x2, 0x2, 0x505, 0x506, 0x7, 0x7a, 0x2, 0x2, 0x506, 0x507, + 0x7, 0x36, 0x2, 0x2, 0x507, 0x6a, 0x3, 0x2, 0x2, 0x2, 0x508, 0x509, + 0x7, 0x66, 0x2, 0x2, 0x509, 0x50a, 0x7, 0x71, 0x2, 0x2, 0x50a, 0x50b, + 0x7, 0x77, 0x2, 0x2, 0x50b, 0x50c, 0x7, 0x64, 0x2, 0x2, 0x50c, 0x50d, + 0x7, 0x6e, 0x2, 0x2, 0x50d, 0x50e, 0x7, 0x67, 0x2, 0x2, 0x50e, 0x50f, + 0x7, 0x35, 0x2, 0x2, 0x50f, 0x510, 0x7, 0x7a, 0x2, 0x2, 0x510, 0x511, + 0x7, 0x33, 0x2, 0x2, 0x511, 0x6c, 0x3, 0x2, 0x2, 0x2, 0x512, 0x513, + 0x7, 0x66, 0x2, 0x2, 0x513, 0x514, 0x7, 0x71, 0x2, 0x2, 0x514, 0x515, + 0x7, 0x77, 0x2, 0x2, 0x515, 0x516, 0x7, 0x64, 0x2, 0x2, 0x516, 0x517, + 0x7, 0x6e, 0x2, 0x2, 0x517, 0x518, 0x7, 0x67, 0x2, 0x2, 0x518, 0x519, + 0x7, 0x35, 0x2, 0x2, 0x519, 0x51a, 0x7, 0x7a, 0x2, 0x2, 0x51a, 0x51b, + 0x7, 0x34, 0x2, 0x2, 0x51b, 0x6e, 0x3, 0x2, 0x2, 0x2, 0x51c, 0x51d, + 0x7, 0x66, 0x2, 0x2, 0x51d, 0x51e, 0x7, 0x71, 0x2, 0x2, 0x51e, 0x51f, + 0x7, 0x77, 0x2, 0x2, 0x51f, 0x520, 0x7, 0x64, 0x2, 0x2, 0x520, 0x521, + 0x7, 0x6e, 0x2, 0x2, 0x521, 0x522, 0x7, 0x67, 0x2, 0x2, 0x522, 0x523, + 0x7, 0x35, 0x2, 0x2, 0x523, 0x524, 0x7, 0x7a, 0x2, 0x2, 0x524, 0x525, + 0x7, 0x35, 0x2, 0x2, 0x525, 0x70, 0x3, 0x2, 0x2, 0x2, 0x526, 0x527, + 0x7, 0x66, 0x2, 0x2, 0x527, 0x528, 0x7, 0x71, 0x2, 0x2, 0x528, 0x529, + 0x7, 0x77, 0x2, 0x2, 0x529, 0x52a, 0x7, 0x64, 0x2, 0x2, 0x52a, 0x52b, + 0x7, 0x6e, 0x2, 0x2, 0x52b, 0x52c, 0x7, 0x67, 0x2, 0x2, 0x52c, 0x52d, + 0x7, 0x35, 0x2, 0x2, 0x52d, 0x52e, 0x7, 0x7a, 0x2, 0x2, 0x52e, 0x52f, + 0x7, 0x36, 0x2, 0x2, 0x52f, 0x72, 0x3, 0x2, 0x2, 0x2, 0x530, 0x531, + 0x7, 0x66, 0x2, 0x2, 0x531, 0x532, 0x7, 0x71, 0x2, 0x2, 0x532, 0x533, + 0x7, 0x77, 0x2, 0x2, 0x533, 0x534, 0x7, 0x64, 0x2, 0x2, 0x534, 0x535, + 0x7, 0x6e, 0x2, 0x2, 0x535, 0x536, 0x7, 0x67, 0x2, 0x2, 0x536, 0x537, + 0x7, 0x36, 0x2, 0x2, 0x537, 0x538, 0x7, 0x7a, 0x2, 0x2, 0x538, 0x539, + 0x7, 0x33, 0x2, 0x2, 0x539, 0x74, 0x3, 0x2, 0x2, 0x2, 0x53a, 0x53b, + 0x7, 0x66, 0x2, 0x2, 0x53b, 0x53c, 0x7, 0x71, 0x2, 0x2, 0x53c, 0x53d, + 0x7, 0x77, 0x2, 0x2, 0x53d, 0x53e, 0x7, 0x64, 0x2, 0x2, 0x53e, 0x53f, + 0x7, 0x6e, 0x2, 0x2, 0x53f, 0x540, 0x7, 0x67, 0x2, 0x2, 0x540, 0x541, + 0x7, 0x36, 0x2, 0x2, 0x541, 0x542, 0x7, 0x7a, 0x2, 0x2, 0x542, 0x543, + 0x7, 0x34, 0x2, 0x2, 0x543, 0x76, 0x3, 0x2, 0x2, 0x2, 0x544, 0x545, + 0x7, 0x66, 0x2, 0x2, 0x545, 0x546, 0x7, 0x71, 0x2, 0x2, 0x546, 0x547, + 0x7, 0x77, 0x2, 0x2, 0x547, 0x548, 0x7, 0x64, 0x2, 0x2, 0x548, 0x549, + 0x7, 0x6e, 0x2, 0x2, 0x549, 0x54a, 0x7, 0x67, 0x2, 0x2, 0x54a, 0x54b, + 0x7, 0x36, 0x2, 0x2, 0x54b, 0x54c, 0x7, 0x7a, 0x2, 0x2, 0x54c, 0x54d, + 0x7, 0x35, 0x2, 0x2, 0x54d, 0x78, 0x3, 0x2, 0x2, 0x2, 0x54e, 0x54f, + 0x7, 0x66, 0x2, 0x2, 0x54f, 0x550, 0x7, 0x71, 0x2, 0x2, 0x550, 0x551, + 0x7, 0x77, 0x2, 0x2, 0x551, 0x552, 0x7, 0x64, 0x2, 0x2, 0x552, 0x553, + 0x7, 0x6e, 0x2, 0x2, 0x553, 0x554, 0x7, 0x67, 0x2, 0x2, 0x554, 0x555, + 0x7, 0x36, 0x2, 0x2, 0x555, 0x556, 0x7, 0x7a, 0x2, 0x2, 0x556, 0x557, + 0x7, 0x36, 0x2, 0x2, 0x557, 0x7a, 0x3, 0x2, 0x2, 0x2, 0x558, 0x559, + 0x7, 0x67, 0x2, 0x2, 0x559, 0x55a, 0x7, 0x6e, 0x2, 0x2, 0x55a, 0x55b, + 0x7, 0x75, 0x2, 0x2, 0x55b, 0x55c, 0x7, 0x67, 0x2, 0x2, 0x55c, 0x7c, + 0x3, 0x2, 0x2, 0x2, 0x55d, 0x55e, 0x7, 0x67, 0x2, 0x2, 0x55e, 0x55f, + 0x7, 0x70, 0x2, 0x2, 0x55f, 0x560, 0x7, 0x77, 0x2, 0x2, 0x560, 0x561, + 0x7, 0x6f, 0x2, 0x2, 0x561, 0x7e, 0x3, 0x2, 0x2, 0x2, 0x562, 0x563, 0x7, 0x67, 0x2, 0x2, 0x563, 0x564, 0x7, 0x7a, 0x2, 0x2, 0x564, 0x565, - 0x7, 0x76, 0x2, 0x2, 0x565, 0x566, 0x7, 0x77, 0x2, 0x2, 0x566, 0x567, - 0x7, 0x74, 0x2, 0x2, 0x567, 0x568, 0x7, 0x67, 0x2, 0x2, 0x568, 0x569, - 0x7, 0x34, 0x2, 0x2, 0x569, 0x56a, 0x7, 0x46, 0x2, 0x2, 0x56a, 0x82, - 0x3, 0x2, 0x2, 0x2, 0x56b, 0x56c, 0x7, 0x48, 0x2, 0x2, 0x56c, 0x56d, - 0x7, 0x67, 0x2, 0x2, 0x56d, 0x56e, 0x7, 0x67, 0x2, 0x2, 0x56e, 0x56f, - 0x7, 0x66, 0x2, 0x2, 0x56f, 0x570, 0x7, 0x64, 0x2, 0x2, 0x570, 0x571, - 0x7, 0x63, 0x2, 0x2, 0x571, 0x572, 0x7, 0x65, 0x2, 0x2, 0x572, 0x573, - 0x7, 0x6d, 0x2, 0x2, 0x573, 0x574, 0x7, 0x56, 0x2, 0x2, 0x574, 0x575, - 0x7, 0x67, 0x2, 0x2, 0x575, 0x576, 0x7, 0x7a, 0x2, 0x2, 0x576, 0x577, - 0x7, 0x76, 0x2, 0x2, 0x577, 0x578, 0x7, 0x77, 0x2, 0x2, 0x578, 0x579, - 0x7, 0x74, 0x2, 0x2, 0x579, 0x57a, 0x7, 0x67, 0x2, 0x2, 0x57a, 0x57b, - 0x7, 0x34, 0x2, 0x2, 0x57b, 0x57c, 0x7, 0x46, 0x2, 0x2, 0x57c, 0x57d, - 0x7, 0x43, 0x2, 0x2, 0x57d, 0x57e, 0x7, 0x74, 0x2, 0x2, 0x57e, 0x57f, - 0x7, 0x74, 0x2, 0x2, 0x57f, 0x580, 0x7, 0x63, 0x2, 0x2, 0x580, 0x581, - 0x7, 0x7b, 0x2, 0x2, 0x581, 0x84, 0x3, 0x2, 0x2, 0x2, 0x582, 0x583, - 0x7, 0x68, 0x2, 0x2, 0x583, 0x584, 0x7, 0x6e, 0x2, 0x2, 0x584, 0x585, - 0x7, 0x71, 0x2, 0x2, 0x585, 0x586, 0x7, 0x63, 0x2, 0x2, 0x586, 0x587, - 0x7, 0x76, 0x2, 0x2, 0x587, 0x86, 0x3, 0x2, 0x2, 0x2, 0x588, 0x589, - 0x7, 0x68, 0x2, 0x2, 0x589, 0x58a, 0x7, 0x6e, 0x2, 0x2, 0x58a, 0x58b, - 0x7, 0x71, 0x2, 0x2, 0x58b, 0x58c, 0x7, 0x63, 0x2, 0x2, 0x58c, 0x58d, - 0x7, 0x76, 0x2, 0x2, 0x58d, 0x58e, 0x7, 0x33, 0x2, 0x2, 0x58e, 0x88, - 0x3, 0x2, 0x2, 0x2, 0x58f, 0x590, 0x7, 0x68, 0x2, 0x2, 0x590, 0x591, - 0x7, 0x6e, 0x2, 0x2, 0x591, 0x592, 0x7, 0x71, 0x2, 0x2, 0x592, 0x593, - 0x7, 0x63, 0x2, 0x2, 0x593, 0x594, 0x7, 0x76, 0x2, 0x2, 0x594, 0x595, - 0x7, 0x34, 0x2, 0x2, 0x595, 0x8a, 0x3, 0x2, 0x2, 0x2, 0x596, 0x597, - 0x7, 0x68, 0x2, 0x2, 0x597, 0x598, 0x7, 0x6e, 0x2, 0x2, 0x598, 0x599, - 0x7, 0x71, 0x2, 0x2, 0x599, 0x59a, 0x7, 0x63, 0x2, 0x2, 0x59a, 0x59b, - 0x7, 0x76, 0x2, 0x2, 0x59b, 0x59c, 0x7, 0x35, 0x2, 0x2, 0x59c, 0x8c, - 0x3, 0x2, 0x2, 0x2, 0x59d, 0x59e, 0x7, 0x68, 0x2, 0x2, 0x59e, 0x59f, - 0x7, 0x6e, 0x2, 0x2, 0x59f, 0x5a0, 0x7, 0x71, 0x2, 0x2, 0x5a0, 0x5a1, - 0x7, 0x63, 0x2, 0x2, 0x5a1, 0x5a2, 0x7, 0x76, 0x2, 0x2, 0x5a2, 0x5a3, - 0x7, 0x36, 0x2, 0x2, 0x5a3, 0x8e, 0x3, 0x2, 0x2, 0x2, 0x5a4, 0x5a5, - 0x7, 0x68, 0x2, 0x2, 0x5a5, 0x5a6, 0x7, 0x6e, 0x2, 0x2, 0x5a6, 0x5a7, - 0x7, 0x71, 0x2, 0x2, 0x5a7, 0x5a8, 0x7, 0x63, 0x2, 0x2, 0x5a8, 0x5a9, - 0x7, 0x76, 0x2, 0x2, 0x5a9, 0x5aa, 0x7, 0x33, 0x2, 0x2, 0x5aa, 0x5ab, - 0x7, 0x7a, 0x2, 0x2, 0x5ab, 0x5ac, 0x7, 0x33, 0x2, 0x2, 0x5ac, 0x90, + 0x7, 0x72, 0x2, 0x2, 0x565, 0x566, 0x7, 0x71, 0x2, 0x2, 0x566, 0x567, + 0x7, 0x74, 0x2, 0x2, 0x567, 0x568, 0x7, 0x76, 0x2, 0x2, 0x568, 0x80, + 0x3, 0x2, 0x2, 0x2, 0x569, 0x56a, 0x7, 0x67, 0x2, 0x2, 0x56a, 0x56b, + 0x7, 0x7a, 0x2, 0x2, 0x56b, 0x56c, 0x7, 0x76, 0x2, 0x2, 0x56c, 0x56d, + 0x7, 0x67, 0x2, 0x2, 0x56d, 0x56e, 0x7, 0x74, 0x2, 0x2, 0x56e, 0x56f, + 0x7, 0x70, 0x2, 0x2, 0x56f, 0x82, 0x3, 0x2, 0x2, 0x2, 0x570, 0x571, + 0x7, 0x48, 0x2, 0x2, 0x571, 0x572, 0x7, 0x67, 0x2, 0x2, 0x572, 0x573, + 0x7, 0x67, 0x2, 0x2, 0x573, 0x574, 0x7, 0x66, 0x2, 0x2, 0x574, 0x575, + 0x7, 0x64, 0x2, 0x2, 0x575, 0x576, 0x7, 0x63, 0x2, 0x2, 0x576, 0x577, + 0x7, 0x65, 0x2, 0x2, 0x577, 0x578, 0x7, 0x6d, 0x2, 0x2, 0x578, 0x579, + 0x7, 0x56, 0x2, 0x2, 0x579, 0x57a, 0x7, 0x67, 0x2, 0x2, 0x57a, 0x57b, + 0x7, 0x7a, 0x2, 0x2, 0x57b, 0x57c, 0x7, 0x76, 0x2, 0x2, 0x57c, 0x57d, + 0x7, 0x77, 0x2, 0x2, 0x57d, 0x57e, 0x7, 0x74, 0x2, 0x2, 0x57e, 0x57f, + 0x7, 0x67, 0x2, 0x2, 0x57f, 0x580, 0x7, 0x34, 0x2, 0x2, 0x580, 0x581, + 0x7, 0x46, 0x2, 0x2, 0x581, 0x84, 0x3, 0x2, 0x2, 0x2, 0x582, 0x583, + 0x7, 0x48, 0x2, 0x2, 0x583, 0x584, 0x7, 0x67, 0x2, 0x2, 0x584, 0x585, + 0x7, 0x67, 0x2, 0x2, 0x585, 0x586, 0x7, 0x66, 0x2, 0x2, 0x586, 0x587, + 0x7, 0x64, 0x2, 0x2, 0x587, 0x588, 0x7, 0x63, 0x2, 0x2, 0x588, 0x589, + 0x7, 0x65, 0x2, 0x2, 0x589, 0x58a, 0x7, 0x6d, 0x2, 0x2, 0x58a, 0x58b, + 0x7, 0x56, 0x2, 0x2, 0x58b, 0x58c, 0x7, 0x67, 0x2, 0x2, 0x58c, 0x58d, + 0x7, 0x7a, 0x2, 0x2, 0x58d, 0x58e, 0x7, 0x76, 0x2, 0x2, 0x58e, 0x58f, + 0x7, 0x77, 0x2, 0x2, 0x58f, 0x590, 0x7, 0x74, 0x2, 0x2, 0x590, 0x591, + 0x7, 0x67, 0x2, 0x2, 0x591, 0x592, 0x7, 0x34, 0x2, 0x2, 0x592, 0x593, + 0x7, 0x46, 0x2, 0x2, 0x593, 0x594, 0x7, 0x43, 0x2, 0x2, 0x594, 0x595, + 0x7, 0x74, 0x2, 0x2, 0x595, 0x596, 0x7, 0x74, 0x2, 0x2, 0x596, 0x597, + 0x7, 0x63, 0x2, 0x2, 0x597, 0x598, 0x7, 0x7b, 0x2, 0x2, 0x598, 0x86, + 0x3, 0x2, 0x2, 0x2, 0x599, 0x59a, 0x7, 0x68, 0x2, 0x2, 0x59a, 0x59b, + 0x7, 0x6e, 0x2, 0x2, 0x59b, 0x59c, 0x7, 0x71, 0x2, 0x2, 0x59c, 0x59d, + 0x7, 0x63, 0x2, 0x2, 0x59d, 0x59e, 0x7, 0x76, 0x2, 0x2, 0x59e, 0x88, + 0x3, 0x2, 0x2, 0x2, 0x59f, 0x5a0, 0x7, 0x68, 0x2, 0x2, 0x5a0, 0x5a1, + 0x7, 0x6e, 0x2, 0x2, 0x5a1, 0x5a2, 0x7, 0x71, 0x2, 0x2, 0x5a2, 0x5a3, + 0x7, 0x63, 0x2, 0x2, 0x5a3, 0x5a4, 0x7, 0x76, 0x2, 0x2, 0x5a4, 0x5a5, + 0x7, 0x33, 0x2, 0x2, 0x5a5, 0x8a, 0x3, 0x2, 0x2, 0x2, 0x5a6, 0x5a7, + 0x7, 0x68, 0x2, 0x2, 0x5a7, 0x5a8, 0x7, 0x6e, 0x2, 0x2, 0x5a8, 0x5a9, + 0x7, 0x71, 0x2, 0x2, 0x5a9, 0x5aa, 0x7, 0x63, 0x2, 0x2, 0x5aa, 0x5ab, + 0x7, 0x76, 0x2, 0x2, 0x5ab, 0x5ac, 0x7, 0x34, 0x2, 0x2, 0x5ac, 0x8c, 0x3, 0x2, 0x2, 0x2, 0x5ad, 0x5ae, 0x7, 0x68, 0x2, 0x2, 0x5ae, 0x5af, 0x7, 0x6e, 0x2, 0x2, 0x5af, 0x5b0, 0x7, 0x71, 0x2, 0x2, 0x5b0, 0x5b1, 0x7, 0x63, 0x2, 0x2, 0x5b1, 0x5b2, 0x7, 0x76, 0x2, 0x2, 0x5b2, 0x5b3, - 0x7, 0x33, 0x2, 0x2, 0x5b3, 0x5b4, 0x7, 0x7a, 0x2, 0x2, 0x5b4, 0x5b5, - 0x7, 0x34, 0x2, 0x2, 0x5b5, 0x92, 0x3, 0x2, 0x2, 0x2, 0x5b6, 0x5b7, - 0x7, 0x68, 0x2, 0x2, 0x5b7, 0x5b8, 0x7, 0x6e, 0x2, 0x2, 0x5b8, 0x5b9, - 0x7, 0x71, 0x2, 0x2, 0x5b9, 0x5ba, 0x7, 0x63, 0x2, 0x2, 0x5ba, 0x5bb, - 0x7, 0x76, 0x2, 0x2, 0x5bb, 0x5bc, 0x7, 0x33, 0x2, 0x2, 0x5bc, 0x5bd, - 0x7, 0x7a, 0x2, 0x2, 0x5bd, 0x5be, 0x7, 0x35, 0x2, 0x2, 0x5be, 0x94, - 0x3, 0x2, 0x2, 0x2, 0x5bf, 0x5c0, 0x7, 0x68, 0x2, 0x2, 0x5c0, 0x5c1, - 0x7, 0x6e, 0x2, 0x2, 0x5c1, 0x5c2, 0x7, 0x71, 0x2, 0x2, 0x5c2, 0x5c3, - 0x7, 0x63, 0x2, 0x2, 0x5c3, 0x5c4, 0x7, 0x76, 0x2, 0x2, 0x5c4, 0x5c5, - 0x7, 0x33, 0x2, 0x2, 0x5c5, 0x5c6, 0x7, 0x7a, 0x2, 0x2, 0x5c6, 0x5c7, - 0x7, 0x36, 0x2, 0x2, 0x5c7, 0x96, 0x3, 0x2, 0x2, 0x2, 0x5c8, 0x5c9, - 0x7, 0x68, 0x2, 0x2, 0x5c9, 0x5ca, 0x7, 0x6e, 0x2, 0x2, 0x5ca, 0x5cb, - 0x7, 0x71, 0x2, 0x2, 0x5cb, 0x5cc, 0x7, 0x63, 0x2, 0x2, 0x5cc, 0x5cd, - 0x7, 0x76, 0x2, 0x2, 0x5cd, 0x5ce, 0x7, 0x34, 0x2, 0x2, 0x5ce, 0x5cf, - 0x7, 0x7a, 0x2, 0x2, 0x5cf, 0x5d0, 0x7, 0x33, 0x2, 0x2, 0x5d0, 0x98, - 0x3, 0x2, 0x2, 0x2, 0x5d1, 0x5d2, 0x7, 0x68, 0x2, 0x2, 0x5d2, 0x5d3, - 0x7, 0x6e, 0x2, 0x2, 0x5d3, 0x5d4, 0x7, 0x71, 0x2, 0x2, 0x5d4, 0x5d5, - 0x7, 0x63, 0x2, 0x2, 0x5d5, 0x5d6, 0x7, 0x76, 0x2, 0x2, 0x5d6, 0x5d7, - 0x7, 0x34, 0x2, 0x2, 0x5d7, 0x5d8, 0x7, 0x7a, 0x2, 0x2, 0x5d8, 0x5d9, - 0x7, 0x34, 0x2, 0x2, 0x5d9, 0x9a, 0x3, 0x2, 0x2, 0x2, 0x5da, 0x5db, - 0x7, 0x68, 0x2, 0x2, 0x5db, 0x5dc, 0x7, 0x6e, 0x2, 0x2, 0x5dc, 0x5dd, - 0x7, 0x71, 0x2, 0x2, 0x5dd, 0x5de, 0x7, 0x63, 0x2, 0x2, 0x5de, 0x5df, - 0x7, 0x76, 0x2, 0x2, 0x5df, 0x5e0, 0x7, 0x34, 0x2, 0x2, 0x5e0, 0x5e1, - 0x7, 0x7a, 0x2, 0x2, 0x5e1, 0x5e2, 0x7, 0x35, 0x2, 0x2, 0x5e2, 0x9c, - 0x3, 0x2, 0x2, 0x2, 0x5e3, 0x5e4, 0x7, 0x68, 0x2, 0x2, 0x5e4, 0x5e5, - 0x7, 0x6e, 0x2, 0x2, 0x5e5, 0x5e6, 0x7, 0x71, 0x2, 0x2, 0x5e6, 0x5e7, - 0x7, 0x63, 0x2, 0x2, 0x5e7, 0x5e8, 0x7, 0x76, 0x2, 0x2, 0x5e8, 0x5e9, - 0x7, 0x34, 0x2, 0x2, 0x5e9, 0x5ea, 0x7, 0x7a, 0x2, 0x2, 0x5ea, 0x5eb, - 0x7, 0x36, 0x2, 0x2, 0x5eb, 0x9e, 0x3, 0x2, 0x2, 0x2, 0x5ec, 0x5ed, - 0x7, 0x68, 0x2, 0x2, 0x5ed, 0x5ee, 0x7, 0x6e, 0x2, 0x2, 0x5ee, 0x5ef, - 0x7, 0x71, 0x2, 0x2, 0x5ef, 0x5f0, 0x7, 0x63, 0x2, 0x2, 0x5f0, 0x5f1, - 0x7, 0x76, 0x2, 0x2, 0x5f1, 0x5f2, 0x7, 0x35, 0x2, 0x2, 0x5f2, 0x5f3, - 0x7, 0x7a, 0x2, 0x2, 0x5f3, 0x5f4, 0x7, 0x33, 0x2, 0x2, 0x5f4, 0xa0, - 0x3, 0x2, 0x2, 0x2, 0x5f5, 0x5f6, 0x7, 0x68, 0x2, 0x2, 0x5f6, 0x5f7, - 0x7, 0x6e, 0x2, 0x2, 0x5f7, 0x5f8, 0x7, 0x71, 0x2, 0x2, 0x5f8, 0x5f9, - 0x7, 0x63, 0x2, 0x2, 0x5f9, 0x5fa, 0x7, 0x76, 0x2, 0x2, 0x5fa, 0x5fb, - 0x7, 0x35, 0x2, 0x2, 0x5fb, 0x5fc, 0x7, 0x7a, 0x2, 0x2, 0x5fc, 0x5fd, - 0x7, 0x34, 0x2, 0x2, 0x5fd, 0xa2, 0x3, 0x2, 0x2, 0x2, 0x5fe, 0x5ff, - 0x7, 0x68, 0x2, 0x2, 0x5ff, 0x600, 0x7, 0x6e, 0x2, 0x2, 0x600, 0x601, - 0x7, 0x71, 0x2, 0x2, 0x601, 0x602, 0x7, 0x63, 0x2, 0x2, 0x602, 0x603, - 0x7, 0x76, 0x2, 0x2, 0x603, 0x604, 0x7, 0x35, 0x2, 0x2, 0x604, 0x605, - 0x7, 0x7a, 0x2, 0x2, 0x605, 0x606, 0x7, 0x35, 0x2, 0x2, 0x606, 0xa4, - 0x3, 0x2, 0x2, 0x2, 0x607, 0x608, 0x7, 0x68, 0x2, 0x2, 0x608, 0x609, - 0x7, 0x6e, 0x2, 0x2, 0x609, 0x60a, 0x7, 0x71, 0x2, 0x2, 0x60a, 0x60b, - 0x7, 0x63, 0x2, 0x2, 0x60b, 0x60c, 0x7, 0x76, 0x2, 0x2, 0x60c, 0x60d, - 0x7, 0x35, 0x2, 0x2, 0x60d, 0x60e, 0x7, 0x7a, 0x2, 0x2, 0x60e, 0x60f, - 0x7, 0x36, 0x2, 0x2, 0x60f, 0xa6, 0x3, 0x2, 0x2, 0x2, 0x610, 0x611, - 0x7, 0x68, 0x2, 0x2, 0x611, 0x612, 0x7, 0x6e, 0x2, 0x2, 0x612, 0x613, - 0x7, 0x71, 0x2, 0x2, 0x613, 0x614, 0x7, 0x63, 0x2, 0x2, 0x614, 0x615, - 0x7, 0x76, 0x2, 0x2, 0x615, 0x616, 0x7, 0x36, 0x2, 0x2, 0x616, 0x617, - 0x7, 0x7a, 0x2, 0x2, 0x617, 0x618, 0x7, 0x33, 0x2, 0x2, 0x618, 0xa8, - 0x3, 0x2, 0x2, 0x2, 0x619, 0x61a, 0x7, 0x68, 0x2, 0x2, 0x61a, 0x61b, - 0x7, 0x6e, 0x2, 0x2, 0x61b, 0x61c, 0x7, 0x71, 0x2, 0x2, 0x61c, 0x61d, - 0x7, 0x63, 0x2, 0x2, 0x61d, 0x61e, 0x7, 0x76, 0x2, 0x2, 0x61e, 0x61f, - 0x7, 0x36, 0x2, 0x2, 0x61f, 0x620, 0x7, 0x7a, 0x2, 0x2, 0x620, 0x621, - 0x7, 0x34, 0x2, 0x2, 0x621, 0xaa, 0x3, 0x2, 0x2, 0x2, 0x622, 0x623, - 0x7, 0x68, 0x2, 0x2, 0x623, 0x624, 0x7, 0x6e, 0x2, 0x2, 0x624, 0x625, - 0x7, 0x71, 0x2, 0x2, 0x625, 0x626, 0x7, 0x63, 0x2, 0x2, 0x626, 0x627, - 0x7, 0x76, 0x2, 0x2, 0x627, 0x628, 0x7, 0x36, 0x2, 0x2, 0x628, 0x629, - 0x7, 0x7a, 0x2, 0x2, 0x629, 0x62a, 0x7, 0x35, 0x2, 0x2, 0x62a, 0xac, - 0x3, 0x2, 0x2, 0x2, 0x62b, 0x62c, 0x7, 0x68, 0x2, 0x2, 0x62c, 0x62d, - 0x7, 0x6e, 0x2, 0x2, 0x62d, 0x62e, 0x7, 0x71, 0x2, 0x2, 0x62e, 0x62f, - 0x7, 0x63, 0x2, 0x2, 0x62f, 0x630, 0x7, 0x76, 0x2, 0x2, 0x630, 0x631, - 0x7, 0x36, 0x2, 0x2, 0x631, 0x632, 0x7, 0x7a, 0x2, 0x2, 0x632, 0x633, - 0x7, 0x36, 0x2, 0x2, 0x633, 0xae, 0x3, 0x2, 0x2, 0x2, 0x634, 0x635, - 0x7, 0x68, 0x2, 0x2, 0x635, 0x636, 0x7, 0x71, 0x2, 0x2, 0x636, 0x637, - 0x7, 0x74, 0x2, 0x2, 0x637, 0xb0, 0x3, 0x2, 0x2, 0x2, 0x638, 0x639, - 0x7, 0x69, 0x2, 0x2, 0x639, 0x63a, 0x7, 0x74, 0x2, 0x2, 0x63a, 0x63b, - 0x7, 0x71, 0x2, 0x2, 0x63b, 0x63c, 0x7, 0x77, 0x2, 0x2, 0x63c, 0x63d, - 0x7, 0x72, 0x2, 0x2, 0x63d, 0x63e, 0x7, 0x75, 0x2, 0x2, 0x63e, 0x63f, - 0x7, 0x6a, 0x2, 0x2, 0x63f, 0x640, 0x7, 0x63, 0x2, 0x2, 0x640, 0x641, - 0x7, 0x74, 0x2, 0x2, 0x641, 0x642, 0x7, 0x67, 0x2, 0x2, 0x642, 0x643, - 0x7, 0x66, 0x2, 0x2, 0x643, 0xb2, 0x3, 0x2, 0x2, 0x2, 0x644, 0x645, - 0x7, 0x69, 0x2, 0x2, 0x645, 0x646, 0x7, 0x6e, 0x2, 0x2, 0x646, 0x647, - 0x7, 0x71, 0x2, 0x2, 0x647, 0x648, 0x7, 0x64, 0x2, 0x2, 0x648, 0x649, - 0x7, 0x63, 0x2, 0x2, 0x649, 0x64a, 0x7, 0x6e, 0x2, 0x2, 0x64a, 0xb4, - 0x3, 0x2, 0x2, 0x2, 0x64b, 0x64c, 0x7, 0x6a, 0x2, 0x2, 0x64c, 0x64d, - 0x7, 0x63, 0x2, 0x2, 0x64d, 0x64e, 0x7, 0x6e, 0x2, 0x2, 0x64e, 0x64f, - 0x7, 0x68, 0x2, 0x2, 0x64f, 0xb6, 0x3, 0x2, 0x2, 0x2, 0x650, 0x651, - 0x7, 0x6a, 0x2, 0x2, 0x651, 0x652, 0x7, 0x63, 0x2, 0x2, 0x652, 0x653, - 0x7, 0x6e, 0x2, 0x2, 0x653, 0x654, 0x7, 0x68, 0x2, 0x2, 0x654, 0x655, - 0x7, 0x33, 0x2, 0x2, 0x655, 0xb8, 0x3, 0x2, 0x2, 0x2, 0x656, 0x657, - 0x7, 0x6a, 0x2, 0x2, 0x657, 0x658, 0x7, 0x63, 0x2, 0x2, 0x658, 0x659, - 0x7, 0x6e, 0x2, 0x2, 0x659, 0x65a, 0x7, 0x68, 0x2, 0x2, 0x65a, 0x65b, - 0x7, 0x34, 0x2, 0x2, 0x65b, 0xba, 0x3, 0x2, 0x2, 0x2, 0x65c, 0x65d, - 0x7, 0x6a, 0x2, 0x2, 0x65d, 0x65e, 0x7, 0x63, 0x2, 0x2, 0x65e, 0x65f, - 0x7, 0x6e, 0x2, 0x2, 0x65f, 0x660, 0x7, 0x68, 0x2, 0x2, 0x660, 0x661, - 0x7, 0x35, 0x2, 0x2, 0x661, 0xbc, 0x3, 0x2, 0x2, 0x2, 0x662, 0x663, - 0x7, 0x6a, 0x2, 0x2, 0x663, 0x664, 0x7, 0x63, 0x2, 0x2, 0x664, 0x665, - 0x7, 0x6e, 0x2, 0x2, 0x665, 0x666, 0x7, 0x68, 0x2, 0x2, 0x666, 0x667, - 0x7, 0x36, 0x2, 0x2, 0x667, 0xbe, 0x3, 0x2, 0x2, 0x2, 0x668, 0x669, - 0x7, 0x6a, 0x2, 0x2, 0x669, 0x66a, 0x7, 0x63, 0x2, 0x2, 0x66a, 0x66b, - 0x7, 0x6e, 0x2, 0x2, 0x66b, 0x66c, 0x7, 0x68, 0x2, 0x2, 0x66c, 0x66d, - 0x7, 0x33, 0x2, 0x2, 0x66d, 0x66e, 0x7, 0x7a, 0x2, 0x2, 0x66e, 0x66f, - 0x7, 0x33, 0x2, 0x2, 0x66f, 0xc0, 0x3, 0x2, 0x2, 0x2, 0x670, 0x671, - 0x7, 0x6a, 0x2, 0x2, 0x671, 0x672, 0x7, 0x63, 0x2, 0x2, 0x672, 0x673, - 0x7, 0x6e, 0x2, 0x2, 0x673, 0x674, 0x7, 0x68, 0x2, 0x2, 0x674, 0x675, - 0x7, 0x33, 0x2, 0x2, 0x675, 0x676, 0x7, 0x7a, 0x2, 0x2, 0x676, 0x677, - 0x7, 0x34, 0x2, 0x2, 0x677, 0xc2, 0x3, 0x2, 0x2, 0x2, 0x678, 0x679, + 0x7, 0x35, 0x2, 0x2, 0x5b3, 0x8e, 0x3, 0x2, 0x2, 0x2, 0x5b4, 0x5b5, + 0x7, 0x68, 0x2, 0x2, 0x5b5, 0x5b6, 0x7, 0x6e, 0x2, 0x2, 0x5b6, 0x5b7, + 0x7, 0x71, 0x2, 0x2, 0x5b7, 0x5b8, 0x7, 0x63, 0x2, 0x2, 0x5b8, 0x5b9, + 0x7, 0x76, 0x2, 0x2, 0x5b9, 0x5ba, 0x7, 0x36, 0x2, 0x2, 0x5ba, 0x90, + 0x3, 0x2, 0x2, 0x2, 0x5bb, 0x5bc, 0x7, 0x68, 0x2, 0x2, 0x5bc, 0x5bd, + 0x7, 0x6e, 0x2, 0x2, 0x5bd, 0x5be, 0x7, 0x71, 0x2, 0x2, 0x5be, 0x5bf, + 0x7, 0x63, 0x2, 0x2, 0x5bf, 0x5c0, 0x7, 0x76, 0x2, 0x2, 0x5c0, 0x5c1, + 0x7, 0x33, 0x2, 0x2, 0x5c1, 0x5c2, 0x7, 0x7a, 0x2, 0x2, 0x5c2, 0x5c3, + 0x7, 0x33, 0x2, 0x2, 0x5c3, 0x92, 0x3, 0x2, 0x2, 0x2, 0x5c4, 0x5c5, + 0x7, 0x68, 0x2, 0x2, 0x5c5, 0x5c6, 0x7, 0x6e, 0x2, 0x2, 0x5c6, 0x5c7, + 0x7, 0x71, 0x2, 0x2, 0x5c7, 0x5c8, 0x7, 0x63, 0x2, 0x2, 0x5c8, 0x5c9, + 0x7, 0x76, 0x2, 0x2, 0x5c9, 0x5ca, 0x7, 0x33, 0x2, 0x2, 0x5ca, 0x5cb, + 0x7, 0x7a, 0x2, 0x2, 0x5cb, 0x5cc, 0x7, 0x34, 0x2, 0x2, 0x5cc, 0x94, + 0x3, 0x2, 0x2, 0x2, 0x5cd, 0x5ce, 0x7, 0x68, 0x2, 0x2, 0x5ce, 0x5cf, + 0x7, 0x6e, 0x2, 0x2, 0x5cf, 0x5d0, 0x7, 0x71, 0x2, 0x2, 0x5d0, 0x5d1, + 0x7, 0x63, 0x2, 0x2, 0x5d1, 0x5d2, 0x7, 0x76, 0x2, 0x2, 0x5d2, 0x5d3, + 0x7, 0x33, 0x2, 0x2, 0x5d3, 0x5d4, 0x7, 0x7a, 0x2, 0x2, 0x5d4, 0x5d5, + 0x7, 0x35, 0x2, 0x2, 0x5d5, 0x96, 0x3, 0x2, 0x2, 0x2, 0x5d6, 0x5d7, + 0x7, 0x68, 0x2, 0x2, 0x5d7, 0x5d8, 0x7, 0x6e, 0x2, 0x2, 0x5d8, 0x5d9, + 0x7, 0x71, 0x2, 0x2, 0x5d9, 0x5da, 0x7, 0x63, 0x2, 0x2, 0x5da, 0x5db, + 0x7, 0x76, 0x2, 0x2, 0x5db, 0x5dc, 0x7, 0x33, 0x2, 0x2, 0x5dc, 0x5dd, + 0x7, 0x7a, 0x2, 0x2, 0x5dd, 0x5de, 0x7, 0x36, 0x2, 0x2, 0x5de, 0x98, + 0x3, 0x2, 0x2, 0x2, 0x5df, 0x5e0, 0x7, 0x68, 0x2, 0x2, 0x5e0, 0x5e1, + 0x7, 0x6e, 0x2, 0x2, 0x5e1, 0x5e2, 0x7, 0x71, 0x2, 0x2, 0x5e2, 0x5e3, + 0x7, 0x63, 0x2, 0x2, 0x5e3, 0x5e4, 0x7, 0x76, 0x2, 0x2, 0x5e4, 0x5e5, + 0x7, 0x34, 0x2, 0x2, 0x5e5, 0x5e6, 0x7, 0x7a, 0x2, 0x2, 0x5e6, 0x5e7, + 0x7, 0x33, 0x2, 0x2, 0x5e7, 0x9a, 0x3, 0x2, 0x2, 0x2, 0x5e8, 0x5e9, + 0x7, 0x68, 0x2, 0x2, 0x5e9, 0x5ea, 0x7, 0x6e, 0x2, 0x2, 0x5ea, 0x5eb, + 0x7, 0x71, 0x2, 0x2, 0x5eb, 0x5ec, 0x7, 0x63, 0x2, 0x2, 0x5ec, 0x5ed, + 0x7, 0x76, 0x2, 0x2, 0x5ed, 0x5ee, 0x7, 0x34, 0x2, 0x2, 0x5ee, 0x5ef, + 0x7, 0x7a, 0x2, 0x2, 0x5ef, 0x5f0, 0x7, 0x34, 0x2, 0x2, 0x5f0, 0x9c, + 0x3, 0x2, 0x2, 0x2, 0x5f1, 0x5f2, 0x7, 0x68, 0x2, 0x2, 0x5f2, 0x5f3, + 0x7, 0x6e, 0x2, 0x2, 0x5f3, 0x5f4, 0x7, 0x71, 0x2, 0x2, 0x5f4, 0x5f5, + 0x7, 0x63, 0x2, 0x2, 0x5f5, 0x5f6, 0x7, 0x76, 0x2, 0x2, 0x5f6, 0x5f7, + 0x7, 0x34, 0x2, 0x2, 0x5f7, 0x5f8, 0x7, 0x7a, 0x2, 0x2, 0x5f8, 0x5f9, + 0x7, 0x35, 0x2, 0x2, 0x5f9, 0x9e, 0x3, 0x2, 0x2, 0x2, 0x5fa, 0x5fb, + 0x7, 0x68, 0x2, 0x2, 0x5fb, 0x5fc, 0x7, 0x6e, 0x2, 0x2, 0x5fc, 0x5fd, + 0x7, 0x71, 0x2, 0x2, 0x5fd, 0x5fe, 0x7, 0x63, 0x2, 0x2, 0x5fe, 0x5ff, + 0x7, 0x76, 0x2, 0x2, 0x5ff, 0x600, 0x7, 0x34, 0x2, 0x2, 0x600, 0x601, + 0x7, 0x7a, 0x2, 0x2, 0x601, 0x602, 0x7, 0x36, 0x2, 0x2, 0x602, 0xa0, + 0x3, 0x2, 0x2, 0x2, 0x603, 0x604, 0x7, 0x68, 0x2, 0x2, 0x604, 0x605, + 0x7, 0x6e, 0x2, 0x2, 0x605, 0x606, 0x7, 0x71, 0x2, 0x2, 0x606, 0x607, + 0x7, 0x63, 0x2, 0x2, 0x607, 0x608, 0x7, 0x76, 0x2, 0x2, 0x608, 0x609, + 0x7, 0x35, 0x2, 0x2, 0x609, 0x60a, 0x7, 0x7a, 0x2, 0x2, 0x60a, 0x60b, + 0x7, 0x33, 0x2, 0x2, 0x60b, 0xa2, 0x3, 0x2, 0x2, 0x2, 0x60c, 0x60d, + 0x7, 0x68, 0x2, 0x2, 0x60d, 0x60e, 0x7, 0x6e, 0x2, 0x2, 0x60e, 0x60f, + 0x7, 0x71, 0x2, 0x2, 0x60f, 0x610, 0x7, 0x63, 0x2, 0x2, 0x610, 0x611, + 0x7, 0x76, 0x2, 0x2, 0x611, 0x612, 0x7, 0x35, 0x2, 0x2, 0x612, 0x613, + 0x7, 0x7a, 0x2, 0x2, 0x613, 0x614, 0x7, 0x34, 0x2, 0x2, 0x614, 0xa4, + 0x3, 0x2, 0x2, 0x2, 0x615, 0x616, 0x7, 0x68, 0x2, 0x2, 0x616, 0x617, + 0x7, 0x6e, 0x2, 0x2, 0x617, 0x618, 0x7, 0x71, 0x2, 0x2, 0x618, 0x619, + 0x7, 0x63, 0x2, 0x2, 0x619, 0x61a, 0x7, 0x76, 0x2, 0x2, 0x61a, 0x61b, + 0x7, 0x35, 0x2, 0x2, 0x61b, 0x61c, 0x7, 0x7a, 0x2, 0x2, 0x61c, 0x61d, + 0x7, 0x35, 0x2, 0x2, 0x61d, 0xa6, 0x3, 0x2, 0x2, 0x2, 0x61e, 0x61f, + 0x7, 0x68, 0x2, 0x2, 0x61f, 0x620, 0x7, 0x6e, 0x2, 0x2, 0x620, 0x621, + 0x7, 0x71, 0x2, 0x2, 0x621, 0x622, 0x7, 0x63, 0x2, 0x2, 0x622, 0x623, + 0x7, 0x76, 0x2, 0x2, 0x623, 0x624, 0x7, 0x35, 0x2, 0x2, 0x624, 0x625, + 0x7, 0x7a, 0x2, 0x2, 0x625, 0x626, 0x7, 0x36, 0x2, 0x2, 0x626, 0xa8, + 0x3, 0x2, 0x2, 0x2, 0x627, 0x628, 0x7, 0x68, 0x2, 0x2, 0x628, 0x629, + 0x7, 0x6e, 0x2, 0x2, 0x629, 0x62a, 0x7, 0x71, 0x2, 0x2, 0x62a, 0x62b, + 0x7, 0x63, 0x2, 0x2, 0x62b, 0x62c, 0x7, 0x76, 0x2, 0x2, 0x62c, 0x62d, + 0x7, 0x36, 0x2, 0x2, 0x62d, 0x62e, 0x7, 0x7a, 0x2, 0x2, 0x62e, 0x62f, + 0x7, 0x33, 0x2, 0x2, 0x62f, 0xaa, 0x3, 0x2, 0x2, 0x2, 0x630, 0x631, + 0x7, 0x68, 0x2, 0x2, 0x631, 0x632, 0x7, 0x6e, 0x2, 0x2, 0x632, 0x633, + 0x7, 0x71, 0x2, 0x2, 0x633, 0x634, 0x7, 0x63, 0x2, 0x2, 0x634, 0x635, + 0x7, 0x76, 0x2, 0x2, 0x635, 0x636, 0x7, 0x36, 0x2, 0x2, 0x636, 0x637, + 0x7, 0x7a, 0x2, 0x2, 0x637, 0x638, 0x7, 0x34, 0x2, 0x2, 0x638, 0xac, + 0x3, 0x2, 0x2, 0x2, 0x639, 0x63a, 0x7, 0x68, 0x2, 0x2, 0x63a, 0x63b, + 0x7, 0x6e, 0x2, 0x2, 0x63b, 0x63c, 0x7, 0x71, 0x2, 0x2, 0x63c, 0x63d, + 0x7, 0x63, 0x2, 0x2, 0x63d, 0x63e, 0x7, 0x76, 0x2, 0x2, 0x63e, 0x63f, + 0x7, 0x36, 0x2, 0x2, 0x63f, 0x640, 0x7, 0x7a, 0x2, 0x2, 0x640, 0x641, + 0x7, 0x35, 0x2, 0x2, 0x641, 0xae, 0x3, 0x2, 0x2, 0x2, 0x642, 0x643, + 0x7, 0x68, 0x2, 0x2, 0x643, 0x644, 0x7, 0x6e, 0x2, 0x2, 0x644, 0x645, + 0x7, 0x71, 0x2, 0x2, 0x645, 0x646, 0x7, 0x63, 0x2, 0x2, 0x646, 0x647, + 0x7, 0x76, 0x2, 0x2, 0x647, 0x648, 0x7, 0x36, 0x2, 0x2, 0x648, 0x649, + 0x7, 0x7a, 0x2, 0x2, 0x649, 0x64a, 0x7, 0x36, 0x2, 0x2, 0x64a, 0xb0, + 0x3, 0x2, 0x2, 0x2, 0x64b, 0x64c, 0x7, 0x68, 0x2, 0x2, 0x64c, 0x64d, + 0x7, 0x71, 0x2, 0x2, 0x64d, 0x64e, 0x7, 0x74, 0x2, 0x2, 0x64e, 0xb2, + 0x3, 0x2, 0x2, 0x2, 0x64f, 0x650, 0x7, 0x69, 0x2, 0x2, 0x650, 0x651, + 0x7, 0x74, 0x2, 0x2, 0x651, 0x652, 0x7, 0x71, 0x2, 0x2, 0x652, 0x653, + 0x7, 0x77, 0x2, 0x2, 0x653, 0x654, 0x7, 0x72, 0x2, 0x2, 0x654, 0x655, + 0x7, 0x75, 0x2, 0x2, 0x655, 0x656, 0x7, 0x6a, 0x2, 0x2, 0x656, 0x657, + 0x7, 0x63, 0x2, 0x2, 0x657, 0x658, 0x7, 0x74, 0x2, 0x2, 0x658, 0x659, + 0x7, 0x67, 0x2, 0x2, 0x659, 0x65a, 0x7, 0x66, 0x2, 0x2, 0x65a, 0xb4, + 0x3, 0x2, 0x2, 0x2, 0x65b, 0x65c, 0x7, 0x69, 0x2, 0x2, 0x65c, 0x65d, + 0x7, 0x6e, 0x2, 0x2, 0x65d, 0x65e, 0x7, 0x71, 0x2, 0x2, 0x65e, 0x65f, + 0x7, 0x64, 0x2, 0x2, 0x65f, 0x660, 0x7, 0x63, 0x2, 0x2, 0x660, 0x661, + 0x7, 0x6e, 0x2, 0x2, 0x661, 0x662, 0x7, 0x6e, 0x2, 0x2, 0x662, 0x663, + 0x7, 0x7b, 0x2, 0x2, 0x663, 0x664, 0x7, 0x65, 0x2, 0x2, 0x664, 0x665, + 0x7, 0x71, 0x2, 0x2, 0x665, 0x666, 0x7, 0x6a, 0x2, 0x2, 0x666, 0x667, + 0x7, 0x67, 0x2, 0x2, 0x667, 0x668, 0x7, 0x74, 0x2, 0x2, 0x668, 0x669, + 0x7, 0x67, 0x2, 0x2, 0x669, 0x66a, 0x7, 0x70, 0x2, 0x2, 0x66a, 0x66b, + 0x7, 0x76, 0x2, 0x2, 0x66b, 0xb6, 0x3, 0x2, 0x2, 0x2, 0x66c, 0x66d, + 0x7, 0x69, 0x2, 0x2, 0x66d, 0x66e, 0x7, 0x6e, 0x2, 0x2, 0x66e, 0x66f, + 0x7, 0x71, 0x2, 0x2, 0x66f, 0x670, 0x7, 0x64, 0x2, 0x2, 0x670, 0x671, + 0x7, 0x63, 0x2, 0x2, 0x671, 0x672, 0x7, 0x6e, 0x2, 0x2, 0x672, 0xb8, + 0x3, 0x2, 0x2, 0x2, 0x673, 0x674, 0x7, 0x6a, 0x2, 0x2, 0x674, 0x675, + 0x7, 0x63, 0x2, 0x2, 0x675, 0x676, 0x7, 0x6e, 0x2, 0x2, 0x676, 0x677, + 0x7, 0x68, 0x2, 0x2, 0x677, 0xba, 0x3, 0x2, 0x2, 0x2, 0x678, 0x679, 0x7, 0x6a, 0x2, 0x2, 0x679, 0x67a, 0x7, 0x63, 0x2, 0x2, 0x67a, 0x67b, 0x7, 0x6e, 0x2, 0x2, 0x67b, 0x67c, 0x7, 0x68, 0x2, 0x2, 0x67c, 0x67d, - 0x7, 0x33, 0x2, 0x2, 0x67d, 0x67e, 0x7, 0x7a, 0x2, 0x2, 0x67e, 0x67f, - 0x7, 0x35, 0x2, 0x2, 0x67f, 0xc4, 0x3, 0x2, 0x2, 0x2, 0x680, 0x681, - 0x7, 0x6a, 0x2, 0x2, 0x681, 0x682, 0x7, 0x63, 0x2, 0x2, 0x682, 0x683, - 0x7, 0x6e, 0x2, 0x2, 0x683, 0x684, 0x7, 0x68, 0x2, 0x2, 0x684, 0x685, - 0x7, 0x33, 0x2, 0x2, 0x685, 0x686, 0x7, 0x7a, 0x2, 0x2, 0x686, 0x687, - 0x7, 0x36, 0x2, 0x2, 0x687, 0xc6, 0x3, 0x2, 0x2, 0x2, 0x688, 0x689, - 0x7, 0x6a, 0x2, 0x2, 0x689, 0x68a, 0x7, 0x63, 0x2, 0x2, 0x68a, 0x68b, - 0x7, 0x6e, 0x2, 0x2, 0x68b, 0x68c, 0x7, 0x68, 0x2, 0x2, 0x68c, 0x68d, - 0x7, 0x34, 0x2, 0x2, 0x68d, 0x68e, 0x7, 0x7a, 0x2, 0x2, 0x68e, 0x68f, - 0x7, 0x33, 0x2, 0x2, 0x68f, 0xc8, 0x3, 0x2, 0x2, 0x2, 0x690, 0x691, + 0x7, 0x33, 0x2, 0x2, 0x67d, 0xbc, 0x3, 0x2, 0x2, 0x2, 0x67e, 0x67f, + 0x7, 0x6a, 0x2, 0x2, 0x67f, 0x680, 0x7, 0x63, 0x2, 0x2, 0x680, 0x681, + 0x7, 0x6e, 0x2, 0x2, 0x681, 0x682, 0x7, 0x68, 0x2, 0x2, 0x682, 0x683, + 0x7, 0x34, 0x2, 0x2, 0x683, 0xbe, 0x3, 0x2, 0x2, 0x2, 0x684, 0x685, + 0x7, 0x6a, 0x2, 0x2, 0x685, 0x686, 0x7, 0x63, 0x2, 0x2, 0x686, 0x687, + 0x7, 0x6e, 0x2, 0x2, 0x687, 0x688, 0x7, 0x68, 0x2, 0x2, 0x688, 0x689, + 0x7, 0x35, 0x2, 0x2, 0x689, 0xc0, 0x3, 0x2, 0x2, 0x2, 0x68a, 0x68b, + 0x7, 0x6a, 0x2, 0x2, 0x68b, 0x68c, 0x7, 0x63, 0x2, 0x2, 0x68c, 0x68d, + 0x7, 0x6e, 0x2, 0x2, 0x68d, 0x68e, 0x7, 0x68, 0x2, 0x2, 0x68e, 0x68f, + 0x7, 0x36, 0x2, 0x2, 0x68f, 0xc2, 0x3, 0x2, 0x2, 0x2, 0x690, 0x691, 0x7, 0x6a, 0x2, 0x2, 0x691, 0x692, 0x7, 0x63, 0x2, 0x2, 0x692, 0x693, 0x7, 0x6e, 0x2, 0x2, 0x693, 0x694, 0x7, 0x68, 0x2, 0x2, 0x694, 0x695, - 0x7, 0x34, 0x2, 0x2, 0x695, 0x696, 0x7, 0x7a, 0x2, 0x2, 0x696, 0x697, - 0x7, 0x34, 0x2, 0x2, 0x697, 0xca, 0x3, 0x2, 0x2, 0x2, 0x698, 0x699, + 0x7, 0x33, 0x2, 0x2, 0x695, 0x696, 0x7, 0x7a, 0x2, 0x2, 0x696, 0x697, + 0x7, 0x33, 0x2, 0x2, 0x697, 0xc4, 0x3, 0x2, 0x2, 0x2, 0x698, 0x699, 0x7, 0x6a, 0x2, 0x2, 0x699, 0x69a, 0x7, 0x63, 0x2, 0x2, 0x69a, 0x69b, 0x7, 0x6e, 0x2, 0x2, 0x69b, 0x69c, 0x7, 0x68, 0x2, 0x2, 0x69c, 0x69d, - 0x7, 0x34, 0x2, 0x2, 0x69d, 0x69e, 0x7, 0x7a, 0x2, 0x2, 0x69e, 0x69f, - 0x7, 0x35, 0x2, 0x2, 0x69f, 0xcc, 0x3, 0x2, 0x2, 0x2, 0x6a0, 0x6a1, + 0x7, 0x33, 0x2, 0x2, 0x69d, 0x69e, 0x7, 0x7a, 0x2, 0x2, 0x69e, 0x69f, + 0x7, 0x34, 0x2, 0x2, 0x69f, 0xc6, 0x3, 0x2, 0x2, 0x2, 0x6a0, 0x6a1, 0x7, 0x6a, 0x2, 0x2, 0x6a1, 0x6a2, 0x7, 0x63, 0x2, 0x2, 0x6a2, 0x6a3, 0x7, 0x6e, 0x2, 0x2, 0x6a3, 0x6a4, 0x7, 0x68, 0x2, 0x2, 0x6a4, 0x6a5, - 0x7, 0x34, 0x2, 0x2, 0x6a5, 0x6a6, 0x7, 0x7a, 0x2, 0x2, 0x6a6, 0x6a7, - 0x7, 0x36, 0x2, 0x2, 0x6a7, 0xce, 0x3, 0x2, 0x2, 0x2, 0x6a8, 0x6a9, + 0x7, 0x33, 0x2, 0x2, 0x6a5, 0x6a6, 0x7, 0x7a, 0x2, 0x2, 0x6a6, 0x6a7, + 0x7, 0x35, 0x2, 0x2, 0x6a7, 0xc8, 0x3, 0x2, 0x2, 0x2, 0x6a8, 0x6a9, 0x7, 0x6a, 0x2, 0x2, 0x6a9, 0x6aa, 0x7, 0x63, 0x2, 0x2, 0x6aa, 0x6ab, 0x7, 0x6e, 0x2, 0x2, 0x6ab, 0x6ac, 0x7, 0x68, 0x2, 0x2, 0x6ac, 0x6ad, - 0x7, 0x35, 0x2, 0x2, 0x6ad, 0x6ae, 0x7, 0x7a, 0x2, 0x2, 0x6ae, 0x6af, - 0x7, 0x33, 0x2, 0x2, 0x6af, 0xd0, 0x3, 0x2, 0x2, 0x2, 0x6b0, 0x6b1, + 0x7, 0x33, 0x2, 0x2, 0x6ad, 0x6ae, 0x7, 0x7a, 0x2, 0x2, 0x6ae, 0x6af, + 0x7, 0x36, 0x2, 0x2, 0x6af, 0xca, 0x3, 0x2, 0x2, 0x2, 0x6b0, 0x6b1, 0x7, 0x6a, 0x2, 0x2, 0x6b1, 0x6b2, 0x7, 0x63, 0x2, 0x2, 0x6b2, 0x6b3, 0x7, 0x6e, 0x2, 0x2, 0x6b3, 0x6b4, 0x7, 0x68, 0x2, 0x2, 0x6b4, 0x6b5, - 0x7, 0x35, 0x2, 0x2, 0x6b5, 0x6b6, 0x7, 0x7a, 0x2, 0x2, 0x6b6, 0x6b7, - 0x7, 0x34, 0x2, 0x2, 0x6b7, 0xd2, 0x3, 0x2, 0x2, 0x2, 0x6b8, 0x6b9, + 0x7, 0x34, 0x2, 0x2, 0x6b5, 0x6b6, 0x7, 0x7a, 0x2, 0x2, 0x6b6, 0x6b7, + 0x7, 0x33, 0x2, 0x2, 0x6b7, 0xcc, 0x3, 0x2, 0x2, 0x2, 0x6b8, 0x6b9, 0x7, 0x6a, 0x2, 0x2, 0x6b9, 0x6ba, 0x7, 0x63, 0x2, 0x2, 0x6ba, 0x6bb, 0x7, 0x6e, 0x2, 0x2, 0x6bb, 0x6bc, 0x7, 0x68, 0x2, 0x2, 0x6bc, 0x6bd, - 0x7, 0x35, 0x2, 0x2, 0x6bd, 0x6be, 0x7, 0x7a, 0x2, 0x2, 0x6be, 0x6bf, - 0x7, 0x35, 0x2, 0x2, 0x6bf, 0xd4, 0x3, 0x2, 0x2, 0x2, 0x6c0, 0x6c1, + 0x7, 0x34, 0x2, 0x2, 0x6bd, 0x6be, 0x7, 0x7a, 0x2, 0x2, 0x6be, 0x6bf, + 0x7, 0x34, 0x2, 0x2, 0x6bf, 0xce, 0x3, 0x2, 0x2, 0x2, 0x6c0, 0x6c1, 0x7, 0x6a, 0x2, 0x2, 0x6c1, 0x6c2, 0x7, 0x63, 0x2, 0x2, 0x6c2, 0x6c3, 0x7, 0x6e, 0x2, 0x2, 0x6c3, 0x6c4, 0x7, 0x68, 0x2, 0x2, 0x6c4, 0x6c5, - 0x7, 0x35, 0x2, 0x2, 0x6c5, 0x6c6, 0x7, 0x7a, 0x2, 0x2, 0x6c6, 0x6c7, - 0x7, 0x36, 0x2, 0x2, 0x6c7, 0xd6, 0x3, 0x2, 0x2, 0x2, 0x6c8, 0x6c9, + 0x7, 0x34, 0x2, 0x2, 0x6c5, 0x6c6, 0x7, 0x7a, 0x2, 0x2, 0x6c6, 0x6c7, + 0x7, 0x35, 0x2, 0x2, 0x6c7, 0xd0, 0x3, 0x2, 0x2, 0x2, 0x6c8, 0x6c9, 0x7, 0x6a, 0x2, 0x2, 0x6c9, 0x6ca, 0x7, 0x63, 0x2, 0x2, 0x6ca, 0x6cb, 0x7, 0x6e, 0x2, 0x2, 0x6cb, 0x6cc, 0x7, 0x68, 0x2, 0x2, 0x6cc, 0x6cd, - 0x7, 0x36, 0x2, 0x2, 0x6cd, 0x6ce, 0x7, 0x7a, 0x2, 0x2, 0x6ce, 0x6cf, - 0x7, 0x33, 0x2, 0x2, 0x6cf, 0xd8, 0x3, 0x2, 0x2, 0x2, 0x6d0, 0x6d1, + 0x7, 0x34, 0x2, 0x2, 0x6cd, 0x6ce, 0x7, 0x7a, 0x2, 0x2, 0x6ce, 0x6cf, + 0x7, 0x36, 0x2, 0x2, 0x6cf, 0xd2, 0x3, 0x2, 0x2, 0x2, 0x6d0, 0x6d1, 0x7, 0x6a, 0x2, 0x2, 0x6d1, 0x6d2, 0x7, 0x63, 0x2, 0x2, 0x6d2, 0x6d3, 0x7, 0x6e, 0x2, 0x2, 0x6d3, 0x6d4, 0x7, 0x68, 0x2, 0x2, 0x6d4, 0x6d5, - 0x7, 0x36, 0x2, 0x2, 0x6d5, 0x6d6, 0x7, 0x7a, 0x2, 0x2, 0x6d6, 0x6d7, - 0x7, 0x34, 0x2, 0x2, 0x6d7, 0xda, 0x3, 0x2, 0x2, 0x2, 0x6d8, 0x6d9, + 0x7, 0x35, 0x2, 0x2, 0x6d5, 0x6d6, 0x7, 0x7a, 0x2, 0x2, 0x6d6, 0x6d7, + 0x7, 0x33, 0x2, 0x2, 0x6d7, 0xd4, 0x3, 0x2, 0x2, 0x2, 0x6d8, 0x6d9, 0x7, 0x6a, 0x2, 0x2, 0x6d9, 0x6da, 0x7, 0x63, 0x2, 0x2, 0x6da, 0x6db, 0x7, 0x6e, 0x2, 0x2, 0x6db, 0x6dc, 0x7, 0x68, 0x2, 0x2, 0x6dc, 0x6dd, - 0x7, 0x36, 0x2, 0x2, 0x6dd, 0x6de, 0x7, 0x7a, 0x2, 0x2, 0x6de, 0x6df, - 0x7, 0x35, 0x2, 0x2, 0x6df, 0xdc, 0x3, 0x2, 0x2, 0x2, 0x6e0, 0x6e1, + 0x7, 0x35, 0x2, 0x2, 0x6dd, 0x6de, 0x7, 0x7a, 0x2, 0x2, 0x6de, 0x6df, + 0x7, 0x34, 0x2, 0x2, 0x6df, 0xd6, 0x3, 0x2, 0x2, 0x2, 0x6e0, 0x6e1, 0x7, 0x6a, 0x2, 0x2, 0x6e1, 0x6e2, 0x7, 0x63, 0x2, 0x2, 0x6e2, 0x6e3, 0x7, 0x6e, 0x2, 0x2, 0x6e3, 0x6e4, 0x7, 0x68, 0x2, 0x2, 0x6e4, 0x6e5, - 0x7, 0x36, 0x2, 0x2, 0x6e5, 0x6e6, 0x7, 0x7a, 0x2, 0x2, 0x6e6, 0x6e7, - 0x7, 0x36, 0x2, 0x2, 0x6e7, 0xde, 0x3, 0x2, 0x2, 0x2, 0x6e8, 0x6e9, - 0x7, 0x6b, 0x2, 0x2, 0x6e9, 0x6ea, 0x7, 0x68, 0x2, 0x2, 0x6ea, 0xe0, - 0x3, 0x2, 0x2, 0x2, 0x6eb, 0x6ec, 0x7, 0x6b, 0x2, 0x2, 0x6ec, 0x6ed, - 0x7, 0x70, 0x2, 0x2, 0x6ed, 0xe2, 0x3, 0x2, 0x2, 0x2, 0x6ee, 0x6ef, - 0x7, 0x6b, 0x2, 0x2, 0x6ef, 0x6f0, 0x7, 0x70, 0x2, 0x2, 0x6f0, 0x6f1, - 0x7, 0x6e, 0x2, 0x2, 0x6f1, 0x6f2, 0x7, 0x6b, 0x2, 0x2, 0x6f2, 0x6f3, - 0x7, 0x70, 0x2, 0x2, 0x6f3, 0x6f4, 0x7, 0x67, 0x2, 0x2, 0x6f4, 0xe4, - 0x3, 0x2, 0x2, 0x2, 0x6f5, 0x6f6, 0x7, 0x74, 0x2, 0x2, 0x6f6, 0x6f7, - 0x7, 0x71, 0x2, 0x2, 0x6f7, 0x6f8, 0x7, 0x71, 0x2, 0x2, 0x6f8, 0x6f9, - 0x7, 0x76, 0x2, 0x2, 0x6f9, 0x6fa, 0x7, 0x65, 0x2, 0x2, 0x6fa, 0x6fb, - 0x7, 0x71, 0x2, 0x2, 0x6fb, 0x6fc, 0x7, 0x70, 0x2, 0x2, 0x6fc, 0x6fd, - 0x7, 0x75, 0x2, 0x2, 0x6fd, 0x6fe, 0x7, 0x76, 0x2, 0x2, 0x6fe, 0x6ff, - 0x7, 0x63, 0x2, 0x2, 0x6ff, 0x700, 0x7, 0x70, 0x2, 0x2, 0x700, 0x701, - 0x7, 0x76, 0x2, 0x2, 0x701, 0xe6, 0x3, 0x2, 0x2, 0x2, 0x702, 0x703, - 0x7, 0x6b, 0x2, 0x2, 0x703, 0x704, 0x7, 0x70, 0x2, 0x2, 0x704, 0x705, - 0x7, 0x71, 0x2, 0x2, 0x705, 0x706, 0x7, 0x77, 0x2, 0x2, 0x706, 0x70e, - 0x7, 0x76, 0x2, 0x2, 0x707, 0x708, 0x7, 0x6b, 0x2, 0x2, 0x708, 0x709, - 0x7, 0x70, 0x2, 0x2, 0x709, 0x70a, 0x7, 0x22, 0x2, 0x2, 0x70a, 0x70b, - 0x7, 0x71, 0x2, 0x2, 0x70b, 0x70c, 0x7, 0x77, 0x2, 0x2, 0x70c, 0x70e, - 0x7, 0x76, 0x2, 0x2, 0x70d, 0x702, 0x3, 0x2, 0x2, 0x2, 0x70d, 0x707, - 0x3, 0x2, 0x2, 0x2, 0x70e, 0xe8, 0x3, 0x2, 0x2, 0x2, 0x70f, 0x710, - 0x7, 0x4b, 0x2, 0x2, 0x710, 0x711, 0x7, 0x70, 0x2, 0x2, 0x711, 0x712, - 0x7, 0x72, 0x2, 0x2, 0x712, 0x713, 0x7, 0x77, 0x2, 0x2, 0x713, 0x714, - 0x7, 0x76, 0x2, 0x2, 0x714, 0x715, 0x7, 0x52, 0x2, 0x2, 0x715, 0x716, - 0x7, 0x63, 0x2, 0x2, 0x716, 0x717, 0x7, 0x76, 0x2, 0x2, 0x717, 0x718, - 0x7, 0x65, 0x2, 0x2, 0x718, 0x719, 0x7, 0x6a, 0x2, 0x2, 0x719, 0xea, - 0x3, 0x2, 0x2, 0x2, 0x71a, 0x71b, 0x7, 0x6b, 0x2, 0x2, 0x71b, 0x71c, - 0x7, 0x70, 0x2, 0x2, 0x71c, 0x71d, 0x7, 0x76, 0x2, 0x2, 0x71d, 0xec, - 0x3, 0x2, 0x2, 0x2, 0x71e, 0x71f, 0x7, 0x6b, 0x2, 0x2, 0x71f, 0x720, - 0x7, 0x70, 0x2, 0x2, 0x720, 0x721, 0x7, 0x76, 0x2, 0x2, 0x721, 0x722, - 0x7, 0x35, 0x2, 0x2, 0x722, 0x723, 0x7, 0x34, 0x2, 0x2, 0x723, 0x724, - 0x7, 0x61, 0x2, 0x2, 0x724, 0x725, 0x7, 0x76, 0x2, 0x2, 0x725, 0xee, - 0x3, 0x2, 0x2, 0x2, 0x726, 0x727, 0x7, 0x6b, 0x2, 0x2, 0x727, 0x728, - 0x7, 0x70, 0x2, 0x2, 0x728, 0x729, 0x7, 0x76, 0x2, 0x2, 0x729, 0x72a, - 0x7, 0x38, 0x2, 0x2, 0x72a, 0x72b, 0x7, 0x36, 0x2, 0x2, 0x72b, 0x72c, - 0x7, 0x61, 0x2, 0x2, 0x72c, 0x72d, 0x7, 0x76, 0x2, 0x2, 0x72d, 0xf0, - 0x3, 0x2, 0x2, 0x2, 0x72e, 0x72f, 0x7, 0x6b, 0x2, 0x2, 0x72f, 0x730, - 0x7, 0x70, 0x2, 0x2, 0x730, 0x731, 0x7, 0x76, 0x2, 0x2, 0x731, 0x732, - 0x7, 0x33, 0x2, 0x2, 0x732, 0xf2, 0x3, 0x2, 0x2, 0x2, 0x733, 0x734, - 0x7, 0x6b, 0x2, 0x2, 0x734, 0x735, 0x7, 0x70, 0x2, 0x2, 0x735, 0x736, - 0x7, 0x76, 0x2, 0x2, 0x736, 0x737, 0x7, 0x34, 0x2, 0x2, 0x737, 0xf4, - 0x3, 0x2, 0x2, 0x2, 0x738, 0x739, 0x7, 0x6b, 0x2, 0x2, 0x739, 0x73a, - 0x7, 0x70, 0x2, 0x2, 0x73a, 0x73b, 0x7, 0x76, 0x2, 0x2, 0x73b, 0x73c, - 0x7, 0x35, 0x2, 0x2, 0x73c, 0xf6, 0x3, 0x2, 0x2, 0x2, 0x73d, 0x73e, - 0x7, 0x6b, 0x2, 0x2, 0x73e, 0x73f, 0x7, 0x70, 0x2, 0x2, 0x73f, 0x740, - 0x7, 0x76, 0x2, 0x2, 0x740, 0x741, 0x7, 0x36, 0x2, 0x2, 0x741, 0xf8, + 0x7, 0x35, 0x2, 0x2, 0x6e5, 0x6e6, 0x7, 0x7a, 0x2, 0x2, 0x6e6, 0x6e7, + 0x7, 0x35, 0x2, 0x2, 0x6e7, 0xd8, 0x3, 0x2, 0x2, 0x2, 0x6e8, 0x6e9, + 0x7, 0x6a, 0x2, 0x2, 0x6e9, 0x6ea, 0x7, 0x63, 0x2, 0x2, 0x6ea, 0x6eb, + 0x7, 0x6e, 0x2, 0x2, 0x6eb, 0x6ec, 0x7, 0x68, 0x2, 0x2, 0x6ec, 0x6ed, + 0x7, 0x35, 0x2, 0x2, 0x6ed, 0x6ee, 0x7, 0x7a, 0x2, 0x2, 0x6ee, 0x6ef, + 0x7, 0x36, 0x2, 0x2, 0x6ef, 0xda, 0x3, 0x2, 0x2, 0x2, 0x6f0, 0x6f1, + 0x7, 0x6a, 0x2, 0x2, 0x6f1, 0x6f2, 0x7, 0x63, 0x2, 0x2, 0x6f2, 0x6f3, + 0x7, 0x6e, 0x2, 0x2, 0x6f3, 0x6f4, 0x7, 0x68, 0x2, 0x2, 0x6f4, 0x6f5, + 0x7, 0x36, 0x2, 0x2, 0x6f5, 0x6f6, 0x7, 0x7a, 0x2, 0x2, 0x6f6, 0x6f7, + 0x7, 0x33, 0x2, 0x2, 0x6f7, 0xdc, 0x3, 0x2, 0x2, 0x2, 0x6f8, 0x6f9, + 0x7, 0x6a, 0x2, 0x2, 0x6f9, 0x6fa, 0x7, 0x63, 0x2, 0x2, 0x6fa, 0x6fb, + 0x7, 0x6e, 0x2, 0x2, 0x6fb, 0x6fc, 0x7, 0x68, 0x2, 0x2, 0x6fc, 0x6fd, + 0x7, 0x36, 0x2, 0x2, 0x6fd, 0x6fe, 0x7, 0x7a, 0x2, 0x2, 0x6fe, 0x6ff, + 0x7, 0x34, 0x2, 0x2, 0x6ff, 0xde, 0x3, 0x2, 0x2, 0x2, 0x700, 0x701, + 0x7, 0x6a, 0x2, 0x2, 0x701, 0x702, 0x7, 0x63, 0x2, 0x2, 0x702, 0x703, + 0x7, 0x6e, 0x2, 0x2, 0x703, 0x704, 0x7, 0x68, 0x2, 0x2, 0x704, 0x705, + 0x7, 0x36, 0x2, 0x2, 0x705, 0x706, 0x7, 0x7a, 0x2, 0x2, 0x706, 0x707, + 0x7, 0x35, 0x2, 0x2, 0x707, 0xe0, 0x3, 0x2, 0x2, 0x2, 0x708, 0x709, + 0x7, 0x6a, 0x2, 0x2, 0x709, 0x70a, 0x7, 0x63, 0x2, 0x2, 0x70a, 0x70b, + 0x7, 0x6e, 0x2, 0x2, 0x70b, 0x70c, 0x7, 0x68, 0x2, 0x2, 0x70c, 0x70d, + 0x7, 0x36, 0x2, 0x2, 0x70d, 0x70e, 0x7, 0x7a, 0x2, 0x2, 0x70e, 0x70f, + 0x7, 0x36, 0x2, 0x2, 0x70f, 0xe2, 0x3, 0x2, 0x2, 0x2, 0x710, 0x711, + 0x7, 0x6b, 0x2, 0x2, 0x711, 0x712, 0x7, 0x68, 0x2, 0x2, 0x712, 0xe4, + 0x3, 0x2, 0x2, 0x2, 0x713, 0x714, 0x7, 0x6b, 0x2, 0x2, 0x714, 0x715, + 0x7, 0x70, 0x2, 0x2, 0x715, 0xe6, 0x3, 0x2, 0x2, 0x2, 0x716, 0x717, + 0x7, 0x6b, 0x2, 0x2, 0x717, 0x718, 0x7, 0x70, 0x2, 0x2, 0x718, 0x719, + 0x7, 0x6e, 0x2, 0x2, 0x719, 0x71a, 0x7, 0x6b, 0x2, 0x2, 0x71a, 0x71b, + 0x7, 0x70, 0x2, 0x2, 0x71b, 0x71c, 0x7, 0x67, 0x2, 0x2, 0x71c, 0xe8, + 0x3, 0x2, 0x2, 0x2, 0x71d, 0x71e, 0x7, 0x74, 0x2, 0x2, 0x71e, 0x71f, + 0x7, 0x71, 0x2, 0x2, 0x71f, 0x720, 0x7, 0x71, 0x2, 0x2, 0x720, 0x721, + 0x7, 0x76, 0x2, 0x2, 0x721, 0x722, 0x7, 0x65, 0x2, 0x2, 0x722, 0x723, + 0x7, 0x71, 0x2, 0x2, 0x723, 0x724, 0x7, 0x70, 0x2, 0x2, 0x724, 0x725, + 0x7, 0x75, 0x2, 0x2, 0x725, 0x726, 0x7, 0x76, 0x2, 0x2, 0x726, 0x727, + 0x7, 0x63, 0x2, 0x2, 0x727, 0x728, 0x7, 0x70, 0x2, 0x2, 0x728, 0x729, + 0x7, 0x76, 0x2, 0x2, 0x729, 0xea, 0x3, 0x2, 0x2, 0x2, 0x72a, 0x72b, + 0x7, 0x6b, 0x2, 0x2, 0x72b, 0x72c, 0x7, 0x70, 0x2, 0x2, 0x72c, 0x72d, + 0x7, 0x71, 0x2, 0x2, 0x72d, 0x72e, 0x7, 0x77, 0x2, 0x2, 0x72e, 0x736, + 0x7, 0x76, 0x2, 0x2, 0x72f, 0x730, 0x7, 0x6b, 0x2, 0x2, 0x730, 0x731, + 0x7, 0x70, 0x2, 0x2, 0x731, 0x732, 0x7, 0x22, 0x2, 0x2, 0x732, 0x733, + 0x7, 0x71, 0x2, 0x2, 0x733, 0x734, 0x7, 0x77, 0x2, 0x2, 0x734, 0x736, + 0x7, 0x76, 0x2, 0x2, 0x735, 0x72a, 0x3, 0x2, 0x2, 0x2, 0x735, 0x72f, + 0x3, 0x2, 0x2, 0x2, 0x736, 0xec, 0x3, 0x2, 0x2, 0x2, 0x737, 0x738, + 0x7, 0x4b, 0x2, 0x2, 0x738, 0x739, 0x7, 0x70, 0x2, 0x2, 0x739, 0x73a, + 0x7, 0x72, 0x2, 0x2, 0x73a, 0x73b, 0x7, 0x77, 0x2, 0x2, 0x73b, 0x73c, + 0x7, 0x76, 0x2, 0x2, 0x73c, 0x73d, 0x7, 0x52, 0x2, 0x2, 0x73d, 0x73e, + 0x7, 0x63, 0x2, 0x2, 0x73e, 0x73f, 0x7, 0x76, 0x2, 0x2, 0x73f, 0x740, + 0x7, 0x65, 0x2, 0x2, 0x740, 0x741, 0x7, 0x6a, 0x2, 0x2, 0x741, 0xee, 0x3, 0x2, 0x2, 0x2, 0x742, 0x743, 0x7, 0x6b, 0x2, 0x2, 0x743, 0x744, - 0x7, 0x70, 0x2, 0x2, 0x744, 0x745, 0x7, 0x76, 0x2, 0x2, 0x745, 0x746, - 0x7, 0x33, 0x2, 0x2, 0x746, 0x747, 0x7, 0x7a, 0x2, 0x2, 0x747, 0x748, - 0x7, 0x33, 0x2, 0x2, 0x748, 0xfa, 0x3, 0x2, 0x2, 0x2, 0x749, 0x74a, - 0x7, 0x6b, 0x2, 0x2, 0x74a, 0x74b, 0x7, 0x70, 0x2, 0x2, 0x74b, 0x74c, - 0x7, 0x76, 0x2, 0x2, 0x74c, 0x74d, 0x7, 0x33, 0x2, 0x2, 0x74d, 0x74e, - 0x7, 0x7a, 0x2, 0x2, 0x74e, 0x74f, 0x7, 0x34, 0x2, 0x2, 0x74f, 0xfc, - 0x3, 0x2, 0x2, 0x2, 0x750, 0x751, 0x7, 0x6b, 0x2, 0x2, 0x751, 0x752, - 0x7, 0x70, 0x2, 0x2, 0x752, 0x753, 0x7, 0x76, 0x2, 0x2, 0x753, 0x754, - 0x7, 0x33, 0x2, 0x2, 0x754, 0x755, 0x7, 0x7a, 0x2, 0x2, 0x755, 0x756, - 0x7, 0x35, 0x2, 0x2, 0x756, 0xfe, 0x3, 0x2, 0x2, 0x2, 0x757, 0x758, - 0x7, 0x6b, 0x2, 0x2, 0x758, 0x759, 0x7, 0x70, 0x2, 0x2, 0x759, 0x75a, - 0x7, 0x76, 0x2, 0x2, 0x75a, 0x75b, 0x7, 0x33, 0x2, 0x2, 0x75b, 0x75c, - 0x7, 0x7a, 0x2, 0x2, 0x75c, 0x75d, 0x7, 0x36, 0x2, 0x2, 0x75d, 0x100, + 0x7, 0x70, 0x2, 0x2, 0x744, 0x745, 0x7, 0x76, 0x2, 0x2, 0x745, 0xf0, + 0x3, 0x2, 0x2, 0x2, 0x746, 0x747, 0x7, 0x6b, 0x2, 0x2, 0x747, 0x748, + 0x7, 0x70, 0x2, 0x2, 0x748, 0x749, 0x7, 0x76, 0x2, 0x2, 0x749, 0x74a, + 0x7, 0x33, 0x2, 0x2, 0x74a, 0x74b, 0x7, 0x38, 0x2, 0x2, 0x74b, 0x74c, + 0x7, 0x61, 0x2, 0x2, 0x74c, 0x74d, 0x7, 0x76, 0x2, 0x2, 0x74d, 0xf2, + 0x3, 0x2, 0x2, 0x2, 0x74e, 0x74f, 0x7, 0x6b, 0x2, 0x2, 0x74f, 0x750, + 0x7, 0x70, 0x2, 0x2, 0x750, 0x751, 0x7, 0x76, 0x2, 0x2, 0x751, 0x752, + 0x7, 0x35, 0x2, 0x2, 0x752, 0x753, 0x7, 0x34, 0x2, 0x2, 0x753, 0x754, + 0x7, 0x61, 0x2, 0x2, 0x754, 0x755, 0x7, 0x76, 0x2, 0x2, 0x755, 0xf4, + 0x3, 0x2, 0x2, 0x2, 0x756, 0x757, 0x7, 0x6b, 0x2, 0x2, 0x757, 0x758, + 0x7, 0x70, 0x2, 0x2, 0x758, 0x759, 0x7, 0x76, 0x2, 0x2, 0x759, 0x75a, + 0x7, 0x38, 0x2, 0x2, 0x75a, 0x75b, 0x7, 0x36, 0x2, 0x2, 0x75b, 0x75c, + 0x7, 0x61, 0x2, 0x2, 0x75c, 0x75d, 0x7, 0x76, 0x2, 0x2, 0x75d, 0xf6, 0x3, 0x2, 0x2, 0x2, 0x75e, 0x75f, 0x7, 0x6b, 0x2, 0x2, 0x75f, 0x760, 0x7, 0x70, 0x2, 0x2, 0x760, 0x761, 0x7, 0x76, 0x2, 0x2, 0x761, 0x762, - 0x7, 0x34, 0x2, 0x2, 0x762, 0x763, 0x7, 0x7a, 0x2, 0x2, 0x763, 0x764, - 0x7, 0x33, 0x2, 0x2, 0x764, 0x102, 0x3, 0x2, 0x2, 0x2, 0x765, 0x766, - 0x7, 0x6b, 0x2, 0x2, 0x766, 0x767, 0x7, 0x70, 0x2, 0x2, 0x767, 0x768, - 0x7, 0x76, 0x2, 0x2, 0x768, 0x769, 0x7, 0x34, 0x2, 0x2, 0x769, 0x76a, - 0x7, 0x7a, 0x2, 0x2, 0x76a, 0x76b, 0x7, 0x34, 0x2, 0x2, 0x76b, 0x104, - 0x3, 0x2, 0x2, 0x2, 0x76c, 0x76d, 0x7, 0x6b, 0x2, 0x2, 0x76d, 0x76e, - 0x7, 0x70, 0x2, 0x2, 0x76e, 0x76f, 0x7, 0x76, 0x2, 0x2, 0x76f, 0x770, - 0x7, 0x34, 0x2, 0x2, 0x770, 0x771, 0x7, 0x7a, 0x2, 0x2, 0x771, 0x772, - 0x7, 0x35, 0x2, 0x2, 0x772, 0x106, 0x3, 0x2, 0x2, 0x2, 0x773, 0x774, - 0x7, 0x6b, 0x2, 0x2, 0x774, 0x775, 0x7, 0x70, 0x2, 0x2, 0x775, 0x776, - 0x7, 0x76, 0x2, 0x2, 0x776, 0x777, 0x7, 0x34, 0x2, 0x2, 0x777, 0x778, - 0x7, 0x7a, 0x2, 0x2, 0x778, 0x779, 0x7, 0x36, 0x2, 0x2, 0x779, 0x108, - 0x3, 0x2, 0x2, 0x2, 0x77a, 0x77b, 0x7, 0x6b, 0x2, 0x2, 0x77b, 0x77c, - 0x7, 0x70, 0x2, 0x2, 0x77c, 0x77d, 0x7, 0x76, 0x2, 0x2, 0x77d, 0x77e, - 0x7, 0x35, 0x2, 0x2, 0x77e, 0x77f, 0x7, 0x7a, 0x2, 0x2, 0x77f, 0x780, - 0x7, 0x33, 0x2, 0x2, 0x780, 0x10a, 0x3, 0x2, 0x2, 0x2, 0x781, 0x782, - 0x7, 0x6b, 0x2, 0x2, 0x782, 0x783, 0x7, 0x70, 0x2, 0x2, 0x783, 0x784, - 0x7, 0x76, 0x2, 0x2, 0x784, 0x785, 0x7, 0x35, 0x2, 0x2, 0x785, 0x786, - 0x7, 0x7a, 0x2, 0x2, 0x786, 0x787, 0x7, 0x34, 0x2, 0x2, 0x787, 0x10c, - 0x3, 0x2, 0x2, 0x2, 0x788, 0x789, 0x7, 0x6b, 0x2, 0x2, 0x789, 0x78a, - 0x7, 0x70, 0x2, 0x2, 0x78a, 0x78b, 0x7, 0x76, 0x2, 0x2, 0x78b, 0x78c, - 0x7, 0x35, 0x2, 0x2, 0x78c, 0x78d, 0x7, 0x7a, 0x2, 0x2, 0x78d, 0x78e, - 0x7, 0x35, 0x2, 0x2, 0x78e, 0x10e, 0x3, 0x2, 0x2, 0x2, 0x78f, 0x790, - 0x7, 0x6b, 0x2, 0x2, 0x790, 0x791, 0x7, 0x70, 0x2, 0x2, 0x791, 0x792, - 0x7, 0x76, 0x2, 0x2, 0x792, 0x793, 0x7, 0x35, 0x2, 0x2, 0x793, 0x794, - 0x7, 0x7a, 0x2, 0x2, 0x794, 0x795, 0x7, 0x36, 0x2, 0x2, 0x795, 0x110, - 0x3, 0x2, 0x2, 0x2, 0x796, 0x797, 0x7, 0x6b, 0x2, 0x2, 0x797, 0x798, - 0x7, 0x70, 0x2, 0x2, 0x798, 0x799, 0x7, 0x76, 0x2, 0x2, 0x799, 0x79a, - 0x7, 0x36, 0x2, 0x2, 0x79a, 0x79b, 0x7, 0x7a, 0x2, 0x2, 0x79b, 0x79c, - 0x7, 0x33, 0x2, 0x2, 0x79c, 0x112, 0x3, 0x2, 0x2, 0x2, 0x79d, 0x79e, - 0x7, 0x6b, 0x2, 0x2, 0x79e, 0x79f, 0x7, 0x70, 0x2, 0x2, 0x79f, 0x7a0, - 0x7, 0x76, 0x2, 0x2, 0x7a0, 0x7a1, 0x7, 0x36, 0x2, 0x2, 0x7a1, 0x7a2, - 0x7, 0x7a, 0x2, 0x2, 0x7a2, 0x7a3, 0x7, + 0x7, 0x33, 0x2, 0x2, 0x762, 0xf8, 0x3, 0x2, 0x2, 0x2, 0x763, 0x764, + 0x7, 0x6b, 0x2, 0x2, 0x764, 0x765, 0x7, 0x70, 0x2, 0x2, 0x765, 0x766, + 0x7, 0x76, 0x2, 0x2, 0x766, 0x767, 0x7, 0x34, 0x2, 0x2, 0x767, 0xfa, + 0x3, 0x2, 0x2, 0x2, 0x768, 0x769, 0x7, 0x6b, 0x2, 0x2, 0x769, 0x76a, + 0x7, 0x70, 0x2, 0x2, 0x76a, 0x76b, 0x7, 0x76, 0x2, 0x2, 0x76b, 0x76c, + 0x7, 0x35, 0x2, 0x2, 0x76c, 0xfc, 0x3, 0x2, 0x2, 0x2, 0x76d, 0x76e, + 0x7, 0x6b, 0x2, 0x2, 0x76e, 0x76f, 0x7, 0x70, 0x2, 0x2, 0x76f, 0x770, + 0x7, 0x76, 0x2, 0x2, 0x770, 0x771, 0x7, 0x36, 0x2, 0x2, 0x771, 0xfe, + 0x3, 0x2, 0x2, 0x2, 0x772, 0x773, 0x7, 0x6b, 0x2, 0x2, 0x773, 0x774, + 0x7, 0x70, 0x2, 0x2, 0x774, 0x775, 0x7, 0x76, 0x2, 0x2, 0x775, 0x776, + 0x7, 0x33, 0x2, 0x2, 0x776, 0x777, 0x7, 0x7a, 0x2, 0x2, 0x777, 0x778, + 0x7, 0x33, 0x2, 0x2, 0x778, 0x100, 0x3, 0x2, 0x2, 0x2, 0x779, 0x77a, + 0x7, 0x6b, 0x2, 0x2, 0x77a, 0x77b, 0x7, 0x70, 0x2, 0x2, 0x77b, 0x77c, + 0x7, 0x76, 0x2, 0x2, 0x77c, 0x77d, 0x7, 0x33, 0x2, 0x2, 0x77d, 0x77e, + 0x7, 0x7a, 0x2, 0x2, 0x77e, 0x77f, 0x7, 0x34, 0x2, 0x2, 0x77f, 0x102, + 0x3, 0x2, 0x2, 0x2, 0x780, 0x781, 0x7, 0x6b, 0x2, 0x2, 0x781, 0x782, + 0x7, 0x70, 0x2, 0x2, 0x782, 0x783, 0x7, 0x76, 0x2, }; static const uint16_t serializedATNSegment1[] = { - 0x34, 0x2, 0x2, 0x7a3, 0x114, 0x3, 0x2, 0x2, 0x2, 0x7a4, 0x7a5, 0x7, - 0x6b, 0x2, 0x2, 0x7a5, 0x7a6, 0x7, 0x70, 0x2, 0x2, 0x7a6, 0x7a7, - 0x7, 0x76, 0x2, 0x2, 0x7a7, 0x7a8, 0x7, 0x36, 0x2, 0x2, 0x7a8, 0x7a9, - 0x7, 0x7a, 0x2, 0x2, 0x7a9, 0x7aa, 0x7, 0x35, 0x2, 0x2, 0x7aa, 0x116, - 0x3, 0x2, 0x2, 0x2, 0x7ab, 0x7ac, 0x7, 0x6b, 0x2, 0x2, 0x7ac, 0x7ad, - 0x7, 0x70, 0x2, 0x2, 0x7ad, 0x7ae, 0x7, 0x76, 0x2, 0x2, 0x7ae, 0x7af, - 0x7, 0x36, 0x2, 0x2, 0x7af, 0x7b0, 0x7, 0x7a, 0x2, 0x2, 0x7b0, 0x7b1, - 0x7, 0x36, 0x2, 0x2, 0x7b1, 0x118, 0x3, 0x2, 0x2, 0x2, 0x7b2, 0x7b3, - 0x7, 0x6b, 0x2, 0x2, 0x7b3, 0x7b4, 0x7, 0x70, 0x2, 0x2, 0x7b4, 0x7b5, - 0x7, 0x76, 0x2, 0x2, 0x7b5, 0x7b6, 0x7, 0x67, 0x2, 0x2, 0x7b6, 0x7b7, - 0x7, 0x74, 0x2, 0x2, 0x7b7, 0x7b8, 0x7, 0x68, 0x2, 0x2, 0x7b8, 0x7b9, - 0x7, 0x63, 0x2, 0x2, 0x7b9, 0x7ba, 0x7, 0x65, 0x2, 0x2, 0x7ba, 0x7bb, - 0x7, 0x67, 0x2, 0x2, 0x7bb, 0x11a, 0x3, 0x2, 0x2, 0x2, 0x7bc, 0x7bd, - 0x7, 0x6e, 0x2, 0x2, 0x7bd, 0x7be, 0x7, 0x6b, 0x2, 0x2, 0x7be, 0x7bf, - 0x7, 0x70, 0x2, 0x2, 0x7bf, 0x7c0, 0x7, 0x67, 0x2, 0x2, 0x7c0, 0x11c, - 0x3, 0x2, 0x2, 0x2, 0x7c1, 0x7c2, 0x7, 0x6e, 0x2, 0x2, 0x7c2, 0x7c3, - 0x7, 0x6b, 0x2, 0x2, 0x7c3, 0x7c4, 0x7, 0x70, 0x2, 0x2, 0x7c4, 0x7c5, - 0x7, 0x67, 0x2, 0x2, 0x7c5, 0x7c6, 0x7, 0x63, 0x2, 0x2, 0x7c6, 0x7c7, - 0x7, 0x66, 0x2, 0x2, 0x7c7, 0x7c8, 0x7, 0x6c, 0x2, 0x2, 0x7c8, 0x11e, - 0x3, 0x2, 0x2, 0x2, 0x7c9, 0x7ca, 0x7, 0x6e, 0x2, 0x2, 0x7ca, 0x7cb, - 0x7, 0x6b, 0x2, 0x2, 0x7cb, 0x7cc, 0x7, 0x70, 0x2, 0x2, 0x7cc, 0x7cd, - 0x7, 0x67, 0x2, 0x2, 0x7cd, 0x7ce, 0x7, 0x63, 0x2, 0x2, 0x7ce, 0x7cf, - 0x7, 0x74, 0x2, 0x2, 0x7cf, 0x120, 0x3, 0x2, 0x2, 0x2, 0x7d0, 0x7d1, - 0x7, 0x4e, 0x2, 0x2, 0x7d1, 0x7d2, 0x7, 0x6b, 0x2, 0x2, 0x7d2, 0x7d3, - 0x7, 0x70, 0x2, 0x2, 0x7d3, 0x7d4, 0x7, 0x67, 0x2, 0x2, 0x7d4, 0x7d5, - 0x7, 0x55, 0x2, 0x2, 0x7d5, 0x7d6, 0x7, 0x76, 0x2, 0x2, 0x7d6, 0x7d7, - 0x7, 0x74, 0x2, 0x2, 0x7d7, 0x7d8, 0x7, 0x67, 0x2, 0x2, 0x7d8, 0x7d9, - 0x7, 0x63, 0x2, 0x2, 0x7d9, 0x7da, 0x7, 0x6f, 0x2, 0x2, 0x7da, 0x122, - 0x3, 0x2, 0x2, 0x2, 0x7db, 0x7dc, 0x7, 0x6e, 0x2, 0x2, 0x7dc, 0x7dd, - 0x7, 0x71, 0x2, 0x2, 0x7dd, 0x7de, 0x7, 0x70, 0x2, 0x2, 0x7de, 0x7df, - 0x7, 0x69, 0x2, 0x2, 0x7df, 0x124, 0x3, 0x2, 0x2, 0x2, 0x7e0, 0x7e1, - 0x7, 0x6f, 0x2, 0x2, 0x7e1, 0x7e2, 0x7, 0x63, 0x2, 0x2, 0x7e2, 0x7e3, - 0x7, 0x76, 0x2, 0x2, 0x7e3, 0x7e4, 0x7, 0x74, 0x2, 0x2, 0x7e4, 0x7e5, - 0x7, 0x6b, 0x2, 0x2, 0x7e5, 0x7e6, 0x7, 0x7a, 0x2, 0x2, 0x7e6, 0x126, - 0x3, 0x2, 0x2, 0x2, 0x7e7, 0x7e8, 0x7, 0x70, 0x2, 0x2, 0x7e8, 0x7e9, - 0x7, 0x71, 0x2, 0x2, 0x7e9, 0x7ea, 0x7, 0x6b, 0x2, 0x2, 0x7ea, 0x7eb, - 0x7, 0x70, 0x2, 0x2, 0x7eb, 0x7ec, 0x7, 0x76, 0x2, 0x2, 0x7ec, 0x7ed, - 0x7, 0x67, 0x2, 0x2, 0x7ed, 0x7ee, 0x7, 0x74, 0x2, 0x2, 0x7ee, 0x7ef, - 0x7, 0x72, 0x2, 0x2, 0x7ef, 0x7f0, 0x7, 0x71, 0x2, 0x2, 0x7f0, 0x7f1, - 0x7, 0x6e, 0x2, 0x2, 0x7f1, 0x7f2, 0x7, 0x63, 0x2, 0x2, 0x7f2, 0x7f3, - 0x7, 0x76, 0x2, 0x2, 0x7f3, 0x7f4, 0x7, 0x6b, 0x2, 0x2, 0x7f4, 0x7f5, - 0x7, 0x71, 0x2, 0x2, 0x7f5, 0x7f6, 0x7, 0x70, 0x2, 0x2, 0x7f6, 0x128, - 0x3, 0x2, 0x2, 0x2, 0x7f7, 0x7f8, 0x7, 0x70, 0x2, 0x2, 0x7f8, 0x7f9, - 0x7, 0x71, 0x2, 0x2, 0x7f9, 0x7fa, 0x7, 0x72, 0x2, 0x2, 0x7fa, 0x7fb, - 0x7, 0x67, 0x2, 0x2, 0x7fb, 0x7fc, 0x7, 0x74, 0x2, 0x2, 0x7fc, 0x7fd, - 0x7, 0x75, 0x2, 0x2, 0x7fd, 0x7fe, 0x7, 0x72, 0x2, 0x2, 0x7fe, 0x7ff, - 0x7, 0x67, 0x2, 0x2, 0x7ff, 0x800, 0x7, 0x65, 0x2, 0x2, 0x800, 0x801, - 0x7, 0x76, 0x2, 0x2, 0x801, 0x802, 0x7, 0x6b, 0x2, 0x2, 0x802, 0x803, - 0x7, 0x78, 0x2, 0x2, 0x803, 0x804, 0x7, 0x67, 0x2, 0x2, 0x804, 0x12a, - 0x3, 0x2, 0x2, 0x2, 0x805, 0x806, 0x7, 0x71, 0x2, 0x2, 0x806, 0x807, - 0x7, 0x72, 0x2, 0x2, 0x807, 0x808, 0x7, 0x76, 0x2, 0x2, 0x808, 0x809, - 0x7, 0x6b, 0x2, 0x2, 0x809, 0x80a, 0x7, 0x71, 0x2, 0x2, 0x80a, 0x80b, - 0x7, 0x70, 0x2, 0x2, 0x80b, 0x12c, 0x3, 0x2, 0x2, 0x2, 0x80c, 0x80d, - 0x7, 0x71, 0x2, 0x2, 0x80d, 0x80e, 0x7, 0x77, 0x2, 0x2, 0x80e, 0x80f, - 0x7, 0x76, 0x2, 0x2, 0x80f, 0x12e, 0x3, 0x2, 0x2, 0x2, 0x810, 0x811, - 0x7, 0x51, 0x2, 0x2, 0x811, 0x812, 0x7, 0x77, 0x2, 0x2, 0x812, 0x813, - 0x7, 0x76, 0x2, 0x2, 0x813, 0x814, 0x7, 0x72, 0x2, 0x2, 0x814, 0x815, - 0x7, 0x77, 0x2, 0x2, 0x815, 0x816, 0x7, 0x76, 0x2, 0x2, 0x816, 0x817, - 0x7, 0x52, 0x2, 0x2, 0x817, 0x818, 0x7, 0x63, 0x2, 0x2, 0x818, 0x819, - 0x7, 0x76, 0x2, 0x2, 0x819, 0x81a, 0x7, 0x65, 0x2, 0x2, 0x81a, 0x81b, - 0x7, 0x6a, 0x2, 0x2, 0x81b, 0x130, 0x3, 0x2, 0x2, 0x2, 0x81c, 0x81d, - 0x7, 0x71, 0x2, 0x2, 0x81d, 0x81e, 0x7, 0x78, 0x2, 0x2, 0x81e, 0x81f, - 0x7, 0x67, 0x2, 0x2, 0x81f, 0x820, 0x7, 0x74, 0x2, 0x2, 0x820, 0x821, - 0x7, 0x74, 0x2, 0x2, 0x821, 0x822, 0x7, 0x6b, 0x2, 0x2, 0x822, 0x823, - 0x7, 0x66, 0x2, 0x2, 0x823, 0x824, 0x7, 0x67, 0x2, 0x2, 0x824, 0x132, - 0x3, 0x2, 0x2, 0x2, 0x825, 0x826, 0x7, 0x72, 0x2, 0x2, 0x826, 0x827, - 0x7, 0x63, 0x2, 0x2, 0x827, 0x828, 0x7, 0x74, 0x2, 0x2, 0x828, 0x829, - 0x7, 0x76, 0x2, 0x2, 0x829, 0x82a, 0x7, 0x6b, 0x2, 0x2, 0x82a, 0x82b, - 0x7, 0x63, 0x2, 0x2, 0x82b, 0x82c, 0x7, 0x6e, 0x2, 0x2, 0x82c, 0x134, - 0x3, 0x2, 0x2, 0x2, 0x82d, 0x82e, 0x7, 0x72, 0x2, 0x2, 0x82e, 0x82f, - 0x7, 0x63, 0x2, 0x2, 0x82f, 0x830, 0x7, 0x65, 0x2, 0x2, 0x830, 0x831, - 0x7, 0x6d, 0x2, 0x2, 0x831, 0x832, 0x7, 0x71, 0x2, 0x2, 0x832, 0x833, - 0x7, 0x68, 0x2, 0x2, 0x833, 0x834, 0x7, 0x68, 0x2, 0x2, 0x834, 0x835, - 0x7, 0x75, 0x2, 0x2, 0x835, 0x836, 0x7, 0x67, 0x2, 0x2, 0x836, 0x837, - 0x7, 0x76, 0x2, 0x2, 0x837, 0x136, 0x3, 0x2, 0x2, 0x2, 0x838, 0x839, - 0x7, 0x72, 0x2, 0x2, 0x839, 0x83a, 0x7, 0x71, 0x2, 0x2, 0x83a, 0x83b, - 0x7, 0x6b, 0x2, 0x2, 0x83b, 0x83c, 0x7, 0x70, 0x2, 0x2, 0x83c, 0x83d, - 0x7, 0x76, 0x2, 0x2, 0x83d, 0x138, 0x3, 0x2, 0x2, 0x2, 0x83e, 0x83f, - 0x7, 0x52, 0x2, 0x2, 0x83f, 0x840, 0x7, 0x71, 0x2, 0x2, 0x840, 0x841, - 0x7, 0x6b, 0x2, 0x2, 0x841, 0x842, 0x7, 0x70, 0x2, 0x2, 0x842, 0x843, - 0x7, 0x76, 0x2, 0x2, 0x843, 0x844, 0x7, 0x55, 0x2, 0x2, 0x844, 0x845, - 0x7, 0x76, 0x2, 0x2, 0x845, 0x846, 0x7, 0x74, 0x2, 0x2, 0x846, 0x847, - 0x7, 0x67, 0x2, 0x2, 0x847, 0x848, 0x7, 0x63, 0x2, 0x2, 0x848, 0x849, - 0x7, 0x6f, 0x2, 0x2, 0x849, 0x13a, 0x3, 0x2, 0x2, 0x2, 0x84a, 0x84b, - 0x7, 0x72, 0x2, 0x2, 0x84b, 0x84c, 0x7, 0x74, 0x2, 0x2, 0x84c, 0x84d, - 0x7, 0x67, 0x2, 0x2, 0x84d, 0x84e, 0x7, 0x65, 0x2, 0x2, 0x84e, 0x84f, - 0x7, 0x6b, 0x2, 0x2, 0x84f, 0x850, 0x7, 0x75, 0x2, 0x2, 0x850, 0x851, - 0x7, 0x67, 0x2, 0x2, 0x851, 0x13c, 0x3, 0x2, 0x2, 0x2, 0x852, 0x853, - 0x7, 0x54, 0x2, 0x2, 0x853, 0x854, 0x7, 0x63, 0x2, 0x2, 0x854, 0x855, - 0x7, 0x75, 0x2, 0x2, 0x855, 0x856, 0x7, 0x76, 0x2, 0x2, 0x856, 0x857, - 0x7, 0x67, 0x2, 0x2, 0x857, 0x858, 0x7, 0x74, 0x2, 0x2, 0x858, 0x859, - 0x7, 0x6b, 0x2, 0x2, 0x859, 0x85a, 0x7, 0x7c, 0x2, 0x2, 0x85a, 0x85b, - 0x7, 0x67, 0x2, 0x2, 0x85b, 0x85c, 0x7, 0x74, 0x2, 0x2, 0x85c, 0x85d, - 0x7, 0x51, 0x2, 0x2, 0x85d, 0x85e, 0x7, 0x74, 0x2, 0x2, 0x85e, 0x85f, - 0x7, 0x66, 0x2, 0x2, 0x85f, 0x860, 0x7, 0x67, 0x2, 0x2, 0x860, 0x861, - 0x7, 0x74, 0x2, 0x2, 0x861, 0x862, 0x7, 0x67, 0x2, 0x2, 0x862, 0x863, - 0x7, 0x66, 0x2, 0x2, 0x863, 0x864, 0x7, 0x44, 0x2, 0x2, 0x864, 0x865, - 0x7, 0x77, 0x2, 0x2, 0x865, 0x866, 0x7, 0x68, 0x2, 0x2, 0x866, 0x867, - 0x7, 0x68, 0x2, 0x2, 0x867, 0x868, 0x7, 0x67, 0x2, 0x2, 0x868, 0x869, - 0x7, 0x74, 0x2, 0x2, 0x869, 0x13e, 0x3, 0x2, 0x2, 0x2, 0x86a, 0x86b, - 0x7, 0x54, 0x2, 0x2, 0x86b, 0x86c, 0x7, 0x63, 0x2, 0x2, 0x86c, 0x86d, - 0x7, 0x75, 0x2, 0x2, 0x86d, 0x86e, 0x7, 0x76, 0x2, 0x2, 0x86e, 0x86f, - 0x7, 0x67, 0x2, 0x2, 0x86f, 0x870, 0x7, 0x74, 0x2, 0x2, 0x870, 0x871, - 0x7, 0x6b, 0x2, 0x2, 0x871, 0x872, 0x7, 0x7c, 0x2, 0x2, 0x872, 0x873, - 0x7, 0x67, 0x2, 0x2, 0x873, 0x874, 0x7, 0x74, 0x2, 0x2, 0x874, 0x875, - 0x7, 0x51, 0x2, 0x2, 0x875, 0x876, 0x7, 0x74, 0x2, 0x2, 0x876, 0x877, - 0x7, 0x66, 0x2, 0x2, 0x877, 0x878, 0x7, 0x67, 0x2, 0x2, 0x878, 0x879, - 0x7, 0x74, 0x2, 0x2, 0x879, 0x87a, 0x7, 0x67, 0x2, 0x2, 0x87a, 0x87b, - 0x7, 0x66, 0x2, 0x2, 0x87b, 0x87c, 0x7, 0x44, 0x2, 0x2, 0x87c, 0x87d, - 0x7, 0x7b, 0x2, 0x2, 0x87d, 0x87e, 0x7, 0x76, 0x2, 0x2, 0x87e, 0x87f, - 0x7, 0x67, 0x2, 0x2, 0x87f, 0x880, 0x7, 0x43, 0x2, 0x2, 0x880, 0x881, - 0x7, 0x66, 0x2, 0x2, 0x881, 0x882, 0x7, 0x66, 0x2, 0x2, 0x882, 0x883, - 0x7, 0x74, 0x2, 0x2, 0x883, 0x884, 0x7, 0x67, 0x2, 0x2, 0x884, 0x885, - 0x7, 0x75, 0x2, 0x2, 0x885, 0x886, 0x7, 0x75, 0x2, 0x2, 0x886, 0x887, - 0x7, 0x44, 0x2, 0x2, 0x887, 0x888, 0x7, 0x77, 0x2, 0x2, 0x888, 0x889, - 0x7, 0x68, 0x2, 0x2, 0x889, 0x88a, 0x7, 0x68, 0x2, 0x2, 0x88a, 0x88b, - 0x7, 0x67, 0x2, 0x2, 0x88b, 0x88c, 0x7, 0x74, 0x2, 0x2, 0x88c, 0x140, - 0x3, 0x2, 0x2, 0x2, 0x88d, 0x88e, 0x7, 0x54, 0x2, 0x2, 0x88e, 0x88f, - 0x7, 0x63, 0x2, 0x2, 0x88f, 0x890, 0x7, 0x75, 0x2, 0x2, 0x890, 0x891, - 0x7, 0x76, 0x2, 0x2, 0x891, 0x892, 0x7, 0x67, 0x2, 0x2, 0x892, 0x893, - 0x7, 0x74, 0x2, 0x2, 0x893, 0x894, 0x7, 0x6b, 0x2, 0x2, 0x894, 0x895, - 0x7, 0x7c, 0x2, 0x2, 0x895, 0x896, 0x7, 0x67, 0x2, 0x2, 0x896, 0x897, - 0x7, 0x74, 0x2, 0x2, 0x897, 0x898, 0x7, 0x51, 0x2, 0x2, 0x898, 0x899, - 0x7, 0x74, 0x2, 0x2, 0x899, 0x89a, 0x7, 0x66, 0x2, 0x2, 0x89a, 0x89b, - 0x7, 0x67, 0x2, 0x2, 0x89b, 0x89c, 0x7, 0x74, 0x2, 0x2, 0x89c, 0x89d, - 0x7, 0x67, 0x2, 0x2, 0x89d, 0x89e, 0x7, 0x66, 0x2, 0x2, 0x89e, 0x89f, - 0x7, 0x55, 0x2, 0x2, 0x89f, 0x8a0, 0x7, 0x76, 0x2, 0x2, 0x8a0, 0x8a1, - 0x7, 0x74, 0x2, 0x2, 0x8a1, 0x8a2, 0x7, 0x77, 0x2, 0x2, 0x8a2, 0x8a3, - 0x7, 0x65, 0x2, 0x2, 0x8a3, 0x8a4, 0x7, 0x76, 0x2, 0x2, 0x8a4, 0x8a5, - 0x7, 0x77, 0x2, 0x2, 0x8a5, 0x8a6, 0x7, 0x74, 0x2, 0x2, 0x8a6, 0x8a7, - 0x7, 0x67, 0x2, 0x2, 0x8a7, 0x8a8, 0x7, 0x66, 0x2, 0x2, 0x8a8, 0x8a9, - 0x7, 0x44, 0x2, 0x2, 0x8a9, 0x8aa, 0x7, 0x77, 0x2, 0x2, 0x8aa, 0x8ab, - 0x7, 0x68, 0x2, 0x2, 0x8ab, 0x8ac, 0x7, 0x68, 0x2, 0x2, 0x8ac, 0x8ad, - 0x7, 0x67, 0x2, 0x2, 0x8ad, 0x8ae, 0x7, 0x74, 0x2, 0x2, 0x8ae, 0x142, - 0x3, 0x2, 0x2, 0x2, 0x8af, 0x8b0, 0x7, 0x54, 0x2, 0x2, 0x8b0, 0x8b1, - 0x7, 0x63, 0x2, 0x2, 0x8b1, 0x8b2, 0x7, 0x75, 0x2, 0x2, 0x8b2, 0x8b3, - 0x7, 0x76, 0x2, 0x2, 0x8b3, 0x8b4, 0x7, 0x67, 0x2, 0x2, 0x8b4, 0x8b5, - 0x7, 0x74, 0x2, 0x2, 0x8b5, 0x8b6, 0x7, 0x6b, 0x2, 0x2, 0x8b6, 0x8b7, - 0x7, 0x7c, 0x2, 0x2, 0x8b7, 0x8b8, 0x7, 0x67, 0x2, 0x2, 0x8b8, 0x8b9, - 0x7, 0x74, 0x2, 0x2, 0x8b9, 0x8ba, 0x7, 0x51, 0x2, 0x2, 0x8ba, 0x8bb, - 0x7, 0x74, 0x2, 0x2, 0x8bb, 0x8bc, 0x7, 0x66, 0x2, 0x2, 0x8bc, 0x8bd, - 0x7, 0x67, 0x2, 0x2, 0x8bd, 0x8be, 0x7, 0x74, 0x2, 0x2, 0x8be, 0x8bf, - 0x7, 0x67, 0x2, 0x2, 0x8bf, 0x8c0, 0x7, 0x66, 0x2, 0x2, 0x8c0, 0x8c1, - 0x7, 0x56, 0x2, 0x2, 0x8c1, 0x8c2, 0x7, 0x67, 0x2, 0x2, 0x8c2, 0x8c3, - 0x7, 0x7a, 0x2, 0x2, 0x8c3, 0x8c4, 0x7, 0x76, 0x2, 0x2, 0x8c4, 0x8c5, - 0x7, 0x77, 0x2, 0x2, 0x8c5, 0x8c6, 0x7, 0x74, 0x2, 0x2, 0x8c6, 0x8c7, - 0x7, 0x67, 0x2, 0x2, 0x8c7, 0x8c8, 0x7, 0x33, 0x2, 0x2, 0x8c8, 0x8c9, - 0x7, 0x46, 0x2, 0x2, 0x8c9, 0x144, 0x3, 0x2, 0x2, 0x2, 0x8ca, 0x8cb, - 0x7, 0x54, 0x2, 0x2, 0x8cb, 0x8cc, 0x7, 0x63, 0x2, 0x2, 0x8cc, 0x8cd, - 0x7, 0x75, 0x2, 0x2, 0x8cd, 0x8ce, 0x7, 0x76, 0x2, 0x2, 0x8ce, 0x8cf, - 0x7, 0x67, 0x2, 0x2, 0x8cf, 0x8d0, 0x7, 0x74, 0x2, 0x2, 0x8d0, 0x8d1, - 0x7, 0x6b, 0x2, 0x2, 0x8d1, 0x8d2, 0x7, 0x7c, 0x2, 0x2, 0x8d2, 0x8d3, - 0x7, 0x67, 0x2, 0x2, 0x8d3, 0x8d4, 0x7, 0x74, 0x2, 0x2, 0x8d4, 0x8d5, - 0x7, 0x51, 0x2, 0x2, 0x8d5, 0x8d6, 0x7, 0x74, 0x2, 0x2, 0x8d6, 0x8d7, - 0x7, 0x66, 0x2, 0x2, 0x8d7, 0x8d8, 0x7, 0x67, 0x2, 0x2, 0x8d8, 0x8d9, - 0x7, 0x74, 0x2, 0x2, 0x8d9, 0x8da, 0x7, 0x67, 0x2, 0x2, 0x8da, 0x8db, - 0x7, 0x66, 0x2, 0x2, 0x8db, 0x8dc, 0x7, 0x56, 0x2, 0x2, 0x8dc, 0x8dd, - 0x7, 0x67, 0x2, 0x2, 0x8dd, 0x8de, 0x7, 0x7a, 0x2, 0x2, 0x8de, 0x8df, - 0x7, 0x76, 0x2, 0x2, 0x8df, 0x8e0, 0x7, 0x77, 0x2, 0x2, 0x8e0, 0x8e1, - 0x7, 0x74, 0x2, 0x2, 0x8e1, 0x8e2, 0x7, 0x67, 0x2, 0x2, 0x8e2, 0x8e3, - 0x7, 0x33, 0x2, 0x2, 0x8e3, 0x8e4, 0x7, 0x46, 0x2, 0x2, 0x8e4, 0x8e5, - 0x7, 0x43, 0x2, 0x2, 0x8e5, 0x8e6, 0x7, 0x74, 0x2, 0x2, 0x8e6, 0x8e7, - 0x7, 0x74, 0x2, 0x2, 0x8e7, 0x8e8, 0x7, 0x63, 0x2, 0x2, 0x8e8, 0x8e9, - 0x7, 0x7b, 0x2, 0x2, 0x8e9, 0x146, 0x3, 0x2, 0x2, 0x2, 0x8ea, 0x8eb, - 0x7, 0x54, 0x2, 0x2, 0x8eb, 0x8ec, 0x7, 0x63, 0x2, 0x2, 0x8ec, 0x8ed, - 0x7, 0x75, 0x2, 0x2, 0x8ed, 0x8ee, 0x7, 0x76, 0x2, 0x2, 0x8ee, 0x8ef, - 0x7, 0x67, 0x2, 0x2, 0x8ef, 0x8f0, 0x7, 0x74, 0x2, 0x2, 0x8f0, 0x8f1, - 0x7, 0x6b, 0x2, 0x2, 0x8f1, 0x8f2, 0x7, 0x7c, 0x2, 0x2, 0x8f2, 0x8f3, - 0x7, 0x67, 0x2, 0x2, 0x8f3, 0x8f4, 0x7, 0x74, 0x2, 0x2, 0x8f4, 0x8f5, - 0x7, 0x51, 0x2, 0x2, 0x8f5, 0x8f6, 0x7, 0x74, 0x2, 0x2, 0x8f6, 0x8f7, - 0x7, 0x66, 0x2, 0x2, 0x8f7, 0x8f8, 0x7, 0x67, 0x2, 0x2, 0x8f8, 0x8f9, - 0x7, 0x74, 0x2, 0x2, 0x8f9, 0x8fa, 0x7, 0x67, 0x2, 0x2, 0x8fa, 0x8fb, - 0x7, 0x66, 0x2, 0x2, 0x8fb, 0x8fc, 0x7, 0x56, 0x2, 0x2, 0x8fc, 0x8fd, - 0x7, 0x67, 0x2, 0x2, 0x8fd, 0x8fe, 0x7, 0x7a, 0x2, 0x2, 0x8fe, 0x8ff, - 0x7, 0x76, 0x2, 0x2, 0x8ff, 0x900, 0x7, 0x77, 0x2, 0x2, 0x900, 0x901, - 0x7, 0x74, 0x2, 0x2, 0x901, 0x902, 0x7, 0x67, 0x2, 0x2, 0x902, 0x903, - 0x7, 0x34, 0x2, 0x2, 0x903, 0x904, 0x7, 0x46, 0x2, 0x2, 0x904, 0x148, - 0x3, 0x2, 0x2, 0x2, 0x905, 0x906, 0x7, 0x54, 0x2, 0x2, 0x906, 0x907, - 0x7, 0x63, 0x2, 0x2, 0x907, 0x908, 0x7, 0x75, 0x2, 0x2, 0x908, 0x909, - 0x7, 0x76, 0x2, 0x2, 0x909, 0x90a, 0x7, 0x67, 0x2, 0x2, 0x90a, 0x90b, - 0x7, 0x74, 0x2, 0x2, 0x90b, 0x90c, 0x7, 0x6b, 0x2, 0x2, 0x90c, 0x90d, - 0x7, 0x7c, 0x2, 0x2, 0x90d, 0x90e, 0x7, 0x67, 0x2, 0x2, 0x90e, 0x90f, - 0x7, 0x74, 0x2, 0x2, 0x90f, 0x910, 0x7, 0x51, 0x2, 0x2, 0x910, 0x911, - 0x7, 0x74, 0x2, 0x2, 0x911, 0x912, 0x7, 0x66, 0x2, 0x2, 0x912, 0x913, - 0x7, 0x67, 0x2, 0x2, 0x913, 0x914, 0x7, 0x74, 0x2, 0x2, 0x914, 0x915, - 0x7, 0x67, 0x2, 0x2, 0x915, 0x916, 0x7, 0x66, 0x2, 0x2, 0x916, 0x917, - 0x7, 0x56, 0x2, 0x2, 0x917, 0x918, 0x7, 0x67, 0x2, 0x2, 0x918, 0x919, - 0x7, 0x7a, 0x2, 0x2, 0x919, 0x91a, 0x7, 0x76, 0x2, 0x2, 0x91a, 0x91b, - 0x7, 0x77, 0x2, 0x2, 0x91b, 0x91c, 0x7, 0x74, 0x2, 0x2, 0x91c, 0x91d, - 0x7, 0x67, 0x2, 0x2, 0x91d, 0x91e, 0x7, 0x34, 0x2, 0x2, 0x91e, 0x91f, - 0x7, 0x46, 0x2, 0x2, 0x91f, 0x920, 0x7, 0x43, 0x2, 0x2, 0x920, 0x921, - 0x7, 0x74, 0x2, 0x2, 0x921, 0x922, 0x7, 0x74, 0x2, 0x2, 0x922, 0x923, - 0x7, 0x63, 0x2, 0x2, 0x923, 0x924, 0x7, 0x7b, 0x2, 0x2, 0x924, 0x14a, - 0x3, 0x2, 0x2, 0x2, 0x925, 0x926, 0x7, 0x54, 0x2, 0x2, 0x926, 0x927, - 0x7, 0x63, 0x2, 0x2, 0x927, 0x928, 0x7, 0x75, 0x2, 0x2, 0x928, 0x929, - 0x7, 0x76, 0x2, 0x2, 0x929, 0x92a, 0x7, 0x67, 0x2, 0x2, 0x92a, 0x92b, - 0x7, 0x74, 0x2, 0x2, 0x92b, 0x92c, 0x7, 0x6b, 0x2, 0x2, 0x92c, 0x92d, - 0x7, 0x7c, 0x2, 0x2, 0x92d, 0x92e, 0x7, 0x67, 0x2, 0x2, 0x92e, 0x92f, - 0x7, 0x74, 0x2, 0x2, 0x92f, 0x930, 0x7, 0x51, 0x2, 0x2, 0x930, 0x931, - 0x7, 0x74, 0x2, 0x2, 0x931, 0x932, 0x7, 0x66, 0x2, 0x2, 0x932, 0x933, - 0x7, 0x67, 0x2, 0x2, 0x933, 0x934, 0x7, 0x74, 0x2, 0x2, 0x934, 0x935, - 0x7, 0x67, 0x2, 0x2, 0x935, 0x936, 0x7, 0x66, 0x2, 0x2, 0x936, 0x937, - 0x7, 0x56, 0x2, 0x2, 0x937, 0x938, 0x7, 0x67, 0x2, 0x2, 0x938, 0x939, - 0x7, 0x7a, 0x2, 0x2, 0x939, 0x93a, 0x7, 0x76, 0x2, 0x2, 0x93a, 0x93b, - 0x7, 0x77, 0x2, 0x2, 0x93b, 0x93c, 0x7, 0x74, 0x2, 0x2, 0x93c, 0x93d, - 0x7, 0x67, 0x2, 0x2, 0x93d, 0x93e, 0x7, 0x35, 0x2, 0x2, 0x93e, 0x93f, - 0x7, 0x46, 0x2, 0x2, 0x93f, 0x14c, 0x3, 0x2, 0x2, 0x2, 0x940, 0x941, - 0x7, 0x54, 0x2, 0x2, 0x941, 0x942, 0x7, 0x63, 0x2, 0x2, 0x942, 0x943, - 0x7, 0x7b, 0x2, 0x2, 0x943, 0x944, 0x7, 0x46, 0x2, 0x2, 0x944, 0x945, - 0x7, 0x67, 0x2, 0x2, 0x945, 0x946, 0x7, 0x75, 0x2, 0x2, 0x946, 0x947, - 0x7, 0x65, 0x2, 0x2, 0x947, 0x14e, 0x3, 0x2, 0x2, 0x2, 0x948, 0x949, - 0x7, 0x54, 0x2, 0x2, 0x949, 0x94a, 0x7, 0x63, 0x2, 0x2, 0x94a, 0x94b, - 0x7, 0x7b, 0x2, 0x2, 0x94b, 0x94c, 0x7, 0x76, 0x2, 0x2, 0x94c, 0x94d, - 0x7, 0x74, 0x2, 0x2, 0x94d, 0x94e, 0x7, 0x63, 0x2, 0x2, 0x94e, 0x94f, - 0x7, 0x65, 0x2, 0x2, 0x94f, 0x950, 0x7, 0x6b, 0x2, 0x2, 0x950, 0x951, - 0x7, 0x70, 0x2, 0x2, 0x951, 0x952, 0x7, 0x69, 0x2, 0x2, 0x952, 0x953, - 0x7, 0x43, 0x2, 0x2, 0x953, 0x954, 0x7, 0x65, 0x2, 0x2, 0x954, 0x955, - 0x7, 0x65, 0x2, 0x2, 0x955, 0x956, 0x7, 0x67, 0x2, 0x2, 0x956, 0x957, - 0x7, 0x6e, 0x2, 0x2, 0x957, 0x958, 0x7, 0x67, 0x2, 0x2, 0x958, 0x959, - 0x7, 0x74, 0x2, 0x2, 0x959, 0x95a, 0x7, 0x63, 0x2, 0x2, 0x95a, 0x95b, - 0x7, 0x76, 0x2, 0x2, 0x95b, 0x95c, 0x7, 0x6b, 0x2, 0x2, 0x95c, 0x95d, - 0x7, 0x71, 0x2, 0x2, 0x95d, 0x95e, 0x7, 0x70, 0x2, 0x2, 0x95e, 0x95f, - 0x7, 0x55, 0x2, 0x2, 0x95f, 0x960, 0x7, 0x76, 0x2, 0x2, 0x960, 0x961, - 0x7, 0x74, 0x2, 0x2, 0x961, 0x962, 0x7, 0x77, 0x2, 0x2, 0x962, 0x963, - 0x7, 0x65, 0x2, 0x2, 0x963, 0x964, 0x7, 0x76, 0x2, 0x2, 0x964, 0x965, - 0x7, 0x77, 0x2, 0x2, 0x965, 0x966, 0x7, 0x74, 0x2, 0x2, 0x966, 0x967, - 0x7, 0x67, 0x2, 0x2, 0x967, 0x150, 0x3, 0x2, 0x2, 0x2, 0x968, 0x969, - 0x7, 0x74, 0x2, 0x2, 0x969, 0x96a, 0x7, 0x67, 0x2, 0x2, 0x96a, 0x96b, - 0x7, 0x69, 0x2, 0x2, 0x96b, 0x96c, 0x7, 0x6b, 0x2, 0x2, 0x96c, 0x96d, - 0x7, 0x75, 0x2, 0x2, 0x96d, 0x96e, 0x7, 0x76, 0x2, 0x2, 0x96e, 0x96f, - 0x7, 0x67, 0x2, 0x2, 0x96f, 0x970, 0x7, 0x74, 0x2, 0x2, 0x970, 0x152, - 0x3, 0x2, 0x2, 0x2, 0x971, 0x972, 0x7, 0x74, 0x2, 0x2, 0x972, 0x973, - 0x7, 0x67, 0x2, 0x2, 0x973, 0x974, 0x7, 0x76, 0x2, 0x2, 0x974, 0x975, - 0x7, 0x77, 0x2, 0x2, 0x975, 0x976, 0x7, 0x74, 0x2, 0x2, 0x976, 0x977, - 0x7, 0x70, 0x2, 0x2, 0x977, 0x154, 0x3, 0x2, 0x2, 0x2, 0x978, 0x979, - 0x7, 0x74, 0x2, 0x2, 0x979, 0x97a, 0x7, 0x71, 0x2, 0x2, 0x97a, 0x97b, - 0x7, 0x79, 0x2, 0x2, 0x97b, 0x97c, 0x7, 0x61, 0x2, 0x2, 0x97c, 0x97d, - 0x7, 0x6f, 0x2, 0x2, 0x97d, 0x97e, 0x7, 0x63, 0x2, 0x2, 0x97e, 0x97f, - 0x7, 0x6c, 0x2, 0x2, 0x97f, 0x980, 0x7, 0x71, 0x2, 0x2, 0x980, 0x981, - 0x7, 0x74, 0x2, 0x2, 0x981, 0x156, 0x3, 0x2, 0x2, 0x2, 0x982, 0x983, - 0x7, 0x54, 0x2, 0x2, 0x983, 0x984, 0x7, 0x59, 0x2, 0x2, 0x984, 0x985, - 0x7, 0x44, 0x2, 0x2, 0x985, 0x986, 0x7, 0x77, 0x2, 0x2, 0x986, 0x987, - 0x7, 0x68, 0x2, 0x2, 0x987, 0x988, 0x7, 0x68, 0x2, 0x2, 0x988, 0x989, - 0x7, 0x67, 0x2, 0x2, 0x989, 0x98a, 0x7, 0x74, 0x2, 0x2, 0x98a, 0x158, - 0x3, 0x2, 0x2, 0x2, 0x98b, 0x98c, 0x7, 0x54, 0x2, 0x2, 0x98c, 0x98d, - 0x7, 0x59, 0x2, 0x2, 0x98d, 0x98e, 0x7, 0x44, 0x2, 0x2, 0x98e, 0x98f, - 0x7, 0x7b, 0x2, 0x2, 0x98f, 0x990, 0x7, 0x76, 0x2, 0x2, 0x990, 0x991, - 0x7, 0x67, 0x2, 0x2, 0x991, 0x992, 0x7, 0x43, 0x2, 0x2, 0x992, 0x993, - 0x7, 0x66, 0x2, 0x2, 0x993, 0x994, 0x7, 0x66, 0x2, 0x2, 0x994, 0x995, - 0x7, 0x74, 0x2, 0x2, 0x995, 0x996, 0x7, 0x67, 0x2, 0x2, 0x996, 0x997, - 0x7, 0x75, 0x2, 0x2, 0x997, 0x998, 0x7, 0x75, 0x2, 0x2, 0x998, 0x999, - 0x7, 0x44, 0x2, 0x2, 0x999, 0x99a, 0x7, 0x77, 0x2, 0x2, 0x99a, 0x99b, - 0x7, 0x68, 0x2, 0x2, 0x99b, 0x99c, 0x7, 0x68, 0x2, 0x2, 0x99c, 0x99d, - 0x7, 0x67, 0x2, 0x2, 0x99d, 0x99e, 0x7, 0x74, 0x2, 0x2, 0x99e, 0x15a, - 0x3, 0x2, 0x2, 0x2, 0x99f, 0x9a0, 0x7, 0x54, 0x2, 0x2, 0x9a0, 0x9a1, - 0x7, 0x59, 0x2, 0x2, 0x9a1, 0x9a2, 0x7, 0x55, 0x2, 0x2, 0x9a2, 0x9a3, - 0x7, 0x76, 0x2, 0x2, 0x9a3, 0x9a4, 0x7, 0x74, 0x2, 0x2, 0x9a4, 0x9a5, - 0x7, 0x77, 0x2, 0x2, 0x9a5, 0x9a6, 0x7, 0x65, 0x2, 0x2, 0x9a6, 0x9a7, - 0x7, 0x76, 0x2, 0x2, 0x9a7, 0x9a8, 0x7, 0x77, 0x2, 0x2, 0x9a8, 0x9a9, - 0x7, 0x74, 0x2, 0x2, 0x9a9, 0x9aa, 0x7, 0x67, 0x2, 0x2, 0x9aa, 0x9ab, - 0x7, 0x66, 0x2, 0x2, 0x9ab, 0x9ac, 0x7, 0x44, 0x2, 0x2, 0x9ac, 0x9ad, - 0x7, 0x77, 0x2, 0x2, 0x9ad, 0x9ae, 0x7, 0x68, 0x2, 0x2, 0x9ae, 0x9af, - 0x7, 0x68, 0x2, 0x2, 0x9af, 0x9b0, 0x7, 0x67, 0x2, 0x2, 0x9b0, 0x9b1, - 0x7, 0x74, 0x2, 0x2, 0x9b1, 0x15c, 0x3, 0x2, 0x2, 0x2, 0x9b2, 0x9b3, - 0x7, 0x54, 0x2, 0x2, 0x9b3, 0x9b4, 0x7, 0x59, 0x2, 0x2, 0x9b4, 0x9b5, - 0x7, 0x56, 0x2, 0x2, 0x9b5, 0x9b6, 0x7, 0x67, 0x2, 0x2, 0x9b6, 0x9b7, - 0x7, 0x7a, 0x2, 0x2, 0x9b7, 0x9b8, 0x7, 0x76, 0x2, 0x2, 0x9b8, 0x9b9, - 0x7, 0x77, 0x2, 0x2, 0x9b9, 0x9ba, 0x7, 0x74, 0x2, 0x2, 0x9ba, 0x9bb, - 0x7, 0x67, 0x2, 0x2, 0x9bb, 0x9bc, 0x7, 0x33, 0x2, 0x2, 0x9bc, 0x9bd, - 0x7, 0x46, 0x2, 0x2, 0x9bd, 0x15e, 0x3, 0x2, 0x2, 0x2, 0x9be, 0x9bf, - 0x7, 0x54, 0x2, 0x2, 0x9bf, 0x9c0, 0x7, 0x59, 0x2, 0x2, 0x9c0, 0x9c1, - 0x7, 0x56, 0x2, 0x2, 0x9c1, 0x9c2, 0x7, 0x67, 0x2, 0x2, 0x9c2, 0x9c3, - 0x7, 0x7a, 0x2, 0x2, 0x9c3, 0x9c4, 0x7, 0x76, 0x2, 0x2, 0x9c4, 0x9c5, - 0x7, 0x77, 0x2, 0x2, 0x9c5, 0x9c6, 0x7, 0x74, 0x2, 0x2, 0x9c6, 0x9c7, - 0x7, 0x67, 0x2, 0x2, 0x9c7, 0x9c8, 0x7, 0x33, 0x2, 0x2, 0x9c8, 0x9c9, - 0x7, 0x46, 0x2, 0x2, 0x9c9, 0x9ca, 0x7, 0x43, 0x2, 0x2, 0x9ca, 0x9cb, - 0x7, 0x74, 0x2, 0x2, 0x9cb, 0x9cc, 0x7, 0x74, 0x2, 0x2, 0x9cc, 0x9cd, - 0x7, 0x63, 0x2, 0x2, 0x9cd, 0x9ce, 0x7, 0x7b, 0x2, 0x2, 0x9ce, 0x160, - 0x3, 0x2, 0x2, 0x2, 0x9cf, 0x9d0, 0x7, 0x54, 0x2, 0x2, 0x9d0, 0x9d1, - 0x7, 0x59, 0x2, 0x2, 0x9d1, 0x9d2, 0x7, 0x56, 0x2, 0x2, 0x9d2, 0x9d3, - 0x7, 0x67, 0x2, 0x2, 0x9d3, 0x9d4, 0x7, 0x7a, 0x2, 0x2, 0x9d4, 0x9d5, - 0x7, 0x76, 0x2, 0x2, 0x9d5, 0x9d6, 0x7, 0x77, 0x2, 0x2, 0x9d6, 0x9d7, - 0x7, 0x74, 0x2, 0x2, 0x9d7, 0x9d8, 0x7, 0x67, 0x2, 0x2, 0x9d8, 0x9d9, - 0x7, 0x34, 0x2, 0x2, 0x9d9, 0x9da, 0x7, 0x46, 0x2, 0x2, 0x9da, 0x162, - 0x3, 0x2, 0x2, 0x2, 0x9db, 0x9dc, 0x7, 0x54, 0x2, 0x2, 0x9dc, 0x9dd, - 0x7, 0x59, 0x2, 0x2, 0x9dd, 0x9de, 0x7, 0x56, 0x2, 0x2, 0x9de, 0x9df, - 0x7, 0x67, 0x2, 0x2, 0x9df, 0x9e0, 0x7, 0x7a, 0x2, 0x2, 0x9e0, 0x9e1, - 0x7, 0x76, 0x2, 0x2, 0x9e1, 0x9e2, 0x7, 0x77, 0x2, 0x2, 0x9e2, 0x9e3, - 0x7, 0x74, 0x2, 0x2, 0x9e3, 0x9e4, 0x7, 0x67, 0x2, 0x2, 0x9e4, 0x9e5, - 0x7, 0x34, 0x2, 0x2, 0x9e5, 0x9e6, 0x7, 0x46, 0x2, 0x2, 0x9e6, 0x9e7, - 0x7, 0x43, 0x2, 0x2, 0x9e7, 0x9e8, 0x7, 0x74, 0x2, 0x2, 0x9e8, 0x9e9, - 0x7, 0x74, 0x2, 0x2, 0x9e9, 0x9ea, 0x7, 0x63, 0x2, 0x2, 0x9ea, 0x9eb, - 0x7, 0x7b, 0x2, 0x2, 0x9eb, 0x164, 0x3, 0x2, 0x2, 0x2, 0x9ec, 0x9ed, - 0x7, 0x54, 0x2, 0x2, 0x9ed, 0x9ee, 0x7, 0x59, 0x2, 0x2, 0x9ee, 0x9ef, - 0x7, 0x56, 0x2, 0x2, 0x9ef, 0x9f0, 0x7, 0x67, 0x2, 0x2, 0x9f0, 0x9f1, - 0x7, 0x7a, 0x2, 0x2, 0x9f1, 0x9f2, 0x7, 0x76, 0x2, 0x2, 0x9f2, 0x9f3, - 0x7, 0x77, 0x2, 0x2, 0x9f3, 0x9f4, 0x7, 0x74, 0x2, 0x2, 0x9f4, 0x9f5, - 0x7, 0x67, 0x2, 0x2, 0x9f5, 0x9f6, 0x7, 0x35, 0x2, 0x2, 0x9f6, 0x9f7, - 0x7, 0x46, 0x2, 0x2, 0x9f7, 0x166, 0x3, 0x2, 0x2, 0x2, 0x9f8, 0x9f9, - 0x7, 0x75, 0x2, 0x2, 0x9f9, 0x9fa, 0x7, 0x63, 0x2, 0x2, 0x9fa, 0x9fb, - 0x7, 0x6f, 0x2, 0x2, 0x9fb, 0x9fc, 0x7, 0x72, 0x2, 0x2, 0x9fc, 0x9fd, - 0x7, 0x6e, 0x2, 0x2, 0x9fd, 0x9fe, 0x7, 0x67, 0x2, 0x2, 0x9fe, 0x168, - 0x3, 0x2, 0x2, 0x2, 0x9ff, 0xa00, 0x7, 0x75, 0x2, 0x2, 0xa00, 0xa01, - 0x7, 0x63, 0x2, 0x2, 0xa01, 0xa02, 0x7, 0x6f, 0x2, 0x2, 0xa02, 0xa03, - 0x7, 0x72, 0x2, 0x2, 0xa03, 0xa04, 0x7, 0x6e, 0x2, 0x2, 0xa04, 0xa05, - 0x7, 0x67, 0x2, 0x2, 0xa05, 0xa06, 0x7, 0x74, 0x2, 0x2, 0xa06, 0x16a, - 0x3, 0x2, 0x2, 0x2, 0xa07, 0xa08, 0x7, 0x55, 0x2, 0x2, 0xa08, 0xa09, - 0x7, 0x63, 0x2, 0x2, 0xa09, 0xa0a, 0x7, 0x6f, 0x2, 0x2, 0xa0a, 0xa0b, - 0x7, 0x72, 0x2, 0x2, 0xa0b, 0xa0c, 0x7, 0x6e, 0x2, 0x2, 0xa0c, 0xa0d, - 0x7, 0x67, 0x2, 0x2, 0xa0d, 0xa0e, 0x7, 0x74, 0x2, 0x2, 0xa0e, 0x16c, - 0x3, 0x2, 0x2, 0x2, 0xa0f, 0xa10, 0x7, 0x55, 0x2, 0x2, 0xa10, 0xa11, - 0x7, 0x63, 0x2, 0x2, 0xa11, 0xa12, 0x7, 0x6f, 0x2, 0x2, 0xa12, 0xa13, - 0x7, 0x72, 0x2, 0x2, 0xa13, 0xa14, 0x7, 0x6e, 0x2, 0x2, 0xa14, 0xa15, - 0x7, 0x67, 0x2, 0x2, 0xa15, 0xa16, 0x7, 0x74, 0x2, 0x2, 0xa16, 0xa17, - 0x7, 0x45, 0x2, 0x2, 0xa17, 0xa18, 0x7, 0x71, 0x2, 0x2, 0xa18, 0xa19, - 0x7, 0x6f, 0x2, 0x2, 0xa19, 0xa1a, 0x7, 0x72, 0x2, 0x2, 0xa1a, 0xa1b, - 0x7, 0x63, 0x2, 0x2, 0xa1b, 0xa1c, 0x7, 0x74, 0x2, 0x2, 0xa1c, 0xa1d, - 0x7, 0x6b, 0x2, 0x2, 0xa1d, 0xa1e, 0x7, 0x75, 0x2, 0x2, 0xa1e, 0xa1f, - 0x7, 0x71, 0x2, 0x2, 0xa1f, 0xa20, 0x7, 0x70, 0x2, 0x2, 0xa20, 0xa21, - 0x7, 0x55, 0x2, 0x2, 0xa21, 0xa22, 0x7, 0x76, 0x2, 0x2, 0xa22, 0xa23, - 0x7, 0x63, 0x2, 0x2, 0xa23, 0xa24, 0x7, 0x76, 0x2, 0x2, 0xa24, 0xa25, - 0x7, 0x67, 0x2, 0x2, 0xa25, 0x16e, 0x3, 0x2, 0x2, 0x2, 0xa26, 0xa27, - 0x7, 0x55, 0x2, 0x2, 0xa27, 0xa28, 0x7, 0x63, 0x2, 0x2, 0xa28, 0xa29, - 0x7, 0x6f, 0x2, 0x2, 0xa29, 0xa2a, 0x7, 0x72, 0x2, 0x2, 0xa2a, 0xa2b, - 0x7, 0x6e, 0x2, 0x2, 0xa2b, 0xa2c, 0x7, 0x67, 0x2, 0x2, 0xa2c, 0xa2d, - 0x7, 0x74, 0x2, 0x2, 0xa2d, 0xa2e, 0x7, 0x55, 0x2, 0x2, 0xa2e, 0xa2f, - 0x7, 0x76, 0x2, 0x2, 0xa2f, 0xa30, 0x7, 0x63, 0x2, 0x2, 0xa30, 0xa31, - 0x7, 0x76, 0x2, 0x2, 0xa31, 0xa32, 0x7, 0x67, 0x2, 0x2, 0xa32, 0x170, - 0x3, 0x2, 0x2, 0x2, 0xa33, 0xa34, 0x7, 0x75, 0x2, 0x2, 0xa34, 0xa35, - 0x7, 0x6a, 0x2, 0x2, 0xa35, 0xa36, 0x7, 0x63, 0x2, 0x2, 0xa36, 0xa37, - 0x7, 0x74, 0x2, 0x2, 0xa37, 0xa38, 0x7, 0x67, 0x2, 0x2, 0xa38, 0xa39, - 0x7, 0x66, 0x2, 0x2, 0xa39, 0x172, 0x3, 0x2, 0x2, 0x2, 0xa3a, 0xa3b, - 0x7, 0x75, 0x2, 0x2, 0xa3b, 0xa3c, 0x7, 0x76, 0x2, 0x2, 0xa3c, 0xa3d, - 0x7, 0x63, 0x2, 0x2, 0xa3d, 0xa3e, 0x7, 0x76, 0x2, 0x2, 0xa3e, 0xa3f, - 0x7, 0x6b, 0x2, 0x2, 0xa3f, 0xa40, 0x7, 0x65, 0x2, 0x2, 0xa40, 0x174, - 0x3, 0x2, 0x2, 0x2, 0xa41, 0xa42, 0x7, 0x75, 0x2, 0x2, 0xa42, 0xa43, - 0x7, 0x76, 0x2, 0x2, 0xa43, 0xa44, 0x7, 0x74, 0x2, 0x2, 0xa44, 0xa45, - 0x7, 0x77, 0x2, 0x2, 0xa45, 0xa46, 0x7, 0x65, 0x2, 0x2, 0xa46, 0xa47, - 0x7, 0x76, 0x2, 0x2, 0xa47, 0x176, 0x3, 0x2, 0x2, 0x2, 0xa48, 0xa49, - 0x7, 0x55, 0x2, 0x2, 0xa49, 0xa4a, 0x7, 0x76, 0x2, 0x2, 0xa4a, 0xa4b, - 0x7, 0x74, 0x2, 0x2, 0xa4b, 0xa4c, 0x7, 0x77, 0x2, 0x2, 0xa4c, 0xa4d, - 0x7, 0x65, 0x2, 0x2, 0xa4d, 0xa4e, 0x7, 0x76, 0x2, 0x2, 0xa4e, 0xa4f, - 0x7, 0x77, 0x2, 0x2, 0xa4f, 0xa50, 0x7, 0x74, 0x2, 0x2, 0xa50, 0xa51, - 0x7, 0x67, 0x2, 0x2, 0xa51, 0xa52, 0x7, 0x66, 0x2, 0x2, 0xa52, 0xa53, - 0x7, 0x44, 0x2, 0x2, 0xa53, 0xa54, 0x7, 0x77, 0x2, 0x2, 0xa54, 0xa55, - 0x7, 0x68, 0x2, 0x2, 0xa55, 0xa56, 0x7, 0x68, 0x2, 0x2, 0xa56, 0xa57, - 0x7, 0x67, 0x2, 0x2, 0xa57, 0xa58, 0x7, 0x74, 0x2, 0x2, 0xa58, 0x178, - 0x3, 0x2, 0x2, 0x2, 0xa59, 0xa5a, 0x7, 0x55, 0x2, 0x2, 0xa5a, 0xa5b, - 0x7, 0x77, 0x2, 0x2, 0xa5b, 0xa5c, 0x7, 0x64, 0x2, 0x2, 0xa5c, 0xa5d, - 0x7, 0x72, 0x2, 0x2, 0xa5d, 0xa5e, 0x7, 0x63, 0x2, 0x2, 0xa5e, 0xa5f, - 0x7, 0x75, 0x2, 0x2, 0xa5f, 0xa60, 0x7, 0x75, 0x2, 0x2, 0xa60, 0xa61, - 0x7, 0x4b, 0x2, 0x2, 0xa61, 0xa62, 0x7, 0x70, 0x2, 0x2, 0xa62, 0xa63, - 0x7, 0x72, 0x2, 0x2, 0xa63, 0xa64, 0x7, 0x77, 0x2, 0x2, 0xa64, 0xa65, - 0x7, 0x76, 0x2, 0x2, 0xa65, 0x17a, 0x3, 0x2, 0x2, 0x2, 0xa66, 0xa67, - 0x7, 0x55, 0x2, 0x2, 0xa67, 0xa68, 0x7, 0x77, 0x2, 0x2, 0xa68, 0xa69, - 0x7, 0x64, 0x2, 0x2, 0xa69, 0xa6a, 0x7, 0x72, 0x2, 0x2, 0xa6a, 0xa6b, - 0x7, 0x63, 0x2, 0x2, 0xa6b, 0xa6c, 0x7, 0x75, 0x2, 0x2, 0xa6c, 0xa6d, - 0x7, 0x75, 0x2, 0x2, 0xa6d, 0xa6e, 0x7, 0x4b, 0x2, 0x2, 0xa6e, 0xa6f, - 0x7, 0x70, 0x2, 0x2, 0xa6f, 0xa70, 0x7, 0x72, 0x2, 0x2, 0xa70, 0xa71, - 0x7, 0x77, 0x2, 0x2, 0xa71, 0xa72, 0x7, 0x76, 0x2, 0x2, 0xa72, 0xa73, - 0x7, 0x4f, 0x2, 0x2, 0xa73, 0xa74, 0x7, 0x55, 0x2, 0x2, 0xa74, 0x17c, - 0x3, 0x2, 0x2, 0x2, 0xa75, 0xa76, 0x7, 0x75, 0x2, 0x2, 0xa76, 0xa77, - 0x7, 0x79, 0x2, 0x2, 0xa77, 0xa78, 0x7, 0x6b, 0x2, 0x2, 0xa78, 0xa79, - 0x7, 0x76, 0x2, 0x2, 0xa79, 0xa7a, 0x7, 0x65, 0x2, 0x2, 0xa7a, 0xa7b, - 0x7, 0x6a, 0x2, 0x2, 0xa7b, 0x17e, 0x3, 0x2, 0x2, 0x2, 0xa7c, 0xa7d, - 0x7, 0x56, 0x2, 0x2, 0xa7d, 0xa7e, 0x7, 0x67, 0x2, 0x2, 0xa7e, 0xa7f, - 0x7, 0x7a, 0x2, 0x2, 0xa7f, 0xa80, 0x7, 0x76, 0x2, 0x2, 0xa80, 0xa81, - 0x7, 0x77, 0x2, 0x2, 0xa81, 0xa82, 0x7, 0x74, 0x2, 0x2, 0xa82, 0xa83, - 0x7, 0x67, 0x2, 0x2, 0xa83, 0xa84, 0x7, 0x33, 0x2, 0x2, 0xa84, 0xa85, - 0x7, 0x46, 0x2, 0x2, 0xa85, 0x180, 0x3, 0x2, 0x2, 0x2, 0xa86, 0xa87, - 0x7, 0x56, 0x2, 0x2, 0xa87, 0xa88, 0x7, 0x67, 0x2, 0x2, 0xa88, 0xa89, - 0x7, 0x7a, 0x2, 0x2, 0xa89, 0xa8a, 0x7, 0x76, 0x2, 0x2, 0xa8a, 0xa8b, - 0x7, 0x77, 0x2, 0x2, 0xa8b, 0xa8c, 0x7, 0x74, 0x2, 0x2, 0xa8c, 0xa8d, - 0x7, 0x67, 0x2, 0x2, 0xa8d, 0xa8e, 0x7, 0x33, 0x2, 0x2, 0xa8e, 0xa8f, - 0x7, 0x46, 0x2, 0x2, 0xa8f, 0xa90, 0x7, 0x43, 0x2, 0x2, 0xa90, 0xa91, - 0x7, 0x74, 0x2, 0x2, 0xa91, 0xa92, 0x7, 0x74, 0x2, 0x2, 0xa92, 0xa93, - 0x7, 0x63, 0x2, 0x2, 0xa93, 0xa94, 0x7, 0x7b, 0x2, 0x2, 0xa94, 0x182, - 0x3, 0x2, 0x2, 0x2, 0xa95, 0xa96, 0x7, 0x56, 0x2, 0x2, 0xa96, 0xa97, - 0x7, 0x67, 0x2, 0x2, 0xa97, 0xa98, 0x7, 0x7a, 0x2, 0x2, 0xa98, 0xa99, - 0x7, 0x76, 0x2, 0x2, 0xa99, 0xa9a, 0x7, 0x77, 0x2, 0x2, 0xa9a, 0xa9b, - 0x7, 0x74, 0x2, 0x2, 0xa9b, 0xa9c, 0x7, 0x67, 0x2, 0x2, 0xa9c, 0xa9d, - 0x7, 0x34, 0x2, 0x2, 0xa9d, 0xa9e, 0x7, 0x46, 0x2, 0x2, 0xa9e, 0x184, - 0x3, 0x2, 0x2, 0x2, 0xa9f, 0xaa0, 0x7, 0x56, 0x2, 0x2, 0xaa0, 0xaa1, - 0x7, 0x67, 0x2, 0x2, 0xaa1, 0xaa2, 0x7, 0x7a, 0x2, 0x2, 0xaa2, 0xaa3, - 0x7, 0x76, 0x2, 0x2, 0xaa3, 0xaa4, 0x7, 0x77, 0x2, 0x2, 0xaa4, 0xaa5, - 0x7, 0x74, 0x2, 0x2, 0xaa5, 0xaa6, 0x7, 0x67, 0x2, 0x2, 0xaa6, 0xaa7, - 0x7, 0x34, 0x2, 0x2, 0xaa7, 0xaa8, 0x7, 0x46, 0x2, 0x2, 0xaa8, 0xaa9, - 0x7, 0x43, 0x2, 0x2, 0xaa9, 0xaaa, 0x7, 0x74, 0x2, 0x2, 0xaaa, 0xaab, - 0x7, 0x74, 0x2, 0x2, 0xaab, 0xaac, 0x7, 0x63, 0x2, 0x2, 0xaac, 0xaad, - 0x7, 0x7b, 0x2, 0x2, 0xaad, 0x186, 0x3, 0x2, 0x2, 0x2, 0xaae, 0xaaf, - 0x7, 0x56, 0x2, 0x2, 0xaaf, 0xab0, 0x7, 0x67, 0x2, 0x2, 0xab0, 0xab1, - 0x7, 0x7a, 0x2, 0x2, 0xab1, 0xab2, 0x7, 0x76, 0x2, 0x2, 0xab2, 0xab3, - 0x7, 0x77, 0x2, 0x2, 0xab3, 0xab4, 0x7, 0x74, 0x2, 0x2, 0xab4, 0xab5, - 0x7, 0x67, 0x2, 0x2, 0xab5, 0xab6, 0x7, 0x34, 0x2, 0x2, 0xab6, 0xab7, - 0x7, 0x46, 0x2, 0x2, 0xab7, 0xab8, 0x7, 0x4f, 0x2, 0x2, 0xab8, 0xab9, - 0x7, 0x55, 0x2, 0x2, 0xab9, 0x188, 0x3, 0x2, 0x2, 0x2, 0xaba, 0xabb, - 0x7, 0x56, 0x2, 0x2, 0xabb, 0xabc, 0x7, 0x67, 0x2, 0x2, 0xabc, 0xabd, - 0x7, 0x7a, 0x2, 0x2, 0xabd, 0xabe, 0x7, 0x76, 0x2, 0x2, 0xabe, 0xabf, - 0x7, 0x77, 0x2, 0x2, 0xabf, 0xac0, 0x7, 0x74, 0x2, 0x2, 0xac0, 0xac1, - 0x7, 0x67, 0x2, 0x2, 0xac1, 0xac2, 0x7, 0x34, 0x2, 0x2, 0xac2, 0xac3, - 0x7, 0x46, 0x2, 0x2, 0xac3, 0xac4, 0x7, 0x4f, 0x2, 0x2, 0xac4, 0xac5, - 0x7, 0x55, 0x2, 0x2, 0xac5, 0xac6, 0x7, 0x43, 0x2, 0x2, 0xac6, 0xac7, - 0x7, 0x74, 0x2, 0x2, 0xac7, 0xac8, 0x7, 0x74, 0x2, 0x2, 0xac8, 0xac9, - 0x7, 0x63, 0x2, 0x2, 0xac9, 0xaca, 0x7, 0x7b, 0x2, 0x2, 0xaca, 0x18a, - 0x3, 0x2, 0x2, 0x2, 0xacb, 0xacc, 0x7, 0x56, 0x2, 0x2, 0xacc, 0xacd, - 0x7, 0x67, 0x2, 0x2, 0xacd, 0xace, 0x7, 0x7a, 0x2, 0x2, 0xace, 0xacf, - 0x7, 0x76, 0x2, 0x2, 0xacf, 0xad0, 0x7, 0x77, 0x2, 0x2, 0xad0, 0xad1, - 0x7, 0x74, 0x2, 0x2, 0xad1, 0xad2, 0x7, 0x67, 0x2, 0x2, 0xad2, 0xad3, - 0x7, 0x35, 0x2, 0x2, 0xad3, 0xad4, 0x7, 0x46, 0x2, 0x2, 0xad4, 0x18c, - 0x3, 0x2, 0x2, 0x2, 0xad5, 0xad6, 0x7, 0x56, 0x2, 0x2, 0xad6, 0xad7, - 0x7, 0x67, 0x2, 0x2, 0xad7, 0xad8, 0x7, 0x7a, 0x2, 0x2, 0xad8, 0xad9, - 0x7, 0x76, 0x2, 0x2, 0xad9, 0xada, 0x7, 0x77, 0x2, 0x2, 0xada, 0xadb, - 0x7, 0x74, 0x2, 0x2, 0xadb, 0xadc, 0x7, 0x67, 0x2, 0x2, 0xadc, 0xadd, - 0x7, 0x45, 0x2, 0x2, 0xadd, 0xade, 0x7, 0x77, 0x2, 0x2, 0xade, 0xadf, - 0x7, 0x64, 0x2, 0x2, 0xadf, 0xae0, 0x7, 0x67, 0x2, 0x2, 0xae0, 0x18e, - 0x3, 0x2, 0x2, 0x2, 0xae1, 0xae2, 0x7, 0x56, 0x2, 0x2, 0xae2, 0xae3, - 0x7, 0x67, 0x2, 0x2, 0xae3, 0xae4, 0x7, 0x7a, 0x2, 0x2, 0xae4, 0xae5, - 0x7, 0x76, 0x2, 0x2, 0xae5, 0xae6, 0x7, 0x77, 0x2, 0x2, 0xae6, 0xae7, - 0x7, 0x74, 0x2, 0x2, 0xae7, 0xae8, 0x7, 0x67, 0x2, 0x2, 0xae8, 0xae9, - 0x7, 0x45, 0x2, 0x2, 0xae9, 0xaea, 0x7, 0x77, 0x2, 0x2, 0xaea, 0xaeb, - 0x7, 0x64, 0x2, 0x2, 0xaeb, 0xaec, 0x7, 0x67, 0x2, 0x2, 0xaec, 0xaed, - 0x7, 0x43, 0x2, 0x2, 0xaed, 0xaee, 0x7, 0x74, 0x2, 0x2, 0xaee, 0xaef, - 0x7, 0x74, 0x2, 0x2, 0xaef, 0xaf0, 0x7, 0x63, 0x2, 0x2, 0xaf0, 0xaf1, - 0x7, 0x7b, 0x2, 0x2, 0xaf1, 0x190, 0x3, 0x2, 0x2, 0x2, 0xaf2, 0xaf3, - 0x7, 0x76, 0x2, 0x2, 0xaf3, 0xaf4, 0x7, 0x74, 0x2, 0x2, 0xaf4, 0xaf5, - 0x7, 0x6b, 0x2, 0x2, 0xaf5, 0xaf6, 0x7, 0x63, 0x2, 0x2, 0xaf6, 0xaf7, - 0x7, 0x70, 0x2, 0x2, 0xaf7, 0xaf8, 0x7, 0x69, 0x2, 0x2, 0xaf8, 0xaf9, - 0x7, 0x6e, 0x2, 0x2, 0xaf9, 0xafa, 0x7, 0x67, 0x2, 0x2, 0xafa, 0x192, - 0x3, 0x2, 0x2, 0x2, 0xafb, 0xafc, 0x7, 0x76, 0x2, 0x2, 0xafc, 0xafd, - 0x7, 0x74, 0x2, 0x2, 0xafd, 0xafe, 0x7, 0x6b, 0x2, 0x2, 0xafe, 0xaff, - 0x7, 0x63, 0x2, 0x2, 0xaff, 0xb00, 0x7, 0x70, 0x2, 0x2, 0xb00, 0xb01, - 0x7, 0x69, 0x2, 0x2, 0xb01, 0xb02, 0x7, 0x6e, 0x2, 0x2, 0xb02, 0xb03, - 0x7, 0x67, 0x2, 0x2, 0xb03, 0xb04, 0x7, 0x63, 0x2, 0x2, 0xb04, 0xb05, - 0x7, 0x66, 0x2, 0x2, 0xb05, 0xb06, 0x7, 0x6c, 0x2, 0x2, 0xb06, 0x194, - 0x3, 0x2, 0x2, 0x2, 0xb07, 0xb08, 0x7, 0x56, 0x2, 0x2, 0xb08, 0xb09, - 0x7, 0x74, 0x2, 0x2, 0xb09, 0xb0a, 0x7, 0x6b, 0x2, 0x2, 0xb0a, 0xb0b, - 0x7, 0x63, 0x2, 0x2, 0xb0b, 0xb0c, 0x7, 0x70, 0x2, 0x2, 0xb0c, 0xb0d, - 0x7, 0x69, 0x2, 0x2, 0xb0d, 0xb0e, 0x7, 0x6e, 0x2, 0x2, 0xb0e, 0xb0f, - 0x7, 0x67, 0x2, 0x2, 0xb0f, 0xb10, 0x7, 0x55, 0x2, 0x2, 0xb10, 0xb11, - 0x7, 0x76, 0x2, 0x2, 0xb11, 0xb12, 0x7, 0x74, 0x2, 0x2, 0xb12, 0xb13, - 0x7, 0x67, 0x2, 0x2, 0xb13, 0xb14, 0x7, 0x63, 0x2, 0x2, 0xb14, 0xb15, - 0x7, 0x6f, 0x2, 0x2, 0xb15, 0x196, 0x3, 0x2, 0x2, 0x2, 0xb16, 0xb17, - 0x7, 0x77, 0x2, 0x2, 0xb17, 0xb18, 0x7, 0x70, 0x2, 0x2, 0xb18, 0xb19, - 0x7, 0x6b, 0x2, 0x2, 0xb19, 0xb1a, 0x7, 0x68, 0x2, 0x2, 0xb1a, 0xb1b, - 0x7, 0x71, 0x2, 0x2, 0xb1b, 0xb1c, 0x7, 0x74, 0x2, 0x2, 0xb1c, 0xb1d, - 0x7, 0x6f, 0x2, 0x2, 0xb1d, 0x198, 0x3, 0x2, 0x2, 0x2, 0xb1e, 0xb1f, - 0x7, 0x77, 0x2, 0x2, 0xb1f, 0xb20, 0x7, 0x6b, 0x2, 0x2, 0xb20, 0xb21, - 0x7, 0x70, 0x2, 0x2, 0xb21, 0xb22, 0x7, 0x76, 0x2, 0x2, 0xb22, 0x19a, - 0x3, 0x2, 0x2, 0x2, 0xb23, 0xb24, 0x7, 0x77, 0x2, 0x2, 0xb24, 0xb25, - 0x7, 0x6b, 0x2, 0x2, 0xb25, 0xb26, 0x7, 0x70, 0x2, 0x2, 0xb26, 0xb27, - 0x7, 0x76, 0x2, 0x2, 0xb27, 0xb28, 0x7, 0x35, 0x2, 0x2, 0xb28, 0xb29, - 0x7, 0x34, 0x2, 0x2, 0xb29, 0xb2a, 0x7, 0x61, 0x2, 0x2, 0xb2a, 0xb2b, - 0x7, 0x76, 0x2, 0x2, 0xb2b, 0x19c, 0x3, 0x2, 0x2, 0x2, 0xb2c, 0xb2d, - 0x7, 0x77, 0x2, 0x2, 0xb2d, 0xb2e, 0x7, 0x6b, 0x2, 0x2, 0xb2e, 0xb2f, - 0x7, 0x70, 0x2, 0x2, 0xb2f, 0xb30, 0x7, 0x76, 0x2, 0x2, 0xb30, 0xb31, - 0x7, 0x38, 0x2, 0x2, 0xb31, 0xb32, 0x7, 0x36, 0x2, 0x2, 0xb32, 0xb33, - 0x7, 0x61, 0x2, 0x2, 0xb33, 0xb34, 0x7, 0x76, 0x2, 0x2, 0xb34, 0x19e, - 0x3, 0x2, 0x2, 0x2, 0xb35, 0xb36, 0x7, 0x77, 0x2, 0x2, 0xb36, 0xb37, - 0x7, 0x70, 0x2, 0x2, 0xb37, 0xb38, 0x7, 0x75, 0x2, 0x2, 0xb38, 0xb39, - 0x7, 0x6b, 0x2, 0x2, 0xb39, 0xb3a, 0x7, 0x69, 0x2, 0x2, 0xb3a, 0xb3b, - 0x7, 0x70, 0x2, 0x2, 0xb3b, 0xb3c, 0x7, 0x67, 0x2, 0x2, 0xb3c, 0xb3d, - 0x7, 0x66, 0x2, 0x2, 0xb3d, 0xb3e, 0x7, 0x22, 0x2, 0x2, 0xb3e, 0xb3f, - 0x7, 0x6b, 0x2, 0x2, 0xb3f, 0xb40, 0x7, 0x70, 0x2, 0x2, 0xb40, 0xb41, - 0x7, 0x76, 0x2, 0x2, 0xb41, 0x1a0, 0x3, 0x2, 0x2, 0x2, 0xb42, 0xb43, - 0x7, 0x77, 0x2, 0x2, 0xb43, 0xb44, 0x7, 0x6b, 0x2, 0x2, 0xb44, 0xb45, - 0x7, 0x70, 0x2, 0x2, 0xb45, 0xb46, 0x7, 0x76, 0x2, 0x2, 0xb46, 0xb47, - 0x7, 0x33, 0x2, 0x2, 0xb47, 0x1a2, 0x3, 0x2, 0x2, 0x2, 0xb48, 0xb49, - 0x7, 0x77, 0x2, 0x2, 0xb49, 0xb4a, 0x7, 0x6b, 0x2, 0x2, 0xb4a, 0xb4b, - 0x7, 0x70, 0x2, 0x2, 0xb4b, 0xb4c, 0x7, 0x76, 0x2, 0x2, 0xb4c, 0xb4d, - 0x7, 0x34, 0x2, 0x2, 0xb4d, 0x1a4, 0x3, 0x2, 0x2, 0x2, 0xb4e, 0xb4f, - 0x7, 0x77, 0x2, 0x2, 0xb4f, 0xb50, 0x7, 0x6b, 0x2, 0x2, 0xb50, 0xb51, - 0x7, 0x70, 0x2, 0x2, 0xb51, 0xb52, 0x7, 0x76, 0x2, 0x2, 0xb52, 0xb53, - 0x7, 0x35, 0x2, 0x2, 0xb53, 0x1a6, 0x3, 0x2, 0x2, 0x2, 0xb54, 0xb55, - 0x7, 0x77, 0x2, 0x2, 0xb55, 0xb56, 0x7, 0x6b, 0x2, 0x2, 0xb56, 0xb57, - 0x7, 0x70, 0x2, 0x2, 0xb57, 0xb58, 0x7, 0x76, 0x2, 0x2, 0xb58, 0xb59, - 0x7, 0x36, 0x2, 0x2, 0xb59, 0x1a8, 0x3, 0x2, 0x2, 0x2, 0xb5a, 0xb5b, - 0x7, 0x77, 0x2, 0x2, 0xb5b, 0xb5c, 0x7, 0x6b, 0x2, 0x2, 0xb5c, 0xb5d, - 0x7, 0x70, 0x2, 0x2, 0xb5d, 0xb5e, 0x7, 0x76, 0x2, 0x2, 0xb5e, 0xb5f, - 0x7, 0x33, 0x2, 0x2, 0xb5f, 0xb60, 0x7, 0x7a, 0x2, 0x2, 0xb60, 0xb61, - 0x7, 0x33, 0x2, 0x2, 0xb61, 0x1aa, 0x3, 0x2, 0x2, 0x2, 0xb62, 0xb63, - 0x7, 0x77, 0x2, 0x2, 0xb63, 0xb64, 0x7, 0x6b, 0x2, 0x2, 0xb64, 0xb65, - 0x7, 0x70, 0x2, 0x2, 0xb65, 0xb66, 0x7, 0x76, 0x2, 0x2, 0xb66, 0xb67, - 0x7, 0x33, 0x2, 0x2, 0xb67, 0xb68, 0x7, 0x7a, 0x2, 0x2, 0xb68, 0xb69, - 0x7, 0x34, 0x2, 0x2, 0xb69, 0x1ac, 0x3, 0x2, 0x2, 0x2, 0xb6a, 0xb6b, - 0x7, 0x77, 0x2, 0x2, 0xb6b, 0xb6c, 0x7, 0x6b, 0x2, 0x2, 0xb6c, 0xb6d, - 0x7, 0x70, 0x2, 0x2, 0xb6d, 0xb6e, 0x7, 0x76, 0x2, 0x2, 0xb6e, 0xb6f, - 0x7, 0x33, 0x2, 0x2, 0xb6f, 0xb70, 0x7, 0x7a, 0x2, 0x2, 0xb70, 0xb71, - 0x7, 0x35, 0x2, 0x2, 0xb71, 0x1ae, 0x3, 0x2, 0x2, 0x2, 0xb72, 0xb73, - 0x7, 0x77, 0x2, 0x2, 0xb73, 0xb74, 0x7, 0x6b, 0x2, 0x2, 0xb74, 0xb75, - 0x7, 0x70, 0x2, 0x2, 0xb75, 0xb76, 0x7, 0x76, 0x2, 0x2, 0xb76, 0xb77, - 0x7, 0x33, 0x2, 0x2, 0xb77, 0xb78, 0x7, 0x7a, 0x2, 0x2, 0xb78, 0xb79, - 0x7, 0x36, 0x2, 0x2, 0xb79, 0x1b0, 0x3, 0x2, 0x2, 0x2, 0xb7a, 0xb7b, - 0x7, 0x77, 0x2, 0x2, 0xb7b, 0xb7c, 0x7, 0x6b, 0x2, 0x2, 0xb7c, 0xb7d, - 0x7, 0x70, 0x2, 0x2, 0xb7d, 0xb7e, 0x7, 0x76, 0x2, 0x2, 0xb7e, 0xb7f, - 0x7, 0x34, 0x2, 0x2, 0xb7f, 0xb80, 0x7, 0x7a, 0x2, 0x2, 0xb80, 0xb81, - 0x7, 0x33, 0x2, 0x2, 0xb81, 0x1b2, 0x3, 0x2, 0x2, 0x2, 0xb82, 0xb83, - 0x7, 0x77, 0x2, 0x2, 0xb83, 0xb84, 0x7, 0x6b, 0x2, 0x2, 0xb84, 0xb85, - 0x7, 0x70, 0x2, 0x2, 0xb85, 0xb86, 0x7, 0x76, 0x2, 0x2, 0xb86, 0xb87, - 0x7, 0x34, 0x2, 0x2, 0xb87, 0xb88, 0x7, 0x7a, 0x2, 0x2, 0xb88, 0xb89, - 0x7, 0x34, 0x2, 0x2, 0xb89, 0x1b4, 0x3, 0x2, 0x2, 0x2, 0xb8a, 0xb8b, - 0x7, 0x77, 0x2, 0x2, 0xb8b, 0xb8c, 0x7, 0x6b, 0x2, 0x2, 0xb8c, 0xb8d, - 0x7, 0x70, 0x2, 0x2, 0xb8d, 0xb8e, 0x7, 0x76, 0x2, 0x2, 0xb8e, 0xb8f, - 0x7, 0x34, 0x2, 0x2, 0xb8f, 0xb90, 0x7, 0x7a, 0x2, 0x2, 0xb90, 0xb91, - 0x7, 0x35, 0x2, 0x2, 0xb91, 0x1b6, 0x3, 0x2, 0x2, 0x2, 0xb92, 0xb93, - 0x7, 0x77, 0x2, 0x2, 0xb93, 0xb94, 0x7, 0x6b, 0x2, 0x2, 0xb94, 0xb95, - 0x7, 0x70, 0x2, 0x2, 0xb95, 0xb96, 0x7, 0x76, 0x2, 0x2, 0xb96, 0xb97, - 0x7, 0x34, 0x2, 0x2, 0xb97, 0xb98, 0x7, 0x7a, 0x2, 0x2, 0xb98, 0xb99, - 0x7, 0x36, 0x2, 0x2, 0xb99, 0x1b8, 0x3, 0x2, 0x2, 0x2, 0xb9a, 0xb9b, - 0x7, 0x77, 0x2, 0x2, 0xb9b, 0xb9c, 0x7, 0x6b, 0x2, 0x2, 0xb9c, 0xb9d, - 0x7, 0x70, 0x2, 0x2, 0xb9d, 0xb9e, 0x7, 0x76, 0x2, 0x2, 0xb9e, 0xb9f, - 0x7, 0x35, 0x2, 0x2, 0xb9f, 0xba0, 0x7, 0x7a, 0x2, 0x2, 0xba0, 0xba1, - 0x7, 0x33, 0x2, 0x2, 0xba1, 0x1ba, 0x3, 0x2, 0x2, 0x2, 0xba2, 0xba3, - 0x7, 0x77, 0x2, 0x2, 0xba3, 0xba4, 0x7, 0x6b, 0x2, 0x2, 0xba4, 0xba5, - 0x7, 0x70, 0x2, 0x2, 0xba5, 0xba6, 0x7, 0x76, 0x2, 0x2, 0xba6, 0xba7, - 0x7, 0x35, 0x2, 0x2, 0xba7, 0xba8, 0x7, 0x7a, 0x2, 0x2, 0xba8, 0xba9, - 0x7, 0x34, 0x2, 0x2, 0xba9, 0x1bc, 0x3, 0x2, 0x2, 0x2, 0xbaa, 0xbab, - 0x7, 0x77, 0x2, 0x2, 0xbab, 0xbac, 0x7, 0x6b, 0x2, 0x2, 0xbac, 0xbad, - 0x7, 0x70, 0x2, 0x2, 0xbad, 0xbae, 0x7, 0x76, 0x2, 0x2, 0xbae, 0xbaf, - 0x7, 0x35, 0x2, 0x2, 0xbaf, 0xbb0, 0x7, 0x7a, 0x2, 0x2, 0xbb0, 0xbb1, - 0x7, 0x35, 0x2, 0x2, 0xbb1, 0x1be, 0x3, 0x2, 0x2, 0x2, 0xbb2, 0xbb3, - 0x7, 0x77, 0x2, 0x2, 0xbb3, 0xbb4, 0x7, 0x6b, 0x2, 0x2, 0xbb4, 0xbb5, - 0x7, 0x70, 0x2, 0x2, 0xbb5, 0xbb6, 0x7, 0x76, 0x2, 0x2, 0xbb6, 0xbb7, - 0x7, 0x35, 0x2, 0x2, 0xbb7, 0xbb8, 0x7, 0x7a, 0x2, 0x2, 0xbb8, 0xbb9, - 0x7, 0x36, 0x2, 0x2, 0xbb9, 0x1c0, 0x3, 0x2, 0x2, 0x2, 0xbba, 0xbbb, - 0x7, 0x77, 0x2, 0x2, 0xbbb, 0xbbc, 0x7, 0x6b, 0x2, 0x2, 0xbbc, 0xbbd, - 0x7, 0x70, 0x2, 0x2, 0xbbd, 0xbbe, 0x7, 0x76, 0x2, 0x2, 0xbbe, 0xbbf, - 0x7, 0x36, 0x2, 0x2, 0xbbf, 0xbc0, 0x7, 0x7a, 0x2, 0x2, 0xbc0, 0xbc1, - 0x7, 0x33, 0x2, 0x2, 0xbc1, 0x1c2, 0x3, 0x2, 0x2, 0x2, 0xbc2, 0xbc3, - 0x7, 0x77, 0x2, 0x2, 0xbc3, 0xbc4, 0x7, 0x6b, 0x2, 0x2, 0xbc4, 0xbc5, - 0x7, 0x70, 0x2, 0x2, 0xbc5, 0xbc6, 0x7, 0x76, 0x2, 0x2, 0xbc6, 0xbc7, - 0x7, 0x36, 0x2, 0x2, 0xbc7, 0xbc8, 0x7, 0x7a, 0x2, 0x2, 0xbc8, 0xbc9, - 0x7, 0x34, 0x2, 0x2, 0xbc9, 0x1c4, 0x3, 0x2, 0x2, 0x2, 0xbca, 0xbcb, - 0x7, 0x77, 0x2, 0x2, 0xbcb, 0xbcc, 0x7, 0x6b, 0x2, 0x2, 0xbcc, 0xbcd, - 0x7, 0x70, 0x2, 0x2, 0xbcd, 0xbce, 0x7, 0x76, 0x2, 0x2, 0xbce, 0xbcf, - 0x7, 0x36, 0x2, 0x2, 0xbcf, 0xbd0, 0x7, 0x7a, 0x2, 0x2, 0xbd0, 0xbd1, - 0x7, 0x35, 0x2, 0x2, 0xbd1, 0x1c6, 0x3, 0x2, 0x2, 0x2, 0xbd2, 0xbd3, - 0x7, 0x77, 0x2, 0x2, 0xbd3, 0xbd4, 0x7, 0x6b, 0x2, 0x2, 0xbd4, 0xbd5, - 0x7, 0x70, 0x2, 0x2, 0xbd5, 0xbd6, 0x7, 0x76, 0x2, 0x2, 0xbd6, 0xbd7, - 0x7, 0x36, 0x2, 0x2, 0xbd7, 0xbd8, 0x7, 0x7a, 0x2, 0x2, 0xbd8, 0xbd9, - 0x7, 0x36, 0x2, 0x2, 0xbd9, 0x1c8, 0x3, 0x2, 0x2, 0x2, 0xbda, 0xbdb, - 0x7, 0x66, 0x2, 0x2, 0xbdb, 0xbdc, 0x7, 0x79, 0x2, 0x2, 0xbdc, 0xbdd, - 0x7, 0x71, 0x2, 0x2, 0xbdd, 0xbde, 0x7, 0x74, 0x2, 0x2, 0xbde, 0xbdf, - 0x7, 0x66, 0x2, 0x2, 0xbdf, 0x1ca, 0x3, 0x2, 0x2, 0x2, 0xbe0, 0xbe1, - 0x7, 0x66, 0x2, 0x2, 0xbe1, 0xbe2, 0x7, 0x79, 0x2, 0x2, 0xbe2, 0xbe3, - 0x7, 0x71, 0x2, 0x2, 0xbe3, 0xbe4, 0x7, 0x74, 0x2, 0x2, 0xbe4, 0xbe5, - 0x7, 0x66, 0x2, 0x2, 0xbe5, 0xbe6, 0x7, 0x33, 0x2, 0x2, 0xbe6, 0x1cc, - 0x3, 0x2, 0x2, 0x2, 0xbe7, 0xbe8, 0x7, 0x66, 0x2, 0x2, 0xbe8, 0xbe9, - 0x7, 0x79, 0x2, 0x2, 0xbe9, 0xbea, 0x7, 0x71, 0x2, 0x2, 0xbea, 0xbeb, - 0x7, 0x74, 0x2, 0x2, 0xbeb, 0xbec, 0x7, 0x66, 0x2, 0x2, 0xbec, 0xbed, - 0x7, 0x34, 0x2, 0x2, 0xbed, 0x1ce, 0x3, 0x2, 0x2, 0x2, 0xbee, 0xbef, - 0x7, 0x66, 0x2, 0x2, 0xbef, 0xbf0, 0x7, 0x79, 0x2, 0x2, 0xbf0, 0xbf1, - 0x7, 0x71, 0x2, 0x2, 0xbf1, 0xbf2, 0x7, 0x74, 0x2, 0x2, 0xbf2, 0xbf3, - 0x7, 0x66, 0x2, 0x2, 0xbf3, 0xbf4, 0x7, 0x35, 0x2, 0x2, 0xbf4, 0x1d0, - 0x3, 0x2, 0x2, 0x2, 0xbf5, 0xbf6, 0x7, 0x66, 0x2, 0x2, 0xbf6, 0xbf7, - 0x7, 0x79, 0x2, 0x2, 0xbf7, 0xbf8, 0x7, 0x71, 0x2, 0x2, 0xbf8, 0xbf9, - 0x7, 0x74, 0x2, 0x2, 0xbf9, 0xbfa, 0x7, 0x66, 0x2, 0x2, 0xbfa, 0xbfb, - 0x7, 0x36, 0x2, 0x2, 0xbfb, 0x1d2, 0x3, 0x2, 0x2, 0x2, 0xbfc, 0xbfd, - 0x7, 0x66, 0x2, 0x2, 0xbfd, 0xbfe, 0x7, 0x79, 0x2, 0x2, 0xbfe, 0xbff, - 0x7, 0x71, 0x2, 0x2, 0xbff, 0xc00, 0x7, 0x74, 0x2, 0x2, 0xc00, 0xc01, - 0x7, 0x66, 0x2, 0x2, 0xc01, 0xc02, 0x7, 0x33, 0x2, 0x2, 0xc02, 0xc03, - 0x7, 0x7a, 0x2, 0x2, 0xc03, 0xc04, 0x7, 0x33, 0x2, 0x2, 0xc04, 0x1d4, - 0x3, 0x2, 0x2, 0x2, 0xc05, 0xc06, 0x7, 0x66, 0x2, 0x2, 0xc06, 0xc07, - 0x7, 0x79, 0x2, 0x2, 0xc07, 0xc08, 0x7, 0x71, 0x2, 0x2, 0xc08, 0xc09, - 0x7, 0x74, 0x2, 0x2, 0xc09, 0xc0a, 0x7, 0x66, 0x2, 0x2, 0xc0a, 0xc0b, - 0x7, 0x33, 0x2, 0x2, 0xc0b, 0xc0c, 0x7, 0x7a, 0x2, 0x2, 0xc0c, 0xc0d, - 0x7, 0x34, 0x2, 0x2, 0xc0d, 0x1d6, 0x3, 0x2, 0x2, 0x2, 0xc0e, 0xc0f, - 0x7, 0x66, 0x2, 0x2, 0xc0f, 0xc10, 0x7, 0x79, 0x2, 0x2, 0xc10, 0xc11, - 0x7, 0x71, 0x2, 0x2, 0xc11, 0xc12, 0x7, 0x74, 0x2, 0x2, 0xc12, 0xc13, - 0x7, 0x66, 0x2, 0x2, 0xc13, 0xc14, 0x7, 0x33, 0x2, 0x2, 0xc14, 0xc15, - 0x7, 0x7a, 0x2, 0x2, 0xc15, 0xc16, 0x7, 0x35, 0x2, 0x2, 0xc16, 0x1d8, - 0x3, 0x2, 0x2, 0x2, 0xc17, 0xc18, 0x7, 0x66, 0x2, 0x2, 0xc18, 0xc19, - 0x7, 0x79, 0x2, 0x2, 0xc19, 0xc1a, 0x7, 0x71, 0x2, 0x2, 0xc1a, 0xc1b, - 0x7, 0x74, 0x2, 0x2, 0xc1b, 0xc1c, 0x7, 0x66, 0x2, 0x2, 0xc1c, 0xc1d, - 0x7, 0x33, 0x2, 0x2, 0xc1d, 0xc1e, 0x7, 0x7a, 0x2, 0x2, 0xc1e, 0xc1f, - 0x7, 0x36, 0x2, 0x2, 0xc1f, 0x1da, 0x3, 0x2, 0x2, 0x2, 0xc20, 0xc21, - 0x7, 0x66, 0x2, 0x2, 0xc21, 0xc22, 0x7, 0x79, 0x2, 0x2, 0xc22, 0xc23, - 0x7, 0x71, 0x2, 0x2, 0xc23, 0xc24, 0x7, 0x74, 0x2, 0x2, 0xc24, 0xc25, - 0x7, 0x66, 0x2, 0x2, 0xc25, 0xc26, 0x7, 0x34, 0x2, 0x2, 0xc26, 0xc27, - 0x7, 0x7a, 0x2, 0x2, 0xc27, 0xc28, 0x7, 0x33, 0x2, 0x2, 0xc28, 0x1dc, - 0x3, 0x2, 0x2, 0x2, 0xc29, 0xc2a, 0x7, 0x66, 0x2, 0x2, 0xc2a, 0xc2b, - 0x7, 0x79, 0x2, 0x2, 0xc2b, 0xc2c, 0x7, 0x71, 0x2, 0x2, 0xc2c, 0xc2d, - 0x7, 0x74, 0x2, 0x2, 0xc2d, 0xc2e, 0x7, 0x66, 0x2, 0x2, 0xc2e, 0xc2f, - 0x7, 0x34, 0x2, 0x2, 0xc2f, 0xc30, 0x7, 0x7a, 0x2, 0x2, 0xc30, 0xc31, - 0x7, 0x34, 0x2, 0x2, 0xc31, 0x1de, 0x3, 0x2, 0x2, 0x2, 0xc32, 0xc33, - 0x7, 0x66, 0x2, 0x2, 0xc33, 0xc34, 0x7, 0x79, 0x2, 0x2, 0xc34, 0xc35, - 0x7, 0x71, 0x2, 0x2, 0xc35, 0xc36, 0x7, 0x74, 0x2, 0x2, 0xc36, 0xc37, - 0x7, 0x66, 0x2, 0x2, 0xc37, 0xc38, 0x7, 0x34, 0x2, 0x2, 0xc38, 0xc39, - 0x7, 0x7a, 0x2, 0x2, 0xc39, 0xc3a, 0x7, 0x35, 0x2, 0x2, 0xc3a, 0x1e0, - 0x3, 0x2, 0x2, 0x2, 0xc3b, 0xc3c, 0x7, 0x66, 0x2, 0x2, 0xc3c, 0xc3d, - 0x7, 0x79, 0x2, 0x2, 0xc3d, 0xc3e, 0x7, 0x71, 0x2, 0x2, 0xc3e, 0xc3f, - 0x7, 0x74, 0x2, 0x2, 0xc3f, 0xc40, 0x7, 0x66, 0x2, 0x2, 0xc40, 0xc41, - 0x7, 0x34, 0x2, 0x2, 0xc41, 0xc42, 0x7, 0x7a, 0x2, 0x2, 0xc42, 0xc43, - 0x7, 0x36, 0x2, 0x2, 0xc43, 0x1e2, 0x3, 0x2, 0x2, 0x2, 0xc44, 0xc45, - 0x7, 0x66, 0x2, 0x2, 0xc45, 0xc46, 0x7, 0x79, 0x2, 0x2, 0xc46, 0xc47, - 0x7, 0x71, 0x2, 0x2, 0xc47, 0xc48, 0x7, 0x74, 0x2, 0x2, 0xc48, 0xc49, - 0x7, 0x66, 0x2, 0x2, 0xc49, 0xc4a, 0x7, 0x35, 0x2, 0x2, 0xc4a, 0xc4b, - 0x7, 0x7a, 0x2, 0x2, 0xc4b, 0xc4c, 0x7, 0x33, 0x2, 0x2, 0xc4c, 0x1e4, - 0x3, 0x2, 0x2, 0x2, 0xc4d, 0xc4e, 0x7, 0x66, 0x2, 0x2, 0xc4e, 0xc4f, - 0x7, 0x79, 0x2, 0x2, 0xc4f, 0xc50, 0x7, 0x71, 0x2, 0x2, 0xc50, 0xc51, - 0x7, 0x74, 0x2, 0x2, 0xc51, 0xc52, 0x7, 0x66, 0x2, 0x2, 0xc52, 0xc53, - 0x7, 0x35, 0x2, 0x2, 0xc53, 0xc54, 0x7, 0x7a, 0x2, 0x2, 0xc54, 0xc55, - 0x7, 0x34, 0x2, 0x2, 0xc55, 0x1e6, 0x3, 0x2, 0x2, 0x2, 0xc56, 0xc57, - 0x7, 0x66, 0x2, 0x2, 0xc57, 0xc58, 0x7, 0x79, 0x2, 0x2, 0xc58, 0xc59, - 0x7, 0x71, 0x2, 0x2, 0xc59, 0xc5a, 0x7, 0x74, 0x2, 0x2, 0xc5a, 0xc5b, - 0x7, 0x66, 0x2, 0x2, 0xc5b, 0xc5c, 0x7, 0x35, 0x2, 0x2, 0xc5c, 0xc5d, - 0x7, 0x7a, 0x2, 0x2, 0xc5d, 0xc5e, 0x7, 0x35, 0x2, 0x2, 0xc5e, 0x1e8, - 0x3, 0x2, 0x2, 0x2, 0xc5f, 0xc60, 0x7, 0x66, 0x2, 0x2, 0xc60, 0xc61, - 0x7, 0x79, 0x2, 0x2, 0xc61, 0xc62, 0x7, 0x71, 0x2, 0x2, 0xc62, 0xc63, - 0x7, 0x74, 0x2, 0x2, 0xc63, 0xc64, 0x7, 0x66, 0x2, 0x2, 0xc64, 0xc65, - 0x7, 0x35, 0x2, 0x2, 0xc65, 0xc66, 0x7, 0x7a, 0x2, 0x2, 0xc66, 0xc67, - 0x7, 0x36, 0x2, 0x2, 0xc67, 0x1ea, 0x3, 0x2, 0x2, 0x2, 0xc68, 0xc69, - 0x7, 0x66, 0x2, 0x2, 0xc69, 0xc6a, 0x7, 0x79, 0x2, 0x2, 0xc6a, 0xc6b, - 0x7, 0x71, 0x2, 0x2, 0xc6b, 0xc6c, 0x7, 0x74, 0x2, 0x2, 0xc6c, 0xc6d, - 0x7, 0x66, 0x2, 0x2, 0xc6d, 0xc6e, 0x7, 0x36, 0x2, 0x2, 0xc6e, 0xc6f, - 0x7, 0x7a, 0x2, 0x2, 0xc6f, 0xc70, 0x7, 0x33, 0x2, 0x2, 0xc70, 0x1ec, - 0x3, 0x2, 0x2, 0x2, 0xc71, 0xc72, 0x7, 0x66, 0x2, 0x2, 0xc72, 0xc73, - 0x7, 0x79, 0x2, 0x2, 0xc73, 0xc74, 0x7, 0x71, 0x2, 0x2, 0xc74, 0xc75, - 0x7, 0x74, 0x2, 0x2, 0xc75, 0xc76, 0x7, 0x66, 0x2, 0x2, 0xc76, 0xc77, - 0x7, 0x36, 0x2, 0x2, 0xc77, 0xc78, 0x7, 0x7a, 0x2, 0x2, 0xc78, 0xc79, - 0x7, 0x34, 0x2, 0x2, 0xc79, 0x1ee, 0x3, 0x2, 0x2, 0x2, 0xc7a, 0xc7b, - 0x7, 0x66, 0x2, 0x2, 0xc7b, 0xc7c, 0x7, 0x79, 0x2, 0x2, 0xc7c, 0xc7d, - 0x7, 0x71, 0x2, 0x2, 0xc7d, 0xc7e, 0x7, 0x74, 0x2, 0x2, 0xc7e, 0xc7f, - 0x7, 0x66, 0x2, 0x2, 0xc7f, 0xc80, 0x7, 0x36, 0x2, 0x2, 0xc80, 0xc81, - 0x7, 0x7a, 0x2, 0x2, 0xc81, 0xc82, 0x7, 0x35, 0x2, 0x2, 0xc82, 0x1f0, - 0x3, 0x2, 0x2, 0x2, 0xc83, 0xc84, 0x7, 0x66, 0x2, 0x2, 0xc84, 0xc85, - 0x7, 0x79, 0x2, 0x2, 0xc85, 0xc86, 0x7, 0x71, 0x2, 0x2, 0xc86, 0xc87, - 0x7, 0x74, 0x2, 0x2, 0xc87, 0xc88, 0x7, 0x66, 0x2, 0x2, 0xc88, 0xc89, - 0x7, 0x36, 0x2, 0x2, 0xc89, 0xc8a, 0x7, 0x7a, 0x2, 0x2, 0xc8a, 0xc8b, - 0x7, 0x36, 0x2, 0x2, 0xc8b, 0x1f2, 0x3, 0x2, 0x2, 0x2, 0xc8c, 0xc8d, - 0x7, 0x78, 0x2, 0x2, 0xc8d, 0xc8e, 0x7, 0x67, 0x2, 0x2, 0xc8e, 0xc8f, - 0x7, 0x65, 0x2, 0x2, 0xc8f, 0xc90, 0x7, 0x76, 0x2, 0x2, 0xc90, 0xc91, - 0x7, 0x71, 0x2, 0x2, 0xc91, 0xc92, 0x7, 0x74, 0x2, 0x2, 0xc92, 0x1f4, - 0x3, 0x2, 0x2, 0x2, 0xc93, 0xc94, 0x7, 0x78, 0x2, 0x2, 0xc94, 0xc95, - 0x7, 0x71, 0x2, 0x2, 0xc95, 0xc96, 0x7, 0x6e, 0x2, 0x2, 0xc96, 0xc97, - 0x7, 0x63, 0x2, 0x2, 0xc97, 0xc98, 0x7, 0x76, 0x2, 0x2, 0xc98, 0xc99, - 0x7, 0x6b, 0x2, 0x2, 0xc99, 0xc9a, 0x7, 0x6e, 0x2, 0x2, 0xc9a, 0xc9b, - 0x7, 0x67, 0x2, 0x2, 0xc9b, 0x1f6, 0x3, 0x2, 0x2, 0x2, 0xc9c, 0xc9d, - 0x7, 0x78, 0x2, 0x2, 0xc9d, 0xc9e, 0x7, 0x71, 0x2, 0x2, 0xc9e, 0xc9f, - 0x7, 0x6b, 0x2, 0x2, 0xc9f, 0xca0, 0x7, 0x66, 0x2, 0x2, 0xca0, 0x1f8, - 0x3, 0x2, 0x2, 0x2, 0xca1, 0xca2, 0x7, 0x79, 0x2, 0x2, 0xca2, 0xca3, - 0x7, 0x6a, 0x2, 0x2, 0xca3, 0xca4, 0x7, 0x6b, 0x2, 0x2, 0xca4, 0xca5, - 0x7, 0x6e, 0x2, 0x2, 0xca5, 0xca6, 0x7, 0x67, 0x2, 0x2, 0xca6, 0x1fa, - 0x3, 0x2, 0x2, 0x2, 0xca7, 0xca8, 0x7, 0x55, 0x2, 0x2, 0xca8, 0xca9, - 0x7, 0x76, 0x2, 0x2, 0xca9, 0xcaa, 0x7, 0x63, 0x2, 0x2, 0xcaa, 0xcab, - 0x7, 0x76, 0x2, 0x2, 0xcab, 0xcac, 0x7, 0x67, 0x2, 0x2, 0xcac, 0xcad, - 0x7, 0x51, 0x2, 0x2, 0xcad, 0xcae, 0x7, 0x64, 0x2, 0x2, 0xcae, 0xcaf, - 0x7, 0x6c, 0x2, 0x2, 0xcaf, 0xcb0, 0x7, 0x67, 0x2, 0x2, 0xcb0, 0xcb1, - 0x7, 0x65, 0x2, 0x2, 0xcb1, 0xcb2, 0x7, 0x76, 0x2, 0x2, 0xcb2, 0xcb3, - 0x7, 0x45, 0x2, 0x2, 0xcb3, 0xcb4, 0x7, 0x71, 0x2, 0x2, 0xcb4, 0xcb5, - 0x7, 0x70, 0x2, 0x2, 0xcb5, 0xcb6, 0x7, 0x68, 0x2, 0x2, 0xcb6, 0xcb7, - 0x7, 0x6b, 0x2, 0x2, 0xcb7, 0xcb8, 0x7, 0x69, 0x2, 0x2, 0xcb8, 0x1fc, - 0x3, 0x2, 0x2, 0x2, 0xcb9, 0xcba, 0x7, 0x4e, 0x2, 0x2, 0xcba, 0xcbb, - 0x7, 0x71, 0x2, 0x2, 0xcbb, 0xcbc, 0x7, 0x65, 0x2, 0x2, 0xcbc, 0xcbd, - 0x7, 0x63, 0x2, 0x2, 0xcbd, 0xcbe, 0x7, 0x6e, 0x2, 0x2, 0xcbe, 0xcbf, - 0x7, 0x54, 0x2, 0x2, 0xcbf, 0xcc0, 0x7, 0x71, 0x2, 0x2, 0xcc0, 0xcc1, - 0x7, 0x71, 0x2, 0x2, 0xcc1, 0xcc2, 0x7, 0x76, 0x2, 0x2, 0xcc2, 0xcc3, - 0x7, 0x55, 0x2, 0x2, 0xcc3, 0xcc4, 0x7, 0x6b, 0x2, 0x2, 0xcc4, 0xcc5, - 0x7, 0x69, 0x2, 0x2, 0xcc5, 0xcc6, 0x7, 0x70, 0x2, 0x2, 0xcc6, 0xcc7, - 0x7, 0x63, 0x2, 0x2, 0xcc7, 0xcc8, 0x7, 0x76, 0x2, 0x2, 0xcc8, 0xcc9, - 0x7, 0x77, 0x2, 0x2, 0xcc9, 0xcca, 0x7, 0x74, 0x2, 0x2, 0xcca, 0xccb, - 0x7, 0x67, 0x2, 0x2, 0xccb, 0x1fe, 0x3, 0x2, 0x2, 0x2, 0xccc, 0xccd, - 0x7, 0x49, 0x2, 0x2, 0xccd, 0xcce, 0x7, 0x6e, 0x2, 0x2, 0xcce, 0xccf, - 0x7, 0x71, 0x2, 0x2, 0xccf, 0xcd0, 0x7, 0x64, 0x2, 0x2, 0xcd0, 0xcd1, - 0x7, 0x63, 0x2, 0x2, 0xcd1, 0xcd2, 0x7, 0x6e, 0x2, 0x2, 0xcd2, 0xcd3, - 0x7, 0x54, 0x2, 0x2, 0xcd3, 0xcd4, 0x7, 0x71, 0x2, 0x2, 0xcd4, 0xcd5, - 0x7, 0x71, 0x2, 0x2, 0xcd5, 0xcd6, 0x7, 0x76, 0x2, 0x2, 0xcd6, 0xcd7, - 0x7, 0x55, 0x2, 0x2, 0xcd7, 0xcd8, 0x7, 0x6b, 0x2, 0x2, 0xcd8, 0xcd9, - 0x7, 0x69, 0x2, 0x2, 0xcd9, 0xcda, 0x7, 0x70, 0x2, 0x2, 0xcda, 0xcdb, - 0x7, 0x63, 0x2, 0x2, 0xcdb, 0xcdc, 0x7, 0x76, 0x2, 0x2, 0xcdc, 0xcdd, - 0x7, 0x77, 0x2, 0x2, 0xcdd, 0xcde, 0x7, 0x74, 0x2, 0x2, 0xcde, 0xcdf, - 0x7, 0x67, 0x2, 0x2, 0xcdf, 0x200, 0x3, 0x2, 0x2, 0x2, 0xce0, 0xce1, - 0x7, 0x55, 0x2, 0x2, 0xce1, 0xce2, 0x7, 0x77, 0x2, 0x2, 0xce2, 0xce3, - 0x7, 0x64, 0x2, 0x2, 0xce3, 0xce4, 0x7, 0x71, 0x2, 0x2, 0xce4, 0xce5, - 0x7, 0x64, 0x2, 0x2, 0xce5, 0xce6, 0x7, 0x6c, 0x2, 0x2, 0xce6, 0xce7, - 0x7, 0x67, 0x2, 0x2, 0xce7, 0xce8, 0x7, 0x65, 0x2, 0x2, 0xce8, 0xce9, - 0x7, 0x76, 0x2, 0x2, 0xce9, 0xcea, 0x7, 0x56, 0x2, 0x2, 0xcea, 0xceb, - 0x7, 0x71, 0x2, 0x2, 0xceb, 0xcec, 0x7, 0x47, 0x2, 0x2, 0xcec, 0xced, - 0x7, 0x7a, 0x2, 0x2, 0xced, 0xcee, 0x7, 0x72, 0x2, 0x2, 0xcee, 0xcef, - 0x7, 0x71, 0x2, 0x2, 0xcef, 0xcf0, 0x7, 0x74, 0x2, 0x2, 0xcf0, 0xcf1, - 0x7, 0x76, 0x2, 0x2, 0xcf1, 0xcf2, 0x7, 0x75, 0x2, 0x2, 0xcf2, 0xcf3, - 0x7, 0x43, 0x2, 0x2, 0xcf3, 0xcf4, 0x7, 0x75, 0x2, 0x2, 0xcf4, 0xcf5, - 0x7, 0x75, 0x2, 0x2, 0xcf5, 0xcf6, 0x7, 0x71, 0x2, 0x2, 0xcf6, 0xcf7, - 0x7, 0x65, 0x2, 0x2, 0xcf7, 0xcf8, 0x7, 0x6b, 0x2, 0x2, 0xcf8, 0xcf9, - 0x7, 0x63, 0x2, 0x2, 0xcf9, 0xcfa, 0x7, 0x76, 0x2, 0x2, 0xcfa, 0xcfb, - 0x7, 0x6b, 0x2, 0x2, 0xcfb, 0xcfc, 0x7, 0x71, 0x2, 0x2, 0xcfc, 0xcfd, - 0x7, 0x70, 0x2, 0x2, 0xcfd, 0x202, 0x3, 0x2, 0x2, 0x2, 0xcfe, 0xcff, - 0x7, 0x54, 0x2, 0x2, 0xcff, 0xd00, 0x7, 0x63, 0x2, 0x2, 0xd00, 0xd01, - 0x7, 0x7b, 0x2, 0x2, 0xd01, 0xd02, 0x7, 0x76, 0x2, 0x2, 0xd02, 0xd03, - 0x7, 0x74, 0x2, 0x2, 0xd03, 0xd04, 0x7, 0x63, 0x2, 0x2, 0xd04, 0xd05, - 0x7, 0x65, 0x2, 0x2, 0xd05, 0xd06, 0x7, 0x6b, 0x2, 0x2, 0xd06, 0xd07, - 0x7, 0x70, 0x2, 0x2, 0xd07, 0xd08, 0x7, 0x69, 0x2, 0x2, 0xd08, 0xd09, - 0x7, 0x55, 0x2, 0x2, 0xd09, 0xd0a, 0x7, 0x6a, 0x2, 0x2, 0xd0a, 0xd0b, - 0x7, 0x63, 0x2, 0x2, 0xd0b, 0xd0c, 0x7, 0x66, 0x2, 0x2, 0xd0c, 0xd0d, - 0x7, 0x67, 0x2, 0x2, 0xd0d, 0xd0e, 0x7, 0x74, 0x2, 0x2, 0xd0e, 0xd0f, - 0x7, 0x45, 0x2, 0x2, 0xd0f, 0xd10, 0x7, 0x71, 0x2, 0x2, 0xd10, 0xd11, - 0x7, 0x70, 0x2, 0x2, 0xd11, 0xd12, 0x7, 0x68, 0x2, 0x2, 0xd12, 0xd13, - 0x7, 0x6b, 0x2, 0x2, 0xd13, 0xd14, 0x7, 0x69, 0x2, 0x2, 0xd14, 0x204, - 0x3, 0x2, 0x2, 0x2, 0xd15, 0xd16, 0x7, 0x54, 0x2, 0x2, 0xd16, 0xd17, - 0x7, 0x63, 0x2, 0x2, 0xd17, 0xd18, 0x7, 0x7b, 0x2, 0x2, 0xd18, 0xd19, - 0x7, 0x76, 0x2, 0x2, 0xd19, 0xd1a, 0x7, 0x74, 0x2, 0x2, 0xd1a, 0xd1b, - 0x7, 0x63, 0x2, 0x2, 0xd1b, 0xd1c, 0x7, 0x65, 0x2, 0x2, 0xd1c, 0xd1d, - 0x7, 0x6b, 0x2, 0x2, 0xd1d, 0xd1e, 0x7, 0x70, 0x2, 0x2, 0xd1e, 0xd1f, - 0x7, 0x69, 0x2, 0x2, 0xd1f, 0xd20, 0x7, 0x52, 0x2, 0x2, 0xd20, 0xd21, - 0x7, 0x6b, 0x2, 0x2, 0xd21, 0xd22, 0x7, 0x72, 0x2, 0x2, 0xd22, 0xd23, - 0x7, 0x67, 0x2, 0x2, 0xd23, 0xd24, 0x7, 0x6e, 0x2, 0x2, 0xd24, 0xd25, - 0x7, 0x6b, 0x2, 0x2, 0xd25, 0xd26, 0x7, 0x70, 0x2, 0x2, 0xd26, 0xd27, - 0x7, 0x67, 0x2, 0x2, 0xd27, 0xd28, 0x7, 0x45, 0x2, 0x2, 0xd28, 0xd29, - 0x7, 0x71, 0x2, 0x2, 0xd29, 0xd2a, 0x7, 0x70, 0x2, 0x2, 0xd2a, 0xd2b, - 0x7, 0x68, 0x2, 0x2, 0xd2b, 0xd2c, 0x7, 0x6b, 0x2, 0x2, 0xd2c, 0xd2d, - 0x7, 0x69, 0x2, 0x2, 0xd2d, 0x206, 0x3, 0x2, 0x2, 0x2, 0xd2e, 0xd2f, - 0x7, 0x54, 0x2, 0x2, 0xd2f, 0xd30, 0x7, 0x63, 0x2, 0x2, 0xd30, 0xd31, - 0x7, 0x7b, 0x2, 0x2, 0xd31, 0xd32, 0x7, 0x76, 0x2, 0x2, 0xd32, 0xd33, - 0x7, 0x74, 0x2, 0x2, 0xd33, 0xd34, 0x7, 0x63, 0x2, 0x2, 0xd34, 0xd35, - 0x7, 0x65, 0x2, 0x2, 0xd35, 0xd36, 0x7, 0x6b, 0x2, 0x2, 0xd36, 0xd37, - 0x7, 0x70, 0x2, 0x2, 0xd37, 0xd38, 0x7, 0x69, 0x2, 0x2, 0xd38, 0xd39, - 0x7, 0x52, 0x2, 0x2, 0xd39, 0xd3a, 0x7, 0x6b, 0x2, 0x2, 0xd3a, 0xd3b, - 0x7, 0x72, 0x2, 0x2, 0xd3b, 0xd3c, 0x7, 0x67, 0x2, 0x2, 0xd3c, 0xd3d, - 0x7, 0x6e, 0x2, 0x2, 0xd3d, 0xd3e, 0x7, 0x6b, 0x2, 0x2, 0xd3e, 0xd3f, - 0x7, 0x70, 0x2, 0x2, 0xd3f, 0xd40, 0x7, 0x67, 0x2, 0x2, 0xd40, 0xd41, - 0x7, 0x45, 0x2, 0x2, 0xd41, 0xd42, 0x7, 0x71, 0x2, 0x2, 0xd42, 0xd43, - 0x7, 0x70, 0x2, 0x2, 0xd43, 0xd44, 0x7, 0x68, 0x2, 0x2, 0xd44, 0xd45, - 0x7, 0x6b, 0x2, 0x2, 0xd45, 0xd46, 0x7, 0x69, 0x2, 0x2, 0xd46, 0xd47, - 0x7, 0x33, 0x2, 0x2, 0xd47, 0x208, 0x3, 0x2, 0x2, 0x2, 0xd48, 0xd49, - 0x7, 0x56, 0x2, 0x2, 0xd49, 0xd4a, 0x7, 0x74, 0x2, 0x2, 0xd4a, 0xd4b, - 0x7, 0x6b, 0x2, 0x2, 0xd4b, 0xd4c, 0x7, 0x63, 0x2, 0x2, 0xd4c, 0xd4d, - 0x7, 0x70, 0x2, 0x2, 0xd4d, 0xd4e, 0x7, 0x69, 0x2, 0x2, 0xd4e, 0xd4f, - 0x7, 0x6e, 0x2, 0x2, 0xd4f, 0xd50, 0x7, 0x67, 0x2, 0x2, 0xd50, 0xd51, - 0x7, 0x4a, 0x2, 0x2, 0xd51, 0xd52, 0x7, 0x6b, 0x2, 0x2, 0xd52, 0xd53, - 0x7, 0x76, 0x2, 0x2, 0xd53, 0xd54, 0x7, 0x49, 0x2, 0x2, 0xd54, 0xd55, - 0x7, 0x74, 0x2, 0x2, 0xd55, 0xd56, 0x7, 0x71, 0x2, 0x2, 0xd56, 0xd57, - 0x7, 0x77, 0x2, 0x2, 0xd57, 0xd58, 0x7, 0x72, 0x2, 0x2, 0xd58, 0x20a, - 0x3, 0x2, 0x2, 0x2, 0xd59, 0xd5a, 0x7, 0x52, 0x2, 0x2, 0xd5a, 0xd5b, - 0x7, 0x74, 0x2, 0x2, 0xd5b, 0xd5c, 0x7, 0x71, 0x2, 0x2, 0xd5c, 0xd5d, - 0x7, 0x65, 0x2, 0x2, 0xd5d, 0xd5e, 0x7, 0x67, 0x2, 0x2, 0xd5e, 0xd5f, - 0x7, 0x66, 0x2, 0x2, 0xd5f, 0xd60, 0x7, 0x77, 0x2, 0x2, 0xd60, 0xd61, - 0x7, 0x74, 0x2, 0x2, 0xd61, 0xd62, 0x7, 0x63, 0x2, 0x2, 0xd62, 0xd63, - 0x7, 0x6e, 0x2, 0x2, 0xd63, 0xd64, 0x7, 0x52, 0x2, 0x2, 0xd64, 0xd65, - 0x7, 0x74, 0x2, 0x2, 0xd65, 0xd66, 0x7, 0x6b, 0x2, 0x2, 0xd66, 0xd67, - 0x7, 0x6f, 0x2, 0x2, 0xd67, 0xd68, 0x7, 0x6b, 0x2, 0x2, 0xd68, 0xd69, - 0x7, 0x76, 0x2, 0x2, 0xd69, 0xd6a, 0x7, 0x6b, 0x2, 0x2, 0xd6a, 0xd6b, - 0x7, 0x78, 0x2, 0x2, 0xd6b, 0xd6c, 0x7, 0x67, 0x2, 0x2, 0xd6c, 0xd6d, - 0x7, 0x4a, 0x2, 0x2, 0xd6d, 0xd6e, 0x7, 0x6b, 0x2, 0x2, 0xd6e, 0xd6f, - 0x7, 0x76, 0x2, 0x2, 0xd6f, 0xd70, 0x7, 0x49, 0x2, 0x2, 0xd70, 0xd71, - 0x7, 0x74, 0x2, 0x2, 0xd71, 0xd72, 0x7, 0x71, 0x2, 0x2, 0xd72, 0xd73, - 0x7, 0x77, 0x2, 0x2, 0xd73, 0xd74, 0x7, 0x72, 0x2, 0x2, 0xd74, 0x20c, - 0x3, 0x2, 0x2, 0x2, 0xd75, 0xd76, 0x7, 0x43, 0x2, 0x2, 0xd76, 0xd77, - 0x7, 0x66, 0x2, 0x2, 0xd77, 0xd78, 0x7, 0x66, 0x2, 0x2, 0xd78, 0xd79, - 0x7, 0x74, 0x2, 0x2, 0xd79, 0xd7a, 0x7, 0x67, 0x2, 0x2, 0xd7a, 0xd7b, - 0x7, 0x75, 0x2, 0x2, 0xd7b, 0xd7c, 0x7, 0x75, 0x2, 0x2, 0xd7c, 0xd7d, - 0x7, 0x57, 0x2, 0x2, 0xd7d, 0x20e, 0x3, 0x2, 0x2, 0x2, 0xd7e, 0xd7f, - 0x7, 0x43, 0x2, 0x2, 0xd7f, 0xd80, 0x7, 0x66, 0x2, 0x2, 0xd80, 0xd81, - 0x7, 0x66, 0x2, 0x2, 0xd81, 0xd82, 0x7, 0x74, 0x2, 0x2, 0xd82, 0xd83, - 0x7, 0x67, 0x2, 0x2, 0xd83, 0xd84, 0x7, 0x75, 0x2, 0x2, 0xd84, 0xd85, - 0x7, 0x75, 0x2, 0x2, 0xd85, 0xd86, 0x7, 0x58, 0x2, 0x2, 0xd86, 0x210, - 0x3, 0x2, 0x2, 0x2, 0xd87, 0xd88, 0x7, 0x43, 0x2, 0x2, 0xd88, 0xd89, - 0x7, 0x66, 0x2, 0x2, 0xd89, 0xd8a, 0x7, 0x66, 0x2, 0x2, 0xd8a, 0xd8b, - 0x7, 0x74, 0x2, 0x2, 0xd8b, 0xd8c, 0x7, 0x67, 0x2, 0x2, 0xd8c, 0xd8d, - 0x7, 0x75, 0x2, 0x2, 0xd8d, 0xd8e, 0x7, 0x75, 0x2, 0x2, 0xd8e, 0xd8f, - 0x7, 0x59, 0x2, 0x2, 0xd8f, 0x212, 0x3, 0x2, 0x2, 0x2, 0xd90, 0xd91, - 0x7, 0x44, 0x2, 0x2, 0xd91, 0xd92, 0x7, 0x71, 0x2, 0x2, 0xd92, 0xd93, - 0x7, 0x74, 0x2, 0x2, 0xd93, 0xd94, 0x7, 0x66, 0x2, 0x2, 0xd94, 0xd95, - 0x7, 0x67, 0x2, 0x2, 0xd95, 0xd96, 0x7, 0x74, 0x2, 0x2, 0xd96, 0xd97, - 0x7, 0x45, 0x2, 0x2, 0xd97, 0xd98, 0x7, 0x71, 0x2, 0x2, 0xd98, 0xd99, - 0x7, 0x6e, 0x2, 0x2, 0xd99, 0xd9a, 0x7, 0x71, 0x2, 0x2, 0xd9a, 0xd9b, - 0x7, 0x74, 0x2, 0x2, 0xd9b, 0x214, 0x3, 0x2, 0x2, 0x2, 0xd9c, 0xd9d, - 0x7, 0x4f, 0x2, 0x2, 0xd9d, 0xd9e, 0x7, 0x6b, 0x2, 0x2, 0xd9e, 0xd9f, - 0x7, 0x70, 0x2, 0x2, 0xd9f, 0xda0, 0x7, 0x48, 0x2, 0x2, 0xda0, 0xda1, - 0x7, 0x6b, 0x2, 0x2, 0xda1, 0xda2, 0x7, 0x6e, 0x2, 0x2, 0xda2, 0xda3, - 0x7, 0x76, 0x2, 0x2, 0xda3, 0xda4, 0x7, 0x67, 0x2, 0x2, 0xda4, 0xda5, - 0x7, 0x74, 0x2, 0x2, 0xda5, 0x216, 0x3, 0x2, 0x2, 0x2, 0xda6, 0xda7, - 0x7, 0x4f, 0x2, 0x2, 0xda7, 0xda8, 0x7, 0x63, 0x2, 0x2, 0xda8, 0xda9, - 0x7, 0x69, 0x2, 0x2, 0xda9, 0xdaa, 0x7, 0x48, 0x2, 0x2, 0xdaa, 0xdab, - 0x7, 0x6b, 0x2, 0x2, 0xdab, 0xdac, 0x7, 0x6e, 0x2, 0x2, 0xdac, 0xdad, - 0x7, 0x76, 0x2, 0x2, 0xdad, 0xdae, 0x7, 0x67, 0x2, 0x2, 0xdae, 0xdaf, - 0x7, 0x74, 0x2, 0x2, 0xdaf, 0x218, 0x3, 0x2, 0x2, 0x2, 0xdb0, 0xdb1, - 0x7, 0x4f, 0x2, 0x2, 0xdb1, 0xdb2, 0x7, 0x6b, 0x2, 0x2, 0xdb2, 0xdb3, - 0x7, 0x72, 0x2, 0x2, 0xdb3, 0xdb4, 0x7, 0x48, 0x2, 0x2, 0xdb4, 0xdb5, - 0x7, 0x6b, 0x2, 0x2, 0xdb5, 0xdb6, 0x7, 0x6e, 0x2, 0x2, 0xdb6, 0xdb7, - 0x7, 0x76, 0x2, 0x2, 0xdb7, 0xdb8, 0x7, 0x67, 0x2, 0x2, 0xdb8, 0xdb9, - 0x7, 0x74, 0x2, 0x2, 0xdb9, 0x21a, 0x3, 0x2, 0x2, 0x2, 0xdba, 0xdbb, - 0x7, 0x4f, 0x2, 0x2, 0xdbb, 0xdbc, 0x7, 0x63, 0x2, 0x2, 0xdbc, 0xdbd, - 0x7, 0x7a, 0x2, 0x2, 0xdbd, 0xdbe, 0x7, 0x43, 0x2, 0x2, 0xdbe, 0xdbf, - 0x7, 0x70, 0x2, 0x2, 0xdbf, 0xdc0, 0x7, 0x6b, 0x2, 0x2, 0xdc0, 0xdc1, - 0x7, 0x75, 0x2, 0x2, 0xdc1, 0xdc2, 0x7, 0x71, 0x2, 0x2, 0xdc2, 0xdc3, - 0x7, 0x76, 0x2, 0x2, 0xdc3, 0xdc4, 0x7, 0x74, 0x2, 0x2, 0xdc4, 0xdc5, - 0x7, 0x71, 0x2, 0x2, 0xdc5, 0xdc6, 0x7, 0x72, 0x2, 0x2, 0xdc6, 0xdc7, - 0x7, 0x7b, 0x2, 0x2, 0xdc7, 0x21c, 0x3, 0x2, 0x2, 0x2, 0xdc8, 0xdc9, - 0x7, 0x4f, 0x2, 0x2, 0xdc9, 0xdca, 0x7, 0x63, 0x2, 0x2, 0xdca, 0xdcb, - 0x7, 0x7a, 0x2, 0x2, 0xdcb, 0xdcc, 0x7, 0x4e, 0x2, 0x2, 0xdcc, 0xdcd, - 0x7, 0x51, 0x2, 0x2, 0xdcd, 0xdce, 0x7, 0x46, 0x2, 0x2, 0xdce, 0x21e, - 0x3, 0x2, 0x2, 0x2, 0xdcf, 0xdd0, 0x7, 0x4f, 0x2, 0x2, 0xdd0, 0xdd1, - 0x7, 0x6b, 0x2, 0x2, 0xdd1, 0xdd2, 0x7, 0x70, 0x2, 0x2, 0xdd2, 0xdd3, - 0x7, 0x4e, 0x2, 0x2, 0xdd3, 0xdd4, 0x7, 0x51, 0x2, 0x2, 0xdd4, 0xdd5, - 0x7, 0x46, 0x2, 0x2, 0xdd5, 0x220, 0x3, 0x2, 0x2, 0x2, 0xdd6, 0xdd7, - 0x7, 0x4f, 0x2, 0x2, 0xdd7, 0xdd8, 0x7, 0x6b, 0x2, 0x2, 0xdd8, 0xdd9, - 0x7, 0x72, 0x2, 0x2, 0xdd9, 0xdda, 0x7, 0x4e, 0x2, 0x2, 0xdda, 0xddb, - 0x7, 0x51, 0x2, 0x2, 0xddb, 0xddc, 0x7, 0x46, 0x2, 0x2, 0xddc, 0xddd, - 0x7, 0x44, 0x2, 0x2, 0xddd, 0xdde, 0x7, 0x6b, 0x2, 0x2, 0xdde, 0xddf, - 0x7, 0x63, 0x2, 0x2, 0xddf, 0xde0, 0x7, 0x75, 0x2, 0x2, 0xde0, 0x222, - 0x3, 0x2, 0x2, 0x2, 0xde1, 0xde2, 0x7, 0x45, 0x2, 0x2, 0xde2, 0xde3, - 0x7, 0x71, 0x2, 0x2, 0xde3, 0xde4, 0x7, 0x6f, 0x2, 0x2, 0xde4, 0xde5, - 0x7, 0x72, 0x2, 0x2, 0xde5, 0xde6, 0x7, 0x63, 0x2, 0x2, 0xde6, 0xde7, - 0x7, 0x74, 0x2, 0x2, 0xde7, 0xde8, 0x7, 0x6b, 0x2, 0x2, 0xde8, 0xde9, - 0x7, 0x75, 0x2, 0x2, 0xde9, 0xdea, 0x7, 0x71, 0x2, 0x2, 0xdea, 0xdeb, - 0x7, 0x70, 0x2, 0x2, 0xdeb, 0xdec, 0x7, 0x48, 0x2, 0x2, 0xdec, 0xded, - 0x7, 0x77, 0x2, 0x2, 0xded, 0xdee, 0x7, 0x70, 0x2, 0x2, 0xdee, 0xdef, - 0x7, 0x65, 0x2, 0x2, 0xdef, 0x224, 0x3, 0x2, 0x2, 0x2, 0xdf0, 0xdf1, - 0x7, 0x54, 0x2, 0x2, 0xdf1, 0xdf2, 0x7, 0x67, 0x2, 0x2, 0xdf2, 0xdf3, - 0x7, 0x66, 0x2, 0x2, 0xdf3, 0xdf4, 0x7, 0x77, 0x2, 0x2, 0xdf4, 0xdf5, - 0x7, 0x65, 0x2, 0x2, 0xdf5, 0xdf6, 0x7, 0x76, 0x2, 0x2, 0xdf6, 0xdf7, - 0x7, 0x6b, 0x2, 0x2, 0xdf7, 0xdf8, 0x7, 0x71, 0x2, 0x2, 0xdf8, 0xdf9, - 0x7, 0x70, 0x2, 0x2, 0xdf9, 0xdfa, 0x7, 0x56, 0x2, 0x2, 0xdfa, 0xdfb, - 0x7, 0x7b, 0x2, 0x2, 0xdfb, 0xdfc, 0x7, 0x72, 0x2, 0x2, 0xdfc, 0xdfd, - 0x7, 0x67, 0x2, 0x2, 0xdfd, 0x226, 0x3, 0x2, 0x2, 0x2, 0xdfe, 0xdff, - 0x7, 0x52, 0x2, 0x2, 0xdff, 0xe00, 0x7, 0x71, 0x2, 0x2, 0xe00, 0xe01, - 0x7, 0x6b, 0x2, 0x2, 0xe01, 0xe02, 0x7, 0x70, 0x2, 0x2, 0xe02, 0xe03, - 0x7, 0x76, 0x2, 0x2, 0xe03, 0x228, 0x3, 0x2, 0x2, 0x2, 0xe04, 0xe05, - 0x7, 0x4e, 0x2, 0x2, 0xe05, 0xe06, 0x7, 0x6b, 0x2, 0x2, 0xe06, 0xe07, - 0x7, 0x70, 0x2, 0x2, 0xe07, 0xe08, 0x7, 0x67, 0x2, 0x2, 0xe08, 0xe09, - 0x7, 0x63, 0x2, 0x2, 0xe09, 0xe0a, 0x7, 0x74, 0x2, 0x2, 0xe0a, 0x22a, - 0x3, 0x2, 0x2, 0x2, 0xe0b, 0xe0c, 0x7, 0x48, 0x2, 0x2, 0xe0c, 0xe0d, - 0x7, 0x6b, 0x2, 0x2, 0xe0d, 0xe0e, 0x7, 0x6e, 0x2, 0x2, 0xe0e, 0xe0f, - 0x7, 0x76, 0x2, 0x2, 0xe0f, 0xe10, 0x7, 0x67, 0x2, 0x2, 0xe10, 0xe11, - 0x7, 0x74, 0x2, 0x2, 0xe11, 0x22c, 0x3, 0x2, 0x2, 0x2, 0xe12, 0xe13, - 0x7, 0x45, 0x2, 0x2, 0xe13, 0xe14, 0x7, 0x71, 0x2, 0x2, 0xe14, 0xe15, - 0x7, 0x6f, 0x2, 0x2, 0xe15, 0xe16, 0x7, 0x72, 0x2, 0x2, 0xe16, 0xe17, - 0x7, 0x63, 0x2, 0x2, 0xe17, 0xe18, 0x7, 0x74, 0x2, 0x2, 0xe18, 0xe19, - 0x7, 0x6b, 0x2, 0x2, 0xe19, 0xe1a, 0x7, 0x75, 0x2, 0x2, 0xe1a, 0xe1b, - 0x7, 0x71, 0x2, 0x2, 0xe1b, 0xe1c, 0x7, 0x70, 0x2, 0x2, 0xe1c, 0x22e, - 0x3, 0x2, 0x2, 0x2, 0xe1d, 0xe1e, 0x7, 0x4f, 0x2, 0x2, 0xe1e, 0xe1f, - 0x7, 0x6b, 0x2, 0x2, 0xe1f, 0xe20, 0x7, 0x70, 0x2, 0x2, 0xe20, 0xe21, - 0x7, 0x6b, 0x2, 0x2, 0xe21, 0xe22, 0x7, 0x6f, 0x2, 0x2, 0xe22, 0xe23, - 0x7, 0x77, 0x2, 0x2, 0xe23, 0xe24, 0x7, 0x6f, 0x2, 0x2, 0xe24, 0x230, - 0x3, 0x2, 0x2, 0x2, 0xe25, 0xe26, 0x7, 0x4f, 0x2, 0x2, 0xe26, 0xe27, - 0x7, 0x63, 0x2, 0x2, 0xe27, 0xe28, 0x7, 0x7a, 0x2, 0x2, 0xe28, 0xe29, - 0x7, 0x6b, 0x2, 0x2, 0xe29, 0xe2a, 0x7, 0x6f, 0x2, 0x2, 0xe2a, 0xe2b, - 0x7, 0x77, 0x2, 0x2, 0xe2b, 0xe2c, 0x7, 0x6f, 0x2, 0x2, 0xe2c, 0x232, - 0x3, 0x2, 0x2, 0x2, 0xe2d, 0xe2e, 0x7, 0x59, 0x2, 0x2, 0xe2e, 0xe2f, - 0x7, 0x74, 0x2, 0x2, 0xe2f, 0xe30, 0x7, 0x63, 0x2, 0x2, 0xe30, 0xe31, - 0x7, 0x72, 0x2, 0x2, 0xe31, 0x234, 0x3, 0x2, 0x2, 0x2, 0xe32, 0xe33, - 0x7, 0x4f, 0x2, 0x2, 0xe33, 0xe34, 0x7, 0x6b, 0x2, 0x2, 0xe34, 0xe35, - 0x7, 0x74, 0x2, 0x2, 0xe35, 0xe36, 0x7, 0x74, 0x2, 0x2, 0xe36, 0xe37, - 0x7, 0x71, 0x2, 0x2, 0xe37, 0xe38, 0x7, 0x74, 0x2, 0x2, 0xe38, 0x236, - 0x3, 0x2, 0x2, 0x2, 0xe39, 0xe3a, 0x7, 0x45, 0x2, 0x2, 0xe3a, 0xe3b, - 0x7, 0x6e, 0x2, 0x2, 0xe3b, 0xe3c, 0x7, 0x63, 0x2, 0x2, 0xe3c, 0xe3d, - 0x7, 0x6f, 0x2, 0x2, 0xe3d, 0xe3e, 0x7, 0x72, 0x2, 0x2, 0xe3e, 0x238, - 0x3, 0x2, 0x2, 0x2, 0xe3f, 0xe40, 0x7, 0x44, 0x2, 0x2, 0xe40, 0xe41, - 0x7, 0x71, 0x2, 0x2, 0xe41, 0xe42, 0x7, 0x74, 0x2, 0x2, 0xe42, 0xe43, - 0x7, 0x66, 0x2, 0x2, 0xe43, 0xe44, 0x7, 0x67, 0x2, 0x2, 0xe44, 0xe45, - 0x7, 0x74, 0x2, 0x2, 0xe45, 0x23a, 0x3, 0x2, 0x2, 0x2, 0xe46, 0xe47, - 0x7, 0x4f, 0x2, 0x2, 0xe47, 0xe48, 0x7, 0x6b, 0x2, 0x2, 0xe48, 0xe49, - 0x7, 0x74, 0x2, 0x2, 0xe49, 0xe4a, 0x7, 0x74, 0x2, 0x2, 0xe4a, 0xe4b, - 0x7, 0x71, 0x2, 0x2, 0xe4b, 0xe4c, 0x7, 0x74, 0x2, 0x2, 0xe4c, 0xe4d, - 0x7, 0x51, 0x2, 0x2, 0xe4d, 0xe4e, 0x7, 0x70, 0x2, 0x2, 0xe4e, 0xe4f, - 0x7, 0x65, 0x2, 0x2, 0xe4f, 0xe50, 0x7, 0x67, 0x2, 0x2, 0xe50, 0x23c, - 0x3, 0x2, 0x2, 0x2, 0xe51, 0xe52, 0x7, 0x50, 0x2, 0x2, 0xe52, 0xe53, - 0x7, 0x67, 0x2, 0x2, 0xe53, 0xe54, 0x7, 0x78, 0x2, 0x2, 0xe54, 0xe55, - 0x7, 0x67, 0x2, 0x2, 0xe55, 0xe56, 0x7, 0x74, 0x2, 0x2, 0xe56, 0x23e, - 0x3, 0x2, 0x2, 0x2, 0xe57, 0xe58, 0x7, 0x4e, 0x2, 0x2, 0xe58, 0xe59, - 0x7, 0x67, 0x2, 0x2, 0xe59, 0xe5a, 0x7, 0x75, 0x2, 0x2, 0xe5a, 0xe5b, - 0x7, 0x75, 0x2, 0x2, 0xe5b, 0x240, 0x3, 0x2, 0x2, 0x2, 0xe5c, 0xe5d, - 0x7, 0x47, 0x2, 0x2, 0xe5d, 0xe5e, 0x7, 0x73, 0x2, 0x2, 0xe5e, 0xe5f, - 0x7, 0x77, 0x2, 0x2, 0xe5f, 0xe60, 0x7, 0x63, 0x2, 0x2, 0xe60, 0xe61, - 0x7, 0x6e, 0x2, 0x2, 0xe61, 0x242, 0x3, 0x2, 0x2, 0x2, 0xe62, 0xe63, - 0x7, 0x4e, 0x2, 0x2, 0xe63, 0xe64, 0x7, 0x67, 0x2, 0x2, 0xe64, 0xe65, - 0x7, 0x75, 0x2, 0x2, 0xe65, 0xe66, 0x7, 0x75, 0x2, 0x2, 0xe66, 0xe67, - 0x7, 0x47, 0x2, 0x2, 0xe67, 0xe68, 0x7, 0x73, 0x2, 0x2, 0xe68, 0xe69, - 0x7, 0x77, 0x2, 0x2, 0xe69, 0xe6a, 0x7, 0x63, 0x2, 0x2, 0xe6a, 0xe6b, - 0x7, 0x6e, 0x2, 0x2, 0xe6b, 0x244, 0x3, 0x2, 0x2, 0x2, 0xe6c, 0xe6d, - 0x7, 0x49, 0x2, 0x2, 0xe6d, 0xe6e, 0x7, 0x74, 0x2, 0x2, 0xe6e, 0xe6f, - 0x7, 0x67, 0x2, 0x2, 0xe6f, 0xe70, 0x7, 0x63, 0x2, 0x2, 0xe70, 0xe71, - 0x7, 0x76, 0x2, 0x2, 0xe71, 0xe72, 0x7, 0x67, 0x2, 0x2, 0xe72, 0xe73, - 0x7, 0x74, 0x2, 0x2, 0xe73, 0x246, 0x3, 0x2, 0x2, 0x2, 0xe74, 0xe75, - 0x7, 0x50, 0x2, 0x2, 0xe75, 0xe76, 0x7, 0x71, 0x2, 0x2, 0xe76, 0xe77, - 0x7, 0x76, 0x2, 0x2, 0xe77, 0xe78, 0x7, 0x47, 0x2, 0x2, 0xe78, 0xe79, - 0x7, 0x73, 0x2, 0x2, 0xe79, 0xe7a, 0x7, 0x77, 0x2, 0x2, 0xe7a, 0xe7b, - 0x7, 0x63, 0x2, 0x2, 0xe7b, 0xe7c, 0x7, 0x6e, 0x2, 0x2, 0xe7c, 0x248, - 0x3, 0x2, 0x2, 0x2, 0xe7d, 0xe7e, 0x7, 0x49, 0x2, 0x2, 0xe7e, 0xe7f, - 0x7, 0x74, 0x2, 0x2, 0xe7f, 0xe80, 0x7, 0x67, 0x2, 0x2, 0xe80, 0xe81, - 0x7, 0x63, 0x2, 0x2, 0xe81, 0xe82, 0x7, 0x76, 0x2, 0x2, 0xe82, 0xe83, - 0x7, 0x67, 0x2, 0x2, 0xe83, 0xe84, 0x7, 0x74, 0x2, 0x2, 0xe84, 0xe85, - 0x7, 0x47, 0x2, 0x2, 0xe85, 0xe86, 0x7, 0x73, 0x2, 0x2, 0xe86, 0xe87, - 0x7, 0x77, 0x2, 0x2, 0xe87, 0xe88, 0x7, 0x63, 0x2, 0x2, 0xe88, 0xe89, - 0x7, 0x6e, 0x2, 0x2, 0xe89, 0x24a, 0x3, 0x2, 0x2, 0x2, 0xe8a, 0xe8b, - 0x7, 0x43, 0x2, 0x2, 0xe8b, 0xe8c, 0x7, 0x6e, 0x2, 0x2, 0xe8c, 0xe8d, - 0x7, 0x79, 0x2, 0x2, 0xe8d, 0xe8e, 0x7, 0x63, 0x2, 0x2, 0xe8e, 0xe8f, - 0x7, 0x7b, 0x2, 0x2, 0xe8f, 0xe90, 0x7, 0x75, 0x2, 0x2, 0xe90, 0x24c, - 0x3, 0x2, 0x2, 0x2, 0xe91, 0xe92, 0x7, 0x51, 0x2, 0x2, 0xe92, 0xe93, - 0x7, 0x72, 0x2, 0x2, 0xe93, 0xe94, 0x7, 0x63, 0x2, 0x2, 0xe94, 0xe95, - 0x7, 0x73, 0x2, 0x2, 0xe95, 0xe96, 0x7, 0x77, 0x2, 0x2, 0xe96, 0xe97, - 0x7, 0x67, 0x2, 0x2, 0xe97, 0xe98, 0x7, 0x44, 0x2, 0x2, 0xe98, 0xe99, - 0x7, 0x6e, 0x2, 0x2, 0xe99, 0xe9a, 0x7, 0x63, 0x2, 0x2, 0xe9a, 0xe9b, - 0x7, 0x65, 0x2, 0x2, 0xe9b, 0xe9c, 0x7, 0x6d, 0x2, 0x2, 0xe9c, 0x24e, - 0x3, 0x2, 0x2, 0x2, 0xe9d, 0xe9e, 0x7, 0x56, 0x2, 0x2, 0xe9e, 0xe9f, - 0x7, 0x74, 0x2, 0x2, 0xe9f, 0xea0, 0x7, 0x63, 0x2, 0x2, 0xea0, 0xea1, - 0x7, 0x70, 0x2, 0x2, 0xea1, 0xea2, 0x7, 0x75, 0x2, 0x2, 0xea2, 0xea3, - 0x7, 0x72, 0x2, 0x2, 0xea3, 0xea4, 0x7, 0x63, 0x2, 0x2, 0xea4, 0xea5, - 0x7, 0x74, 0x2, 0x2, 0xea5, 0xea6, 0x7, 0x67, 0x2, 0x2, 0xea6, 0xea7, - 0x7, 0x70, 0x2, 0x2, 0xea7, 0xea8, 0x7, 0x76, 0x2, 0x2, 0xea8, 0xea9, - 0x7, 0x44, 0x2, 0x2, 0xea9, 0xeaa, 0x7, 0x6e, 0x2, 0x2, 0xeaa, 0xeab, - 0x7, 0x63, 0x2, 0x2, 0xeab, 0xeac, 0x7, 0x65, 0x2, 0x2, 0xeac, 0xead, - 0x7, 0x6d, 0x2, 0x2, 0xead, 0x250, 0x3, 0x2, 0x2, 0x2, 0xeae, 0xeaf, - 0x7, 0x51, 0x2, 0x2, 0xeaf, 0xeb0, 0x7, 0x72, 0x2, 0x2, 0xeb0, 0xeb1, - 0x7, 0x63, 0x2, 0x2, 0xeb1, 0xeb2, 0x7, 0x73, 0x2, 0x2, 0xeb2, 0xeb3, - 0x7, 0x77, 0x2, 0x2, 0xeb3, 0xeb4, 0x7, 0x67, 0x2, 0x2, 0xeb4, 0xeb5, - 0x7, 0x59, 0x2, 0x2, 0xeb5, 0xeb6, 0x7, 0x6a, 0x2, 0x2, 0xeb6, 0xeb7, - 0x7, 0x6b, 0x2, 0x2, 0xeb7, 0xeb8, 0x7, 0x76, 0x2, 0x2, 0xeb8, 0xeb9, - 0x7, 0x67, 0x2, 0x2, 0xeb9, 0x252, 0x3, 0x2, 0x2, 0x2, 0xeba, 0xebb, - 0x7, 0x2a, 0x2, 0x2, 0xebb, 0x254, 0x3, 0x2, 0x2, 0x2, 0xebc, 0xebd, - 0x7, 0x2b, 0x2, 0x2, 0xebd, 0x256, 0x3, 0x2, 0x2, 0x2, 0xebe, 0xebf, - 0x7, 0x5d, 0x2, 0x2, 0xebf, 0x258, 0x3, 0x2, 0x2, 0x2, 0xec0, 0xec1, - 0x7, 0x5f, 0x2, 0x2, 0xec1, 0x25a, 0x3, 0x2, 0x2, 0x2, 0xec2, 0xec3, - 0x7, 0x7d, 0x2, 0x2, 0xec3, 0x25c, 0x3, 0x2, 0x2, 0x2, 0xec4, 0xec5, - 0x7, 0x7f, 0x2, 0x2, 0xec5, 0x25e, 0x3, 0x2, 0x2, 0x2, 0xec6, 0xec7, - 0x7, 0x5d, 0x2, 0x2, 0xec7, 0xec8, 0x7, 0x5d, 0x2, 0x2, 0xec8, 0x260, - 0x3, 0x2, 0x2, 0x2, 0xec9, 0xeca, 0x7, 0x3e, 0x2, 0x2, 0xeca, 0x262, - 0x3, 0x2, 0x2, 0x2, 0xecb, 0xecc, 0x7, 0x3e, 0x2, 0x2, 0xecc, 0xecd, - 0x7, 0x3f, 0x2, 0x2, 0xecd, 0x264, 0x3, 0x2, 0x2, 0x2, 0xece, 0xecf, - 0x7, 0x40, 0x2, 0x2, 0xecf, 0x266, 0x3, 0x2, 0x2, 0x2, 0xed0, 0xed1, - 0x7, 0x40, 0x2, 0x2, 0xed1, 0xed2, 0x7, 0x3f, 0x2, 0x2, 0xed2, 0x268, - 0x3, 0x2, 0x2, 0x2, 0xed3, 0xed4, 0x7, 0x3e, 0x2, 0x2, 0xed4, 0xed5, - 0x7, 0x3e, 0x2, 0x2, 0xed5, 0x26a, 0x3, 0x2, 0x2, 0x2, 0xed6, 0xed7, - 0x7, 0x40, 0x2, 0x2, 0xed7, 0xed8, 0x7, 0x40, 0x2, 0x2, 0xed8, 0x26c, - 0x3, 0x2, 0x2, 0x2, 0xed9, 0xeda, 0x7, 0x2d, 0x2, 0x2, 0xeda, 0x26e, - 0x3, 0x2, 0x2, 0x2, 0xedb, 0xedc, 0x7, 0x2d, 0x2, 0x2, 0xedc, 0xedd, - 0x7, 0x2d, 0x2, 0x2, 0xedd, 0x270, 0x3, 0x2, 0x2, 0x2, 0xede, 0xedf, - 0x7, 0x2f, 0x2, 0x2, 0xedf, 0x272, 0x3, 0x2, 0x2, 0x2, 0xee0, 0xee1, - 0x7, 0x2f, 0x2, 0x2, 0xee1, 0xee2, 0x7, 0x2f, 0x2, 0x2, 0xee2, 0x274, - 0x3, 0x2, 0x2, 0x2, 0xee3, 0xee4, 0x7, 0x2c, 0x2, 0x2, 0xee4, 0x276, - 0x3, 0x2, 0x2, 0x2, 0xee5, 0xee6, 0x7, 0x31, 0x2, 0x2, 0xee6, 0x278, - 0x3, 0x2, 0x2, 0x2, 0xee7, 0xee8, 0x7, 0x27, 0x2, 0x2, 0xee8, 0x27a, - 0x3, 0x2, 0x2, 0x2, 0xee9, 0xeea, 0x7, 0x28, 0x2, 0x2, 0xeea, 0x27c, - 0x3, 0x2, 0x2, 0x2, 0xeeb, 0xeec, 0x7, 0x7e, 0x2, 0x2, 0xeec, 0x27e, - 0x3, 0x2, 0x2, 0x2, 0xeed, 0xeee, 0x7, 0x28, 0x2, 0x2, 0xeee, 0xeef, - 0x7, 0x28, 0x2, 0x2, 0xeef, 0x280, 0x3, 0x2, 0x2, 0x2, 0xef0, 0xef1, - 0x7, 0x7e, 0x2, 0x2, 0xef1, 0xef2, 0x7, 0x7e, 0x2, 0x2, 0xef2, 0x282, - 0x3, 0x2, 0x2, 0x2, 0xef3, 0xef4, 0x7, 0x60, 0x2, 0x2, 0xef4, 0x284, - 0x3, 0x2, 0x2, 0x2, 0xef5, 0xef6, 0x7, 0x23, 0x2, 0x2, 0xef6, 0x286, - 0x3, 0x2, 0x2, 0x2, 0xef7, 0xef8, 0x7, 0x80, 0x2, 0x2, 0xef8, 0x288, - 0x3, 0x2, 0x2, 0x2, 0xef9, 0xefa, 0x7, 0x41, 0x2, 0x2, 0xefa, 0x28a, - 0x3, 0x2, 0x2, 0x2, 0xefb, 0xefc, 0x7, 0x3c, 0x2, 0x2, 0xefc, 0x28c, - 0x3, 0x2, 0x2, 0x2, 0xefd, 0xefe, 0x7, 0x3c, 0x2, 0x2, 0xefe, 0xeff, - 0x7, 0x3c, 0x2, 0x2, 0xeff, 0x28e, 0x3, 0x2, 0x2, 0x2, 0xf00, 0xf01, - 0x7, 0x3d, 0x2, 0x2, 0xf01, 0x290, 0x3, 0x2, 0x2, 0x2, 0xf02, 0xf03, - 0x7, 0x2e, 0x2, 0x2, 0xf03, 0x292, 0x3, 0x2, 0x2, 0x2, 0xf04, 0xf05, - 0x7, 0x3f, 0x2, 0x2, 0xf05, 0x294, 0x3, 0x2, 0x2, 0x2, 0xf06, 0xf07, - 0x7, 0x2c, 0x2, 0x2, 0xf07, 0xf08, 0x7, 0x3f, 0x2, 0x2, 0xf08, 0x296, - 0x3, 0x2, 0x2, 0x2, 0xf09, 0xf0a, 0x7, 0x31, 0x2, 0x2, 0xf0a, 0xf0b, - 0x7, 0x3f, 0x2, 0x2, 0xf0b, 0x298, 0x3, 0x2, 0x2, 0x2, 0xf0c, 0xf0d, - 0x7, 0x27, 0x2, 0x2, 0xf0d, 0xf0e, 0x7, 0x3f, 0x2, 0x2, 0xf0e, 0x29a, - 0x3, 0x2, 0x2, 0x2, 0xf0f, 0xf10, 0x7, 0x2d, 0x2, 0x2, 0xf10, 0xf11, - 0x7, 0x3f, 0x2, 0x2, 0xf11, 0x29c, 0x3, 0x2, 0x2, 0x2, 0xf12, 0xf13, - 0x7, 0x2f, 0x2, 0x2, 0xf13, 0xf14, 0x7, 0x3f, 0x2, 0x2, 0xf14, 0x29e, - 0x3, 0x2, 0x2, 0x2, 0xf15, 0xf16, 0x7, 0x3e, 0x2, 0x2, 0xf16, 0xf17, - 0x7, 0x3e, 0x2, 0x2, 0xf17, 0xf18, 0x7, 0x3f, 0x2, 0x2, 0xf18, 0x2a0, - 0x3, 0x2, 0x2, 0x2, 0xf19, 0xf1a, 0x7, 0x40, 0x2, 0x2, 0xf1a, 0xf1b, - 0x7, 0x40, 0x2, 0x2, 0xf1b, 0xf1c, 0x7, 0x3f, 0x2, 0x2, 0xf1c, 0x2a2, - 0x3, 0x2, 0x2, 0x2, 0xf1d, 0xf1e, 0x7, 0x28, 0x2, 0x2, 0xf1e, 0xf1f, - 0x7, 0x3f, 0x2, 0x2, 0xf1f, 0x2a4, 0x3, 0x2, 0x2, 0x2, 0xf20, 0xf21, - 0x7, 0x60, 0x2, 0x2, 0xf21, 0xf22, 0x7, 0x3f, 0x2, 0x2, 0xf22, 0x2a6, - 0x3, 0x2, 0x2, 0x2, 0xf23, 0xf24, 0x7, 0x7e, 0x2, 0x2, 0xf24, 0xf25, - 0x7, 0x3f, 0x2, 0x2, 0xf25, 0x2a8, 0x3, 0x2, 0x2, 0x2, 0xf26, 0xf27, - 0x7, 0x3f, 0x2, 0x2, 0xf27, 0xf28, 0x7, 0x3f, 0x2, 0x2, 0xf28, 0x2aa, - 0x3, 0x2, 0x2, 0x2, 0xf29, 0xf2a, 0x7, 0x23, 0x2, 0x2, 0xf2a, 0xf2b, - 0x7, 0x3f, 0x2, 0x2, 0xf2b, 0x2ac, 0x3, 0x2, 0x2, 0x2, 0xf2c, 0xf2d, - 0x7, 0x30, 0x2, 0x2, 0xf2d, 0x2ae, 0x3, 0x2, 0x2, 0x2, 0xf2e, 0xf2f, - 0x7, 0x76, 0x2, 0x2, 0xf2f, 0xf30, 0x7, 0x74, 0x2, 0x2, 0xf30, 0xf31, - 0x7, 0x77, 0x2, 0x2, 0xf31, 0xf32, 0x7, 0x67, 0x2, 0x2, 0xf32, 0x2b0, - 0x3, 0x2, 0x2, 0x2, 0xf33, 0xf34, 0x7, 0x68, 0x2, 0x2, 0xf34, 0xf35, - 0x7, 0x63, 0x2, 0x2, 0xf35, 0xf36, 0x7, 0x6e, 0x2, 0x2, 0xf36, 0xf37, - 0x7, 0x75, 0x2, 0x2, 0xf37, 0xf38, 0x7, 0x67, 0x2, 0x2, 0xf38, 0x2b2, - 0x3, 0x2, 0x2, 0x2, 0xf39, 0xf3a, 0x7, 0x63, 0x2, 0x2, 0xf3a, 0xf3b, - 0x7, 0x75, 0x2, 0x2, 0xf3b, 0xf3c, 0x7, 0x75, 0x2, 0x2, 0xf3c, 0xf3d, - 0x7, 0x71, 0x2, 0x2, 0xf3d, 0xf3e, 0x7, 0x65, 0x2, 0x2, 0xf3e, 0xf3f, - 0x7, 0x6b, 0x2, 0x2, 0xf3f, 0xf40, 0x7, 0x63, 0x2, 0x2, 0xf40, 0xf41, - 0x7, 0x76, 0x2, 0x2, 0xf41, 0xf42, 0x7, 0x67, 0x2, 0x2, 0xf42, 0xf43, - 0x7, 0x66, 0x2, 0x2, 0xf43, 0xf44, 0x7, 0x76, 0x2, 0x2, 0xf44, 0xf45, - 0x7, 0x7b, 0x2, 0x2, 0xf45, 0xf46, 0x7, 0x72, 0x2, 0x2, 0xf46, 0xf47, - 0x7, 0x67, 0x2, 0x2, 0xf47, 0x2b4, 0x3, 0x2, 0x2, 0x2, 0xf48, 0xf49, - 0x7, 0x76, 0x2, 0x2, 0xf49, 0xf4a, 0x7, 0x7b, 0x2, 0x2, 0xf4a, 0xf4b, - 0x7, 0x72, 0x2, 0x2, 0xf4b, 0xf4c, 0x7, 0x67, 0x2, 0x2, 0xf4c, 0xf4d, - 0x7, 0x63, 0x2, 0x2, 0xf4d, 0xf4e, 0x7, 0x6e, 0x2, 0x2, 0xf4e, 0xf4f, - 0x7, 0x6b, 0x2, 0x2, 0xf4f, 0xf50, 0x7, 0x63, 0x2, 0x2, 0xf50, 0xf51, - 0x7, 0x75, 0x2, 0x2, 0xf51, 0x2b6, 0x3, 0x2, 0x2, 0x2, 0xf52, 0xf53, - 0x7, 0x76, 0x2, 0x2, 0xf53, 0xf54, 0x7, 0x7b, 0x2, 0x2, 0xf54, 0xf55, - 0x7, 0x72, 0x2, 0x2, 0xf55, 0xf56, 0x7, 0x67, 0x2, 0x2, 0xf56, 0xf57, - 0x7, 0x66, 0x2, 0x2, 0xf57, 0xf58, 0x7, 0x67, 0x2, 0x2, 0xf58, 0xf59, - 0x7, 0x68, 0x2, 0x2, 0xf59, 0x2b8, 0x3, 0x2, 0x2, 0x2, 0xf5a, 0xf5b, - 0x7, 0x68, 0x2, 0x2, 0xf5b, 0xf5c, 0x7, 0x77, 0x2, 0x2, 0xf5c, 0xf5d, - 0x7, 0x70, 0x2, 0x2, 0xf5d, 0xf5e, 0x7, 0x66, 0x2, 0x2, 0xf5e, 0xf5f, - 0x7, 0x63, 0x2, 0x2, 0xf5f, 0xf60, 0x7, 0x6f, 0x2, 0x2, 0xf60, 0xf61, - 0x7, 0x67, 0x2, 0x2, 0xf61, 0xf62, 0x7, 0x70, 0x2, 0x2, 0xf62, 0xf63, - 0x7, 0x76, 0x2, 0x2, 0xf63, 0xf64, 0x7, 0x63, 0x2, 0x2, 0xf64, 0xf65, - 0x7, 0x6e, 0x2, 0x2, 0xf65, 0x2ba, 0x3, 0x2, 0x2, 0x2, 0xf66, 0xf67, - 0x7, 0x76, 0x2, 0x2, 0xf67, 0xf68, 0x7, 0x7b, 0x2, 0x2, 0xf68, 0xf69, - 0x7, 0x72, 0x2, 0x2, 0xf69, 0xf6a, 0x7, 0x67, 0x2, 0x2, 0xf6a, 0xf6b, - 0x7, 0x71, 0x2, 0x2, 0xf6b, 0xf6c, 0x7, 0x68, 0x2, 0x2, 0xf6c, 0x2bc, - 0x3, 0x2, 0x2, 0x2, 0xf6d, 0xf6e, 0x7, 0x61, 0x2, 0x2, 0xf6e, 0xf6f, - 0x7, 0x61, 0x2, 0x2, 0xf6f, 0xf70, 0x7, 0x63, 0x2, 0x2, 0xf70, 0xf71, - 0x7, 0x7c, 0x2, 0x2, 0xf71, 0xf72, 0x7, 0x75, 0x2, 0x2, 0xf72, 0xf73, - 0x7, 0x6e, 0x2, 0x2, 0xf73, 0xf74, 0x7, 0x65, 0x2, 0x2, 0xf74, 0xf75, - 0x7, 0x61, 0x2, 0x2, 0xf75, 0xf76, 0x7, 0x72, 0x2, 0x2, 0xf76, 0xf77, - 0x7, 0x74, 0x2, 0x2, 0xf77, 0xf78, 0x7, 0x6b, 0x2, 0x2, 0xf78, 0xf79, - 0x7, 0x70, 0x2, 0x2, 0xf79, 0xf7a, 0x7, 0x76, 0x2, 0x2, 0xf7a, 0xf7b, - 0x7, 0x61, 0x2, 0x2, 0xf7b, 0xf7c, 0x7, 0x6f, 0x2, 0x2, 0xf7c, 0xf7d, - 0x7, 0x67, 0x2, 0x2, 0xf7d, 0xf7e, 0x7, 0x75, 0x2, 0x2, 0xf7e, 0xf7f, - 0x7, 0x75, 0x2, 0x2, 0xf7f, 0xf80, 0x7, 0x63, 0x2, 0x2, 0xf80, 0xf81, - 0x7, 0x69, 0x2, 0x2, 0xf81, 0xf82, 0x7, 0x67, 0x2, 0x2, 0xf82, 0x2be, - 0x3, 0x2, 0x2, 0x2, 0xf83, 0xf84, 0x7, 0x61, 0x2, 0x2, 0xf84, 0xf85, - 0x7, 0x61, 0x2, 0x2, 0xf85, 0xf86, 0x7, 0x63, 0x2, 0x2, 0xf86, 0xf87, - 0x7, 0x7c, 0x2, 0x2, 0xf87, 0xf88, 0x7, 0x75, 0x2, 0x2, 0xf88, 0xf89, - 0x7, 0x6e, 0x2, 0x2, 0xf89, 0xf8a, 0x7, 0x65, 0x2, 0x2, 0xf8a, 0xf8b, - 0x7, 0x61, 0x2, 0x2, 0xf8b, 0xf8c, 0x7, 0x72, 0x2, 0x2, 0xf8c, 0xf8d, - 0x7, 0x74, 0x2, 0x2, 0xf8d, 0xf8e, 0x7, 0x6b, 0x2, 0x2, 0xf8e, 0xf8f, - 0x7, 0x70, 0x2, 0x2, 0xf8f, 0xf90, 0x7, 0x76, 0x2, 0x2, 0xf90, 0xf91, - 0x7, 0x61, 0x2, 0x2, 0xf91, 0xf92, 0x7, 0x75, 0x2, 0x2, 0xf92, 0xf93, - 0x7, 0x7b, 0x2, 0x2, 0xf93, 0xf94, 0x7, 0x6f, 0x2, 0x2, 0xf94, 0xf95, - 0x7, 0x64, 0x2, 0x2, 0xf95, 0xf96, 0x7, 0x71, 0x2, 0x2, 0xf96, 0xf97, - 0x7, 0x6e, 0x2, 0x2, 0xf97, 0x2c0, 0x3, 0x2, 0x2, 0x2, 0xf98, 0xf99, - 0x7, 0x61, 0x2, 0x2, 0xf99, 0xf9a, 0x7, 0x61, 0x2, 0x2, 0xf9a, 0xf9b, - 0x7, 0x63, 0x2, 0x2, 0xf9b, 0xf9c, 0x7, 0x7c, 0x2, 0x2, 0xf9c, 0xf9d, - 0x7, 0x75, 0x2, 0x2, 0xf9d, 0xf9e, 0x7, 0x6e, 0x2, 0x2, 0xf9e, 0xf9f, - 0x7, 0x65, 0x2, 0x2, 0xf9f, 0xfa0, 0x7, 0x61, 0x2, 0x2, 0xfa0, 0xfa1, - 0x7, 0x72, 0x2, 0x2, 0xfa1, 0xfa2, 0x7, 0x74, 0x2, 0x2, 0xfa2, 0xfa3, - 0x7, 0x76, 0x2, 0x2, 0xfa3, 0xfa4, 0x7, 0x75, 0x2, 0x2, 0xfa4, 0xfa5, - 0x7, 0x7b, 0x2, 0x2, 0xfa5, 0xfa6, 0x7, 0x6f, 0x2, 0x2, 0xfa6, 0xfa7, - 0x7, 0x61, 0x2, 0x2, 0xfa7, 0xfa8, 0x7, 0x68, 0x2, 0x2, 0xfa8, 0xfa9, - 0x7, 0x77, 0x2, 0x2, 0xfa9, 0xfaa, 0x7, 0x6e, 0x2, 0x2, 0xfaa, 0xfab, - 0x7, 0x6e, 0x2, 0x2, 0xfab, 0xfac, 0x7, 0x7b, 0x2, 0x2, 0xfac, 0xfad, - 0x7, 0x61, 0x2, 0x2, 0xfad, 0xfae, 0x7, 0x73, 0x2, 0x2, 0xfae, 0xfaf, - 0x7, 0x77, 0x2, 0x2, 0xfaf, 0xfb0, 0x7, 0x63, 0x2, 0x2, 0xfb0, 0xfb1, - 0x7, 0x6e, 0x2, 0x2, 0xfb1, 0xfb2, 0x7, 0x6b, 0x2, 0x2, 0xfb2, 0xfb3, - 0x7, 0x68, 0x2, 0x2, 0xfb3, 0xfb4, 0x7, 0x6b, 0x2, 0x2, 0xfb4, 0xfb5, - 0x7, 0x67, 0x2, 0x2, 0xfb5, 0xfb6, 0x7, 0x66, 0x2, 0x2, 0xfb6, 0x2c2, - 0x3, 0x2, 0x2, 0x2, 0xfb7, 0xfb8, 0x7, 0x61, 0x2, 0x2, 0xfb8, 0xfb9, - 0x7, 0x61, 0x2, 0x2, 0xfb9, 0xfba, 0x7, 0x63, 0x2, 0x2, 0xfba, 0xfbb, - 0x7, 0x7c, 0x2, 0x2, 0xfbb, 0xfbc, 0x7, 0x75, 0x2, 0x2, 0xfbc, 0xfbd, - 0x7, 0x6e, 0x2, 0x2, 0xfbd, 0xfbe, 0x7, 0x65, 0x2, 0x2, 0xfbe, 0xfbf, - 0x7, 0x61, 0x2, 0x2, 0xfbf, 0xfc0, 0x7, 0x72, 0x2, 0x2, 0xfc0, 0xfc1, - 0x7, 0x74, 0x2, 0x2, 0xfc1, 0xfc2, 0x7, 0x76, 0x2, 0x2, 0xfc2, 0xfc3, - 0x7, 0x75, 0x2, 0x2, 0xfc3, 0xfc4, 0x7, 0x7b, 0x2, 0x2, 0xfc4, 0xfc5, - 0x7, 0x6f, 0x2, 0x2, 0xfc5, 0xfc6, 0x7, 0x61, 0x2, 0x2, 0xfc6, 0xfc7, - 0x7, 0x6e, 0x2, 0x2, 0xfc7, 0xfc8, 0x7, 0x67, 0x2, 0x2, 0xfc8, 0xfc9, - 0x7, 0x63, 0x2, 0x2, 0xfc9, 0xfca, 0x7, 0x75, 0x2, 0x2, 0xfca, 0xfcb, - 0x7, 0x76, 0x2, 0x2, 0xfcb, 0xfcc, 0x7, 0x61, 0x2, 0x2, 0xfcc, 0xfcd, - 0x7, 0x73, 0x2, 0x2, 0xfcd, 0xfce, 0x7, 0x77, 0x2, 0x2, 0xfce, 0xfcf, - 0x7, 0x63, 0x2, 0x2, 0xfcf, 0xfd0, 0x7, 0x6e, 0x2, 0x2, 0xfd0, 0xfd1, - 0x7, 0x6b, 0x2, 0x2, 0xfd1, 0xfd2, 0x7, 0x68, 0x2, 0x2, 0xfd2, 0xfd3, - 0x7, 0x6b, 0x2, 0x2, 0xfd3, 0xfd4, 0x7, 0x67, 0x2, 0x2, 0xfd4, 0xfd5, - 0x7, 0x66, 0x2, 0x2, 0xfd5, 0x2c4, 0x3, 0x2, 0x2, 0x2, 0xfd6, 0xfd7, - 0x7, 0x61, 0x2, 0x2, 0xfd7, 0xfd8, 0x7, 0x61, 0x2, 0x2, 0xfd8, 0xfd9, - 0x7, 0x63, 0x2, 0x2, 0xfd9, 0xfda, 0x7, 0x7c, 0x2, 0x2, 0xfda, 0xfdb, - 0x7, 0x75, 0x2, 0x2, 0xfdb, 0xfdc, 0x7, 0x6e, 0x2, 0x2, 0xfdc, 0xfdd, - 0x7, 0x65, 0x2, 0x2, 0xfdd, 0xfde, 0x7, 0x61, 0x2, 0x2, 0xfde, 0xfdf, - 0x7, 0x72, 0x2, 0x2, 0xfdf, 0xfe0, 0x7, 0x74, 0x2, 0x2, 0xfe0, 0xfe1, - 0x7, 0x76, 0x2, 0x2, 0xfe1, 0xfe2, 0x7, 0x75, 0x2, 0x2, 0xfe2, 0xfe3, - 0x7, 0x7b, 0x2, 0x2, 0xfe3, 0xfe4, 0x7, 0x6f, 0x2, 0x2, 0xfe4, 0xfe5, - 0x7, 0x61, 0x2, 0x2, 0xfe5, 0xfe6, 0x7, 0x65, 0x2, 0x2, 0xfe6, 0xfe7, - 0x7, 0x71, 0x2, 0x2, 0xfe7, 0xfe8, 0x7, 0x70, 0x2, 0x2, 0xfe8, 0xfe9, - 0x7, 0x75, 0x2, 0x2, 0xfe9, 0xfea, 0x7, 0x76, 0x2, 0x2, 0xfea, 0xfeb, - 0x7, 0x6b, 0x2, 0x2, 0xfeb, 0xfec, 0x7, 0x70, 0x2, 0x2, 0xfec, 0xfed, - 0x7, 0x76, 0x2, 0x2, 0xfed, 0xfee, 0x7, 0x61, 0x2, 0x2, 0xfee, 0xfef, - 0x7, 0x78, 0x2, 0x2, 0xfef, 0xff0, 0x7, 0x63, 0x2, 0x2, 0xff0, 0xff1, - 0x7, 0x6e, 0x2, 0x2, 0xff1, 0xff2, 0x7, 0x77, 0x2, 0x2, 0xff2, 0xff3, - 0x7, 0x67, 0x2, 0x2, 0xff3, 0x2c6, 0x3, 0x2, 0x2, 0x2, 0xff4, 0xff5, - 0x7, 0x48, 0x2, 0x2, 0xff5, 0xff6, 0x7, 0x74, 0x2, 0x2, 0xff6, 0xff7, - 0x7, 0x67, 0x2, 0x2, 0xff7, 0xff8, 0x7, 0x73, 0x2, 0x2, 0xff8, 0xff9, - 0x7, 0x77, 0x2, 0x2, 0xff9, 0xffa, 0x7, 0x67, 0x2, 0x2, 0xffa, 0xffb, - 0x7, 0x70, 0x2, 0x2, 0xffb, 0xffc, 0x7, 0x65, 0x2, 0x2, 0xffc, 0xffd, - 0x7, 0x7b, 0x2, 0x2, 0xffd, 0xffe, 0x7, 0x4b, 0x2, 0x2, 0xffe, 0xfff, - 0x7, 0x66, 0x2, 0x2, 0xfff, 0x2c8, 0x3, 0x2, 0x2, 0x2, 0x1000, 0x1001, - 0x7, 0x55, 0x2, 0x2, 0x1001, 0x1002, 0x7, 0x6a, 0x2, 0x2, 0x1002, - 0x1003, 0x7, 0x63, 0x2, 0x2, 0x1003, 0x1004, 0x7, 0x66, 0x2, 0x2, - 0x1004, 0x1005, 0x7, 0x67, 0x2, 0x2, 0x1005, 0x1006, 0x7, 0x74, 0x2, - 0x2, 0x1006, 0x1007, 0x7, 0x58, 0x2, 0x2, 0x1007, 0x1008, 0x7, 0x63, - 0x2, 0x2, 0x1008, 0x1009, 0x7, 0x74, 0x2, 0x2, 0x1009, 0x100a, 0x7, - 0x6b, 0x2, 0x2, 0x100a, 0x100b, 0x7, 0x63, 0x2, 0x2, 0x100b, 0x100c, - 0x7, 0x70, 0x2, 0x2, 0x100c, 0x100d, 0x7, 0x76, 0x2, 0x2, 0x100d, - 0x100e, 0x7, 0x48, 0x2, 0x2, 0x100e, 0x100f, 0x7, 0x63, 0x2, 0x2, - 0x100f, 0x1010, 0x7, 0x6e, 0x2, 0x2, 0x1010, 0x1011, 0x7, 0x6e, 0x2, - 0x2, 0x1011, 0x1012, 0x7, 0x64, 0x2, 0x2, 0x1012, 0x1013, 0x7, 0x63, - 0x2, 0x2, 0x1013, 0x1014, 0x7, 0x65, 0x2, 0x2, 0x1014, 0x1015, 0x7, - 0x6d, 0x2, 0x2, 0x1015, 0x2ca, 0x3, 0x2, 0x2, 0x2, 0x1016, 0x1017, - 0x7, 0x55, 0x2, 0x2, 0x1017, 0x1018, 0x7, 0x6a, 0x2, 0x2, 0x1018, - 0x1019, 0x7, 0x63, 0x2, 0x2, 0x1019, 0x101a, 0x7, 0x66, 0x2, 0x2, - 0x101a, 0x101b, 0x7, 0x67, 0x2, 0x2, 0x101b, 0x101c, 0x7, 0x74, 0x2, - 0x2, 0x101c, 0x101d, 0x7, 0x54, 0x2, 0x2, 0x101d, 0x101e, 0x7, 0x67, - 0x2, 0x2, 0x101e, 0x101f, 0x7, 0x75, 0x2, 0x2, 0x101f, 0x1020, 0x7, - 0x71, 0x2, 0x2, 0x1020, 0x1021, 0x7, 0x77, 0x2, 0x2, 0x1021, 0x1022, - 0x7, 0x74, 0x2, 0x2, 0x1022, 0x1023, 0x7, 0x65, 0x2, 0x2, 0x1023, - 0x1024, 0x7, 0x67, 0x2, 0x2, 0x1024, 0x1025, 0x7, 0x49, 0x2, 0x2, - 0x1025, 0x1026, 0x7, 0x74, 0x2, 0x2, 0x1026, 0x1027, 0x7, 0x71, 0x2, - 0x2, 0x1027, 0x1028, 0x7, 0x77, 0x2, 0x2, 0x1028, 0x1029, 0x7, 0x72, - 0x2, 0x2, 0x1029, 0x102a, 0x7, 0x55, 0x2, 0x2, 0x102a, 0x102b, 0x7, - 0x67, 0x2, 0x2, 0x102b, 0x102c, 0x7, 0x6f, 0x2, 0x2, 0x102c, 0x102d, - 0x7, 0x63, 0x2, 0x2, 0x102d, 0x102e, 0x7, 0x70, 0x2, 0x2, 0x102e, - 0x102f, 0x7, 0x76, 0x2, 0x2, 0x102f, 0x1030, 0x7, 0x6b, 0x2, 0x2, - 0x1030, 0x1031, 0x7, 0x65, 0x2, 0x2, 0x1031, 0x2cc, 0x3, 0x2, 0x2, - 0x2, 0x1032, 0x1033, 0x7, 0x55, 0x2, 0x2, 0x1033, 0x1034, 0x7, 0x6a, - 0x2, 0x2, 0x1034, 0x1035, 0x7, 0x63, 0x2, 0x2, 0x1035, 0x1036, 0x7, - 0x66, 0x2, 0x2, 0x1036, 0x1037, 0x7, 0x67, 0x2, 0x2, 0x1037, 0x1038, - 0x7, 0x74, 0x2, 0x2, 0x1038, 0x1039, 0x7, 0x54, 0x2, 0x2, 0x1039, - 0x103a, 0x7, 0x67, 0x2, 0x2, 0x103a, 0x103b, 0x7, 0x75, 0x2, 0x2, - 0x103b, 0x103c, 0x7, 0x71, 0x2, 0x2, 0x103c, 0x103d, 0x7, 0x77, 0x2, - 0x2, 0x103d, 0x103e, 0x7, 0x74, 0x2, 0x2, 0x103e, 0x103f, 0x7, 0x65, - 0x2, 0x2, 0x103f, 0x1040, 0x7, 0x67, 0x2, 0x2, 0x1040, 0x1041, 0x7, - 0x49, 0x2, 0x2, 0x1041, 0x1042, 0x7, 0x74, 0x2, 0x2, 0x1042, 0x1043, - 0x7, 0x71, 0x2, 0x2, 0x1043, 0x1044, 0x7, 0x77, 0x2, 0x2, 0x1044, - 0x1045, 0x7, 0x72, 0x2, 0x2, 0x1045, 0x2ce, 0x3, 0x2, 0x2, 0x2, 0x1046, - 0x1047, 0x7, 0x44, 0x2, 0x2, 0x1047, 0x1048, 0x7, 0x4b, 0x2, 0x2, - 0x1048, 0x1049, 0x7, 0x50, 0x2, 0x2, 0x1049, 0x104a, 0x7, 0x51, 0x2, - 0x2, 0x104a, 0x104b, 0x7, 0x54, 0x2, 0x2, 0x104b, 0x104c, 0x7, 0x4f, - 0x2, 0x2, 0x104c, 0x104d, 0x7, 0x43, 0x2, 0x2, 0x104d, 0x104e, 0x7, - 0x4e, 0x2, 0x2, 0x104e, 0x1052, 0x3, 0x2, 0x2, 0x2, 0x104f, 0x1051, - 0x5, 0x2d7, 0x16c, 0x2, 0x1050, 0x104f, 0x3, 0x2, 0x2, 0x2, 0x1051, - 0x1054, 0x3, 0x2, 0x2, 0x2, 0x1052, 0x1050, 0x3, 0x2, 0x2, 0x2, 0x1052, - 0x1053, 0x3, 0x2, 0x2, 0x2, 0x1053, 0x1114, 0x3, 0x2, 0x2, 0x2, 0x1054, - 0x1052, 0x3, 0x2, 0x2, 0x2, 0x1055, 0x1056, 0x7, 0x44, 0x2, 0x2, - 0x1056, 0x1057, 0x7, 0x4e, 0x2, 0x2, 0x1057, 0x1058, 0x7, 0x47, 0x2, - 0x2, 0x1058, 0x1059, 0x7, 0x50, 0x2, 0x2, 0x1059, 0x105a, 0x7, 0x46, - 0x2, 0x2, 0x105a, 0x105b, 0x7, 0x4b, 0x2, 0x2, 0x105b, 0x105c, 0x7, - 0x50, 0x2, 0x2, 0x105c, 0x105d, 0x7, 0x46, 0x2, 0x2, 0x105d, 0x105e, - 0x7, 0x4b, 0x2, 0x2, 0x105e, 0x105f, 0x7, 0x45, 0x2, 0x2, 0x105f, - 0x1060, 0x7, 0x47, 0x2, 0x2, 0x1060, 0x1061, 0x7, 0x55, 0x2, 0x2, - 0x1061, 0x1065, 0x3, 0x2, 0x2, 0x2, 0x1062, 0x1064, 0x5, 0x2d7, 0x16c, - 0x2, 0x1063, 0x1062, 0x3, 0x2, 0x2, 0x2, 0x1064, 0x1067, 0x3, 0x2, - 0x2, 0x2, 0x1065, 0x1063, 0x3, 0x2, 0x2, 0x2, 0x1065, 0x1066, 0x3, - 0x2, 0x2, 0x2, 0x1066, 0x1114, 0x3, 0x2, 0x2, 0x2, 0x1067, 0x1065, - 0x3, 0x2, 0x2, 0x2, 0x1068, 0x1069, 0x7, 0x44, 0x2, 0x2, 0x1069, - 0x106a, 0x7, 0x4e, 0x2, 0x2, 0x106a, 0x106b, 0x7, 0x47, 0x2, 0x2, - 0x106b, 0x106c, 0x7, 0x50, 0x2, 0x2, 0x106c, 0x106d, 0x7, 0x46, 0x2, - 0x2, 0x106d, 0x106e, 0x7, 0x59, 0x2, 0x2, 0x106e, 0x106f, 0x7, 0x47, - 0x2, 0x2, 0x106f, 0x1070, 0x7, 0x4b, 0x2, 0x2, 0x1070, 0x1071, 0x7, - 0x49, 0x2, 0x2, 0x1071, 0x1072, 0x7, 0x4a, 0x2, 0x2, 0x1072, 0x1073, - 0x7, 0x56, 0x2, 0x2, 0x1073, 0x1077, 0x3, 0x2, 0x2, 0x2, 0x1074, - 0x1076, 0x5, 0x2d7, 0x16c, 0x2, 0x1075, 0x1074, 0x3, 0x2, 0x2, 0x2, - 0x1076, 0x1079, 0x3, 0x2, 0x2, 0x2, 0x1077, 0x1075, 0x3, 0x2, 0x2, - 0x2, 0x1077, 0x1078, 0x3, 0x2, 0x2, 0x2, 0x1078, 0x1114, 0x3, 0x2, - 0x2, 0x2, 0x1079, 0x1077, 0x3, 0x2, 0x2, 0x2, 0x107a, 0x107b, 0x7, - 0x45, 0x2, 0x2, 0x107b, 0x107c, 0x7, 0x51, 0x2, 0x2, 0x107c, 0x107d, - 0x7, 0x4e, 0x2, 0x2, 0x107d, 0x107e, 0x7, 0x51, 0x2, 0x2, 0x107e, - 0x107f, 0x7, 0x54, 0x2, 0x2, 0x107f, 0x1083, 0x3, 0x2, 0x2, 0x2, - 0x1080, 0x1082, 0x5, 0x2d7, 0x16c, 0x2, 0x1081, 0x1080, 0x3, 0x2, - 0x2, 0x2, 0x1082, 0x1085, 0x3, 0x2, 0x2, 0x2, 0x1083, 0x1081, 0x3, - 0x2, 0x2, 0x2, 0x1083, 0x1084, 0x3, 0x2, 0x2, 0x2, 0x1084, 0x1114, - 0x3, 0x2, 0x2, 0x2, 0x1085, 0x1083, 0x3, 0x2, 0x2, 0x2, 0x1086, 0x1087, - 0x7, 0x50, 0x2, 0x2, 0x1087, 0x1088, 0x7, 0x51, 0x2, 0x2, 0x1088, - 0x1089, 0x7, 0x54, 0x2, 0x2, 0x1089, 0x108a, 0x7, 0x4f, 0x2, 0x2, - 0x108a, 0x108b, 0x7, 0x43, 0x2, 0x2, 0x108b, 0x108c, 0x7, 0x4e, 0x2, - 0x2, 0x108c, 0x1090, 0x3, 0x2, 0x2, 0x2, 0x108d, 0x108f, 0x5, 0x2d7, - 0x16c, 0x2, 0x108e, 0x108d, 0x3, 0x2, 0x2, 0x2, 0x108f, 0x1092, 0x3, - 0x2, 0x2, 0x2, 0x1090, 0x108e, 0x3, 0x2, 0x2, 0x2, 0x1090, 0x1091, - 0x3, 0x2, 0x2, 0x2, 0x1091, 0x1114, 0x3, 0x2, 0x2, 0x2, 0x1092, 0x1090, - 0x3, 0x2, 0x2, 0x2, 0x1093, 0x1094, 0x7, 0x52, 0x2, 0x2, 0x1094, - 0x1095, 0x7, 0x51, 0x2, 0x2, 0x1095, 0x1096, 0x7, 0x55, 0x2, 0x2, - 0x1096, 0x1097, 0x7, 0x4b, 0x2, 0x2, 0x1097, 0x1098, 0x7, 0x56, 0x2, - 0x2, 0x1098, 0x1099, 0x7, 0x4b, 0x2, 0x2, 0x1099, 0x109a, 0x7, 0x51, - 0x2, 0x2, 0x109a, 0x109b, 0x7, 0x50, 0x2, 0x2, 0x109b, 0x109f, 0x3, - 0x2, 0x2, 0x2, 0x109c, 0x109e, 0x5, 0x2d7, 0x16c, 0x2, 0x109d, 0x109c, - 0x3, 0x2, 0x2, 0x2, 0x109e, 0x10a1, 0x3, 0x2, 0x2, 0x2, 0x109f, 0x109d, - 0x3, 0x2, 0x2, 0x2, 0x109f, 0x10a0, 0x3, 0x2, 0x2, 0x2, 0x10a0, 0x1114, - 0x3, 0x2, 0x2, 0x2, 0x10a1, 0x109f, 0x3, 0x2, 0x2, 0x2, 0x10a2, 0x10a3, - 0x7, 0x52, 0x2, 0x2, 0x10a3, 0x10a4, 0x7, 0x51, 0x2, 0x2, 0x10a4, - 0x10a5, 0x7, 0x55, 0x2, 0x2, 0x10a5, 0x10a6, 0x7, 0x4b, 0x2, 0x2, - 0x10a6, 0x10a7, 0x7, 0x56, 0x2, 0x2, 0x10a7, 0x10a8, 0x7, 0x4b, 0x2, - 0x2, 0x10a8, 0x10a9, 0x7, 0x51, 0x2, 0x2, 0x10a9, 0x10aa, 0x7, 0x50, - 0x2, 0x2, 0x10aa, 0x1114, 0x7, 0x56, 0x2, 0x2, 0x10ab, 0x10ac, 0x7, - 0x52, 0x2, 0x2, 0x10ac, 0x10ad, 0x7, 0x55, 0x2, 0x2, 0x10ad, 0x10ae, - 0x7, 0x4b, 0x2, 0x2, 0x10ae, 0x10af, 0x7, 0x5c, 0x2, 0x2, 0x10af, - 0x10b0, 0x7, 0x47, 0x2, 0x2, 0x10b0, 0x10b4, 0x3, 0x2, 0x2, 0x2, - 0x10b1, 0x10b3, 0x5, 0x2d7, 0x16c, 0x2, 0x10b2, 0x10b1, 0x3, 0x2, - 0x2, 0x2, 0x10b3, 0x10b6, 0x3, 0x2, 0x2, 0x2, 0x10b4, 0x10b2, 0x3, - 0x2, 0x2, 0x2, 0x10b4, 0x10b5, 0x3, 0x2, 0x2, 0x2, 0x10b5, 0x1114, - 0x3, 0x2, 0x2, 0x2, 0x10b6, 0x10b4, 0x3, 0x2, 0x2, 0x2, 0x10b7, 0x10b8, - 0x7, 0x56, 0x2, 0x2, 0x10b8, 0x10b9, 0x7, 0x43, 0x2, 0x2, 0x10b9, - 0x10ba, 0x7, 0x50, 0x2, 0x2, 0x10ba, 0x10bb, 0x7, 0x49, 0x2, 0x2, - 0x10bb, 0x10bc, 0x7, 0x47, 0x2, 0x2, 0x10bc, 0x10bd, 0x7, 0x50, 0x2, - 0x2, 0x10bd, 0x10be, 0x7, 0x56, 0x2, 0x2, 0x10be, 0x10c2, 0x3, 0x2, - 0x2, 0x2, 0x10bf, 0x10c1, 0x5, 0x2d7, 0x16c, 0x2, 0x10c0, 0x10bf, - 0x3, 0x2, 0x2, 0x2, 0x10c1, 0x10c4, 0x3, 0x2, 0x2, 0x2, 0x10c2, 0x10c0, - 0x3, 0x2, 0x2, 0x2, 0x10c2, 0x10c3, 0x3, 0x2, 0x2, 0x2, 0x10c3, 0x1114, - 0x3, 0x2, 0x2, 0x2, 0x10c4, 0x10c2, 0x3, 0x2, 0x2, 0x2, 0x10c5, 0x10c6, - 0x7, 0x56, 0x2, 0x2, 0x10c6, 0x10c7, 0x7, 0x47, 0x2, 0x2, 0x10c7, - 0x10c8, 0x7, 0x5a, 0x2, 0x2, 0x10c8, 0x10c9, 0x7, 0x45, 0x2, 0x2, - 0x10c9, 0x10ca, 0x7, 0x51, 0x2, 0x2, 0x10ca, 0x10cb, 0x7, 0x51, 0x2, - 0x2, 0x10cb, 0x10cc, 0x7, 0x54, 0x2, 0x2, 0x10cc, 0x10cd, 0x7, 0x46, - 0x2, 0x2, 0x10cd, 0x10d1, 0x3, 0x2, 0x2, 0x2, 0x10ce, 0x10d0, 0x5, - 0x2d7, 0x16c, 0x2, 0x10cf, 0x10ce, 0x3, 0x2, 0x2, 0x2, 0x10d0, 0x10d3, - 0x3, 0x2, 0x2, 0x2, 0x10d1, 0x10cf, 0x3, 0x2, 0x2, 0x2, 0x10d1, 0x10d2, - 0x3, 0x2, 0x2, 0x2, 0x10d2, 0x1114, 0x3, 0x2, 0x2, 0x2, 0x10d3, 0x10d1, - 0x3, 0x2, 0x2, 0x2, 0x10d4, 0x10d5, 0x7, 0x48, 0x2, 0x2, 0x10d5, - 0x10d6, 0x7, 0x51, 0x2, 0x2, 0x10d6, 0x1114, 0x7, 0x49, 0x2, 0x2, - 0x10d7, 0x10d8, 0x7, 0x56, 0x2, 0x2, 0x10d8, 0x10d9, 0x7, 0x47, 0x2, - 0x2, 0x10d9, 0x10da, 0x7, 0x55, 0x2, 0x2, 0x10da, 0x10db, 0x7, 0x55, - 0x2, 0x2, 0x10db, 0x10dc, 0x7, 0x48, 0x2, 0x2, 0x10dc, 0x10dd, 0x7, - 0x43, 0x2, 0x2, 0x10dd, 0x10de, 0x7, 0x45, 0x2, 0x2, 0x10de, 0x10df, - 0x7, 0x56, 0x2, 0x2, 0x10df, 0x10e0, 0x7, 0x51, 0x2, 0x2, 0x10e0, - 0x10e1, 0x7, 0x54, 0x2, 0x2, 0x10e1, 0x10e5, 0x3, 0x2, 0x2, 0x2, - 0x10e2, 0x10e4, 0x5, 0x2d7, 0x16c, 0x2, 0x10e3, 0x10e2, 0x3, 0x2, - 0x2, 0x2, 0x10e4, 0x10e7, 0x3, 0x2, 0x2, 0x2, 0x10e5, 0x10e3, 0x3, - 0x2, 0x2, 0x2, 0x10e5, 0x10e6, 0x3, 0x2, 0x2, 0x2, 0x10e6, 0x1114, - 0x3, 0x2, 0x2, 0x2, 0x10e7, 0x10e5, 0x3, 0x2, 0x2, 0x2, 0x10e8, 0x10e9, - 0x7, 0x56, 0x2, 0x2, 0x10e9, 0x10ea, 0x7, 0x47, 0x2, 0x2, 0x10ea, - 0x10eb, 0x7, 0x5a, 0x2, 0x2, 0x10eb, 0x10ec, 0x7, 0x45, 0x2, 0x2, - 0x10ec, 0x10ed, 0x7, 0x51, 0x2, 0x2, 0x10ed, 0x10ee, 0x7, 0x51, 0x2, - 0x2, 0x10ee, 0x10ef, 0x7, 0x54, 0x2, 0x2, 0x10ef, 0x10f0, 0x7, 0x46, - 0x2, 0x2, 0x10f0, 0x10f4, 0x3, 0x2, 0x2, 0x2, 0x10f1, 0x10f3, 0x5, - 0x2d7, 0x16c, 0x2, 0x10f2, 0x10f1, 0x3, 0x2, 0x2, 0x2, 0x10f3, 0x10f6, - 0x3, 0x2, 0x2, 0x2, 0x10f4, 0x10f2, 0x3, 0x2, 0x2, 0x2, 0x10f4, 0x10f5, - 0x3, 0x2, 0x2, 0x2, 0x10f5, 0x1114, 0x3, 0x2, 0x2, 0x2, 0x10f6, 0x10f4, - 0x3, 0x2, 0x2, 0x2, 0x10f7, 0x10f8, 0x7, 0x58, 0x2, 0x2, 0x10f8, - 0x10f9, 0x7, 0x48, 0x2, 0x2, 0x10f9, 0x10fa, 0x7, 0x43, 0x2, 0x2, - 0x10fa, 0x10fb, 0x7, 0x45, 0x2, 0x2, 0x10fb, 0x1114, 0x7, 0x47, 0x2, - 0x2, 0x10fc, 0x10fd, 0x7, 0x58, 0x2, 0x2, 0x10fd, 0x10fe, 0x7, 0x52, - 0x2, 0x2, 0x10fe, 0x10ff, 0x7, 0x51, 0x2, 0x2, 0x10ff, 0x1100, 0x7, - 0x55, 0x2, 0x2, 0x1100, 0x1104, 0x3, 0x2, 0x2, 0x2, 0x1101, 0x1103, - 0x5, 0x2d7, 0x16c, 0x2, 0x1102, 0x1101, 0x3, 0x2, 0x2, 0x2, 0x1103, - 0x1106, 0x3, 0x2, 0x2, 0x2, 0x1104, 0x1102, 0x3, 0x2, 0x2, 0x2, 0x1104, - 0x1105, 0x3, 0x2, 0x2, 0x2, 0x1105, 0x1114, 0x3, 0x2, 0x2, 0x2, 0x1106, - 0x1104, 0x3, 0x2, 0x2, 0x2, 0x1107, 0x1108, 0x7, 0x46, 0x2, 0x2, - 0x1108, 0x1109, 0x7, 0x47, 0x2, 0x2, 0x1109, 0x110a, 0x7, 0x52, 0x2, - 0x2, 0x110a, 0x110b, 0x7, 0x56, 0x2, 0x2, 0x110b, 0x110c, 0x7, 0x4a, - 0x2, 0x2, 0x110c, 0x1110, 0x3, 0x2, 0x2, 0x2, 0x110d, 0x110f, 0x5, - 0x2d7, 0x16c, 0x2, 0x110e, 0x110d, 0x3, 0x2, 0x2, 0x2, 0x110f, 0x1112, - 0x3, 0x2, 0x2, 0x2, 0x1110, 0x110e, 0x3, 0x2, 0x2, 0x2, 0x1110, 0x1111, - 0x3, 0x2, 0x2, 0x2, 0x1111, 0x1114, 0x3, 0x2, 0x2, 0x2, 0x1112, 0x1110, - 0x3, 0x2, 0x2, 0x2, 0x1113, 0x1046, 0x3, 0x2, 0x2, 0x2, 0x1113, 0x1055, - 0x3, 0x2, 0x2, 0x2, 0x1113, 0x1068, 0x3, 0x2, 0x2, 0x2, 0x1113, 0x107a, - 0x3, 0x2, 0x2, 0x2, 0x1113, 0x1086, 0x3, 0x2, 0x2, 0x2, 0x1113, 0x1093, - 0x3, 0x2, 0x2, 0x2, 0x1113, 0x10a2, 0x3, 0x2, 0x2, 0x2, 0x1113, 0x10ab, - 0x3, 0x2, 0x2, 0x2, 0x1113, 0x10b7, 0x3, 0x2, 0x2, 0x2, 0x1113, 0x10c5, - 0x3, 0x2, 0x2, 0x2, 0x1113, 0x10d4, 0x3, 0x2, 0x2, 0x2, 0x1113, 0x10d7, - 0x3, 0x2, 0x2, 0x2, 0x1113, 0x10e8, 0x3, 0x2, 0x2, 0x2, 0x1113, 0x10f7, - 0x3, 0x2, 0x2, 0x2, 0x1113, 0x10fc, 0x3, 0x2, 0x2, 0x2, 0x1113, 0x1107, - 0x3, 0x2, 0x2, 0x2, 0x1114, 0x2d0, 0x3, 0x2, 0x2, 0x2, 0x1115, 0x1116, - 0x7, 0x55, 0x2, 0x2, 0x1116, 0x1117, 0x7, 0x58, 0x2, 0x2, 0x1117, - 0x1118, 0x7, 0x61, 0x2, 0x2, 0x1118, 0x111d, 0x3, 0x2, 0x2, 0x2, - 0x1119, 0x111c, 0x5, 0x2d5, 0x16b, 0x2, 0x111a, 0x111c, 0x5, 0x2d7, - 0x16c, 0x2, 0x111b, 0x1119, 0x3, 0x2, 0x2, 0x2, 0x111b, 0x111a, 0x3, - 0x2, 0x2, 0x2, 0x111c, 0x111f, 0x3, 0x2, 0x2, 0x2, 0x111d, 0x111b, - 0x3, 0x2, 0x2, 0x2, 0x111d, 0x111e, 0x3, 0x2, 0x2, 0x2, 0x111e, 0x1142, - 0x3, 0x2, 0x2, 0x2, 0x111f, 0x111d, 0x3, 0x2, 0x2, 0x2, 0x1120, 0x1121, - 0x7, 0x55, 0x2, 0x2, 0x1121, 0x1122, 0x7, 0x78, 0x2, 0x2, 0x1122, - 0x1123, 0x7, 0x61, 0x2, 0x2, 0x1123, 0x1128, 0x3, 0x2, 0x2, 0x2, - 0x1124, 0x1127, 0x5, 0x2d5, 0x16b, 0x2, 0x1125, 0x1127, 0x5, 0x2d7, - 0x16c, 0x2, 0x1126, 0x1124, 0x3, 0x2, 0x2, 0x2, 0x1126, 0x1125, 0x3, - 0x2, 0x2, 0x2, 0x1127, 0x112a, 0x3, 0x2, 0x2, 0x2, 0x1128, 0x1126, - 0x3, 0x2, 0x2, 0x2, 0x1128, 0x1129, 0x3, 0x2, 0x2, 0x2, 0x1129, 0x1142, - 0x3, 0x2, 0x2, 0x2, 0x112a, 0x1128, 0x3, 0x2, 0x2, 0x2, 0x112b, 0x112c, - 0x7, 0x75, 0x2, 0x2, 0x112c, 0x112d, 0x7, 0x58, 0x2, 0x2, 0x112d, - 0x112e, 0x7, 0x61, 0x2, 0x2, 0x112e, 0x1133, 0x3, 0x2, 0x2, 0x2, - 0x112f, 0x1132, 0x5, 0x2d5, 0x16b, 0x2, 0x1130, 0x1132, 0x5, 0x2d7, - 0x16c, 0x2, 0x1131, 0x112f, 0x3, 0x2, 0x2, 0x2, 0x1131, 0x1130, 0x3, - 0x2, 0x2, 0x2, 0x1132, 0x1135, 0x3, 0x2, 0x2, 0x2, 0x1133, 0x1131, - 0x3, 0x2, 0x2, 0x2, 0x1133, 0x1134, 0x3, 0x2, 0x2, 0x2, 0x1134, 0x1142, - 0x3, 0x2, 0x2, 0x2, 0x1135, 0x1133, 0x3, 0x2, 0x2, 0x2, 0x1136, 0x1137, - 0x7, 0x75, 0x2, 0x2, 0x1137, 0x1138, 0x7, 0x78, 0x2, 0x2, 0x1138, - 0x1139, 0x7, 0x61, 0x2, 0x2, 0x1139, 0x113e, 0x3, 0x2, 0x2, 0x2, - 0x113a, 0x113d, 0x5, 0x2d5, 0x16b, 0x2, 0x113b, 0x113d, 0x5, 0x2d7, - 0x16c, 0x2, 0x113c, 0x113a, 0x3, 0x2, 0x2, 0x2, 0x113c, 0x113b, 0x3, - 0x2, 0x2, 0x2, 0x113d, 0x1140, 0x3, 0x2, 0x2, 0x2, 0x113e, 0x113c, - 0x3, 0x2, 0x2, 0x2, 0x113e, 0x113f, 0x3, 0x2, 0x2, 0x2, 0x113f, 0x1142, - 0x3, 0x2, 0x2, 0x2, 0x1140, 0x113e, 0x3, 0x2, 0x2, 0x2, 0x1141, 0x1115, - 0x3, 0x2, 0x2, 0x2, 0x1141, 0x1120, 0x3, 0x2, 0x2, 0x2, 0x1141, 0x112b, - 0x3, 0x2, 0x2, 0x2, 0x1141, 0x1136, 0x3, 0x2, 0x2, 0x2, 0x1142, 0x2d2, - 0x3, 0x2, 0x2, 0x2, 0x1143, 0x1148, 0x5, 0x2d5, 0x16b, 0x2, 0x1144, - 0x1147, 0x5, 0x2d5, 0x16b, 0x2, 0x1145, 0x1147, 0x5, 0x2d7, 0x16c, - 0x2, 0x1146, 0x1144, 0x3, 0x2, 0x2, 0x2, 0x1146, 0x1145, 0x3, 0x2, - 0x2, 0x2, 0x1147, 0x114a, 0x3, 0x2, 0x2, 0x2, 0x1148, 0x1146, 0x3, - 0x2, 0x2, 0x2, 0x1148, 0x1149, 0x3, 0x2, 0x2, 0x2, 0x1149, 0x2d4, - 0x3, 0x2, 0x2, 0x2, 0x114a, 0x1148, 0x3, 0x2, 0x2, 0x2, 0x114b, 0x114c, - 0x9, 0x2, 0x2, 0x2, 0x114c, 0x2d6, 0x3, 0x2, 0x2, 0x2, 0x114d, 0x114e, - 0x9, 0x3, 0x2, 0x2, 0x114e, 0x2d8, 0x3, 0x2, 0x2, 0x2, 0x114f, 0x1151, - 0x5, 0x2d7, 0x16c, 0x2, 0x1150, 0x114f, 0x3, 0x2, 0x2, 0x2, 0x1151, - 0x1152, 0x3, 0x2, 0x2, 0x2, 0x1152, 0x1150, 0x3, 0x2, 0x2, 0x2, 0x1152, - 0x1153, 0x3, 0x2, 0x2, 0x2, 0x1153, 0x2da, 0x3, 0x2, 0x2, 0x2, 0x1154, - 0x1155, 0x7, 0x32, 0x2, 0x2, 0x1155, 0x1159, 0x7, 0x7a, 0x2, 0x2, - 0x1156, 0x1157, 0x7, 0x32, 0x2, 0x2, 0x1157, 0x1159, 0x7, 0x5a, 0x2, - 0x2, 0x1158, 0x1154, 0x3, 0x2, 0x2, 0x2, 0x1158, 0x1156, 0x3, 0x2, - 0x2, 0x2, 0x1159, 0x115b, 0x3, 0x2, 0x2, 0x2, 0x115a, 0x115c, 0x5, - 0x2dd, 0x16f, 0x2, 0x115b, 0x115a, 0x3, 0x2, 0x2, 0x2, 0x115c, 0x115d, - 0x3, 0x2, 0x2, 0x2, 0x115d, 0x115b, 0x3, 0x2, 0x2, 0x2, 0x115d, 0x115e, - 0x3, 0x2, 0x2, 0x2, 0x115e, 0x2dc, 0x3, 0x2, 0x2, 0x2, 0x115f, 0x1160, - 0x9, 0x4, 0x2, 0x2, 0x1160, 0x2de, 0x3, 0x2, 0x2, 0x2, 0x1161, 0x1163, - 0x5, 0x2e5, 0x173, 0x2, 0x1162, 0x1161, 0x3, 0x2, 0x2, 0x2, 0x1162, - 0x1163, 0x3, 0x2, 0x2, 0x2, 0x1163, 0x1164, 0x3, 0x2, 0x2, 0x2, 0x1164, - 0x1165, 0x7, 0x30, 0x2, 0x2, 0x1165, 0x116a, 0x5, 0x2e5, 0x173, 0x2, - 0x1166, 0x1167, 0x5, 0x2e5, 0x173, 0x2, 0x1167, 0x1168, 0x7, 0x30, - 0x2, 0x2, 0x1168, 0x116a, 0x3, 0x2, 0x2, 0x2, 0x1169, 0x1162, 0x3, - 0x2, 0x2, 0x2, 0x1169, 0x1166, 0x3, 0x2, 0x2, 0x2, 0x116a, 0x2e0, - 0x3, 0x2, 0x2, 0x2, 0x116b, 0x116d, 0x7, 0x67, 0x2, 0x2, 0x116c, - 0x116e, 0x5, 0x2e3, 0x172, 0x2, 0x116d, 0x116c, 0x3, 0x2, 0x2, 0x2, - 0x116d, 0x116e, 0x3, 0x2, 0x2, 0x2, 0x116e, 0x116f, 0x3, 0x2, 0x2, - 0x2, 0x116f, 0x1176, 0x5, 0x2e5, 0x173, 0x2, 0x1170, 0x1172, 0x7, - 0x47, 0x2, 0x2, 0x1171, 0x1173, 0x5, 0x2e3, 0x172, 0x2, 0x1172, 0x1171, - 0x3, 0x2, 0x2, 0x2, 0x1172, 0x1173, 0x3, 0x2, 0x2, 0x2, 0x1173, 0x1174, - 0x3, 0x2, 0x2, 0x2, 0x1174, 0x1176, 0x5, 0x2e5, 0x173, 0x2, 0x1175, - 0x116b, 0x3, 0x2, 0x2, 0x2, 0x1175, 0x1170, 0x3, 0x2, 0x2, 0x2, 0x1176, - 0x2e2, 0x3, 0x2, 0x2, 0x2, 0x1177, 0x1178, 0x9, 0x5, 0x2, 0x2, 0x1178, - 0x2e4, 0x3, 0x2, 0x2, 0x2, 0x1179, 0x117b, 0x5, 0x2d7, 0x16c, 0x2, - 0x117a, 0x1179, 0x3, 0x2, 0x2, 0x2, 0x117b, 0x117c, 0x3, 0x2, 0x2, - 0x2, 0x117c, 0x117a, 0x3, 0x2, 0x2, 0x2, 0x117c, 0x117d, 0x3, 0x2, - 0x2, 0x2, 0x117d, 0x2e6, 0x3, 0x2, 0x2, 0x2, 0x117e, 0x1180, 0x5, - 0x2dd, 0x16f, 0x2, 0x117f, 0x117e, 0x3, 0x2, 0x2, 0x2, 0x1180, 0x1181, - 0x3, 0x2, 0x2, 0x2, 0x1181, 0x117f, 0x3, 0x2, 0x2, 0x2, 0x1181, 0x1182, - 0x3, 0x2, 0x2, 0x2, 0x1182, 0x2e8, 0x3, 0x2, 0x2, 0x2, 0x1183, 0x1185, - 0x9, 0x6, 0x2, 0x2, 0x1184, 0x1183, 0x3, 0x2, 0x2, 0x2, 0x1184, 0x1185, - 0x3, 0x2, 0x2, 0x2, 0x1185, 0x1187, 0x3, 0x2, 0x2, 0x2, 0x1186, 0x1188, - 0x9, 0x7, 0x2, 0x2, 0x1187, 0x1186, 0x3, 0x2, 0x2, 0x2, 0x1187, 0x1188, - 0x3, 0x2, 0x2, 0x2, 0x1188, 0x118a, 0x3, 0x2, 0x2, 0x2, 0x1189, 0x118b, - 0x9, 0x7, 0x2, 0x2, 0x118a, 0x1189, 0x3, 0x2, 0x2, 0x2, 0x118a, 0x118b, - 0x3, 0x2, 0x2, 0x2, 0x118b, 0x1193, 0x3, 0x2, 0x2, 0x2, 0x118c, 0x118e, - 0x9, 0x7, 0x2, 0x2, 0x118d, 0x118c, 0x3, 0x2, 0x2, 0x2, 0x118d, 0x118e, - 0x3, 0x2, 0x2, 0x2, 0x118e, 0x1190, 0x3, 0x2, 0x2, 0x2, 0x118f, 0x1191, - 0x9, 0x6, 0x2, 0x2, 0x1190, 0x118f, 0x3, 0x2, 0x2, 0x2, 0x1190, 0x1191, - 0x3, 0x2, 0x2, 0x2, 0x1191, 0x1193, 0x3, 0x2, 0x2, 0x2, 0x1192, 0x1184, - 0x3, 0x2, 0x2, 0x2, 0x1192, 0x118d, 0x3, 0x2, 0x2, 0x2, 0x1193, 0x2ea, - 0x3, 0x2, 0x2, 0x2, 0x1194, 0x1196, 0x5, 0x2d9, 0x16d, 0x2, 0x1195, - 0x1197, 0x5, 0x2e9, 0x175, 0x2, 0x1196, 0x1195, 0x3, 0x2, 0x2, 0x2, - 0x1196, 0x1197, 0x3, 0x2, 0x2, 0x2, 0x1197, 0x119d, 0x3, 0x2, 0x2, - 0x2, 0x1198, 0x119a, 0x5, 0x2db, 0x16e, 0x2, 0x1199, 0x119b, 0x5, - 0x2e9, 0x175, 0x2, 0x119a, 0x1199, 0x3, 0x2, 0x2, 0x2, 0x119a, 0x119b, - 0x3, 0x2, 0x2, 0x2, 0x119b, 0x119d, 0x3, 0x2, 0x2, 0x2, 0x119c, 0x1194, - 0x3, 0x2, 0x2, 0x2, 0x119c, 0x1198, 0x3, 0x2, 0x2, 0x2, 0x119d, 0x2ec, - 0x3, 0x2, 0x2, 0x2, 0x119e, 0x119f, 0x9, 0x8, 0x2, 0x2, 0x119f, 0x2ee, - 0x3, 0x2, 0x2, 0x2, 0x11a0, 0x11a2, 0x5, 0x2df, 0x170, 0x2, 0x11a1, - 0x11a3, 0x5, 0x2e1, 0x171, 0x2, 0x11a2, 0x11a1, 0x3, 0x2, 0x2, 0x2, - 0x11a2, 0x11a3, 0x3, 0x2, 0x2, 0x2, 0x11a3, 0x11a5, 0x3, 0x2, 0x2, - 0x2, 0x11a4, 0x11a6, 0x5, 0x2ed, 0x177, 0x2, 0x11a5, 0x11a4, 0x3, - 0x2, 0x2, 0x2, 0x11a5, 0x11a6, 0x3, 0x2, 0x2, 0x2, 0x11a6, 0x11ad, - 0x3, 0x2, 0x2, 0x2, 0x11a7, 0x11a8, 0x5, 0x2e5, 0x173, 0x2, 0x11a8, - 0x11aa, 0x5, 0x2e1, 0x171, 0x2, 0x11a9, 0x11ab, 0x5, 0x2ed, 0x177, - 0x2, 0x11aa, 0x11a9, 0x3, 0x2, 0x2, 0x2, 0x11aa, 0x11ab, 0x3, 0x2, - 0x2, 0x2, 0x11ab, 0x11ad, 0x3, 0x2, 0x2, 0x2, 0x11ac, 0x11a0, 0x3, - 0x2, 0x2, 0x2, 0x11ac, 0x11a7, 0x3, 0x2, 0x2, 0x2, 0x11ad, 0x2f0, - 0x3, 0x2, 0x2, 0x2, 0x11ae, 0x11af, 0x5, 0x2f3, 0x17a, 0x2, 0x11af, - 0x2f2, 0x3, 0x2, 0x2, 0x2, 0x11b0, 0x11b1, 0x7, 0x5e, 0x2, 0x2, 0x11b1, - 0x11b2, 0x9, 0x9, 0x2, 0x2, 0x11b2, 0x2f4, 0x3, 0x2, 0x2, 0x2, 0x11b3, - 0x11b5, 0x7, 0x24, 0x2, 0x2, 0x11b4, 0x11b6, 0x5, 0x2f7, 0x17c, 0x2, - 0x11b5, 0x11b4, 0x3, 0x2, 0x2, 0x2, 0x11b5, 0x11b6, 0x3, 0x2, 0x2, - 0x2, 0x11b6, 0x11b7, 0x3, 0x2, 0x2, 0x2, 0x11b7, 0x11b8, 0x7, 0x24, - 0x2, 0x2, 0x11b8, 0x2f6, 0x3, 0x2, 0x2, 0x2, 0x11b9, 0x11bb, 0x5, - 0x2f9, 0x17d, 0x2, 0x11ba, 0x11b9, 0x3, 0x2, 0x2, 0x2, 0x11bb, 0x11bc, - 0x3, 0x2, 0x2, 0x2, 0x11bc, 0x11ba, 0x3, 0x2, 0x2, 0x2, 0x11bc, 0x11bd, - 0x3, 0x2, 0x2, 0x2, 0x11bd, 0x2f8, 0x3, 0x2, 0x2, 0x2, 0x11be, 0x11c1, - 0xa, 0xa, 0x2, 0x2, 0x11bf, 0x11c1, 0x5, 0x2f1, 0x179, 0x2, 0x11c0, - 0x11be, 0x3, 0x2, 0x2, 0x2, 0x11c0, 0x11bf, 0x3, 0x2, 0x2, 0x2, 0x11c1, - 0x2fa, 0x3, 0x2, 0x2, 0x2, 0x11c2, 0x11c4, 0x7, 0x25, 0x2, 0x2, 0x11c3, - 0x11c5, 0x5, 0x2ff, 0x180, 0x2, 0x11c4, 0x11c3, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x783, 0x784, 0x7, 0x33, 0x2, 0x2, 0x784, 0x785, 0x7, 0x7a, 0x2, + 0x2, 0x785, 0x786, 0x7, 0x35, 0x2, 0x2, 0x786, 0x104, 0x3, 0x2, 0x2, + 0x2, 0x787, 0x788, 0x7, 0x6b, 0x2, 0x2, 0x788, 0x789, 0x7, 0x70, + 0x2, 0x2, 0x789, 0x78a, 0x7, 0x76, 0x2, 0x2, 0x78a, 0x78b, 0x7, 0x33, + 0x2, 0x2, 0x78b, 0x78c, 0x7, 0x7a, 0x2, 0x2, 0x78c, 0x78d, 0x7, 0x36, + 0x2, 0x2, 0x78d, 0x106, 0x3, 0x2, 0x2, 0x2, 0x78e, 0x78f, 0x7, 0x6b, + 0x2, 0x2, 0x78f, 0x790, 0x7, 0x70, 0x2, 0x2, 0x790, 0x791, 0x7, 0x76, + 0x2, 0x2, 0x791, 0x792, 0x7, 0x34, 0x2, 0x2, 0x792, 0x793, 0x7, 0x7a, + 0x2, 0x2, 0x793, 0x794, 0x7, 0x33, 0x2, 0x2, 0x794, 0x108, 0x3, 0x2, + 0x2, 0x2, 0x795, 0x796, 0x7, 0x6b, 0x2, 0x2, 0x796, 0x797, 0x7, 0x70, + 0x2, 0x2, 0x797, 0x798, 0x7, 0x76, 0x2, 0x2, 0x798, 0x799, 0x7, 0x34, + 0x2, 0x2, 0x799, 0x79a, 0x7, 0x7a, 0x2, 0x2, 0x79a, 0x79b, 0x7, 0x34, + 0x2, 0x2, 0x79b, 0x10a, 0x3, 0x2, 0x2, 0x2, 0x79c, 0x79d, 0x7, 0x6b, + 0x2, 0x2, 0x79d, 0x79e, 0x7, 0x70, 0x2, 0x2, 0x79e, 0x79f, 0x7, 0x76, + 0x2, 0x2, 0x79f, 0x7a0, 0x7, 0x34, 0x2, 0x2, 0x7a0, 0x7a1, 0x7, 0x7a, + 0x2, 0x2, 0x7a1, 0x7a2, 0x7, 0x35, 0x2, 0x2, 0x7a2, 0x10c, 0x3, 0x2, + 0x2, 0x2, 0x7a3, 0x7a4, 0x7, 0x6b, 0x2, 0x2, 0x7a4, 0x7a5, 0x7, 0x70, + 0x2, 0x2, 0x7a5, 0x7a6, 0x7, 0x76, 0x2, 0x2, 0x7a6, 0x7a7, 0x7, 0x34, + 0x2, 0x2, 0x7a7, 0x7a8, 0x7, 0x7a, 0x2, 0x2, 0x7a8, 0x7a9, 0x7, 0x36, + 0x2, 0x2, 0x7a9, 0x10e, 0x3, 0x2, 0x2, 0x2, 0x7aa, 0x7ab, 0x7, 0x6b, + 0x2, 0x2, 0x7ab, 0x7ac, 0x7, 0x70, 0x2, 0x2, 0x7ac, 0x7ad, 0x7, 0x76, + 0x2, 0x2, 0x7ad, 0x7ae, 0x7, 0x35, 0x2, 0x2, 0x7ae, 0x7af, 0x7, 0x7a, + 0x2, 0x2, 0x7af, 0x7b0, 0x7, 0x33, 0x2, 0x2, 0x7b0, 0x110, 0x3, 0x2, + 0x2, 0x2, 0x7b1, 0x7b2, 0x7, 0x6b, 0x2, 0x2, 0x7b2, 0x7b3, 0x7, 0x70, + 0x2, 0x2, 0x7b3, 0x7b4, 0x7, 0x76, 0x2, 0x2, 0x7b4, 0x7b5, 0x7, 0x35, + 0x2, 0x2, 0x7b5, 0x7b6, 0x7, 0x7a, 0x2, 0x2, 0x7b6, 0x7b7, 0x7, 0x34, + 0x2, 0x2, 0x7b7, 0x112, 0x3, 0x2, 0x2, 0x2, 0x7b8, 0x7b9, 0x7, 0x6b, + 0x2, 0x2, 0x7b9, 0x7ba, 0x7, 0x70, 0x2, 0x2, 0x7ba, 0x7bb, 0x7, 0x76, + 0x2, 0x2, 0x7bb, 0x7bc, 0x7, 0x35, 0x2, 0x2, 0x7bc, 0x7bd, 0x7, 0x7a, + 0x2, 0x2, 0x7bd, 0x7be, 0x7, 0x35, 0x2, 0x2, 0x7be, 0x114, 0x3, 0x2, + 0x2, 0x2, 0x7bf, 0x7c0, 0x7, 0x6b, 0x2, 0x2, 0x7c0, 0x7c1, 0x7, 0x70, + 0x2, 0x2, 0x7c1, 0x7c2, 0x7, 0x76, 0x2, 0x2, 0x7c2, 0x7c3, 0x7, 0x35, + 0x2, 0x2, 0x7c3, 0x7c4, 0x7, 0x7a, 0x2, 0x2, 0x7c4, 0x7c5, 0x7, 0x36, + 0x2, 0x2, 0x7c5, 0x116, 0x3, 0x2, 0x2, 0x2, 0x7c6, 0x7c7, 0x7, 0x6b, + 0x2, 0x2, 0x7c7, 0x7c8, 0x7, 0x70, 0x2, 0x2, 0x7c8, 0x7c9, 0x7, 0x76, + 0x2, 0x2, 0x7c9, 0x7ca, 0x7, 0x36, 0x2, 0x2, 0x7ca, 0x7cb, 0x7, 0x7a, + 0x2, 0x2, 0x7cb, 0x7cc, 0x7, 0x33, 0x2, 0x2, 0x7cc, 0x118, 0x3, 0x2, + 0x2, 0x2, 0x7cd, 0x7ce, 0x7, 0x6b, 0x2, 0x2, 0x7ce, 0x7cf, 0x7, 0x70, + 0x2, 0x2, 0x7cf, 0x7d0, 0x7, 0x76, 0x2, 0x2, 0x7d0, 0x7d1, 0x7, 0x36, + 0x2, 0x2, 0x7d1, 0x7d2, 0x7, 0x7a, 0x2, 0x2, 0x7d2, 0x7d3, 0x7, 0x34, + 0x2, 0x2, 0x7d3, 0x11a, 0x3, 0x2, 0x2, 0x2, 0x7d4, 0x7d5, 0x7, 0x6b, + 0x2, 0x2, 0x7d5, 0x7d6, 0x7, 0x70, 0x2, 0x2, 0x7d6, 0x7d7, 0x7, 0x76, + 0x2, 0x2, 0x7d7, 0x7d8, 0x7, 0x36, 0x2, 0x2, 0x7d8, 0x7d9, 0x7, 0x7a, + 0x2, 0x2, 0x7d9, 0x7da, 0x7, 0x35, 0x2, 0x2, 0x7da, 0x11c, 0x3, 0x2, + 0x2, 0x2, 0x7db, 0x7dc, 0x7, 0x6b, 0x2, 0x2, 0x7dc, 0x7dd, 0x7, 0x70, + 0x2, 0x2, 0x7dd, 0x7de, 0x7, 0x76, 0x2, 0x2, 0x7de, 0x7df, 0x7, 0x36, + 0x2, 0x2, 0x7df, 0x7e0, 0x7, 0x7a, 0x2, 0x2, 0x7e0, 0x7e1, 0x7, 0x36, + 0x2, 0x2, 0x7e1, 0x11e, 0x3, 0x2, 0x2, 0x2, 0x7e2, 0x7e3, 0x7, 0x6b, + 0x2, 0x2, 0x7e3, 0x7e4, 0x7, 0x70, 0x2, 0x2, 0x7e4, 0x7e5, 0x7, 0x76, + 0x2, 0x2, 0x7e5, 0x7e6, 0x7, 0x67, 0x2, 0x2, 0x7e6, 0x7e7, 0x7, 0x74, + 0x2, 0x2, 0x7e7, 0x7e8, 0x7, 0x68, 0x2, 0x2, 0x7e8, 0x7e9, 0x7, 0x63, + 0x2, 0x2, 0x7e9, 0x7ea, 0x7, 0x65, 0x2, 0x2, 0x7ea, 0x7eb, 0x7, 0x67, + 0x2, 0x2, 0x7eb, 0x120, 0x3, 0x2, 0x2, 0x2, 0x7ec, 0x7ed, 0x7, 0x6e, + 0x2, 0x2, 0x7ed, 0x7ee, 0x7, 0x6b, 0x2, 0x2, 0x7ee, 0x7ef, 0x7, 0x70, + 0x2, 0x2, 0x7ef, 0x7f0, 0x7, 0x67, 0x2, 0x2, 0x7f0, 0x122, 0x3, 0x2, + 0x2, 0x2, 0x7f1, 0x7f2, 0x7, 0x6e, 0x2, 0x2, 0x7f2, 0x7f3, 0x7, 0x6b, + 0x2, 0x2, 0x7f3, 0x7f4, 0x7, 0x70, 0x2, 0x2, 0x7f4, 0x7f5, 0x7, 0x67, + 0x2, 0x2, 0x7f5, 0x7f6, 0x7, 0x63, 0x2, 0x2, 0x7f6, 0x7f7, 0x7, 0x66, + 0x2, 0x2, 0x7f7, 0x7f8, 0x7, 0x6c, 0x2, 0x2, 0x7f8, 0x124, 0x3, 0x2, + 0x2, 0x2, 0x7f9, 0x7fa, 0x7, 0x6e, 0x2, 0x2, 0x7fa, 0x7fb, 0x7, 0x6b, + 0x2, 0x2, 0x7fb, 0x7fc, 0x7, 0x70, 0x2, 0x2, 0x7fc, 0x7fd, 0x7, 0x67, + 0x2, 0x2, 0x7fd, 0x7fe, 0x7, 0x63, 0x2, 0x2, 0x7fe, 0x7ff, 0x7, 0x74, + 0x2, 0x2, 0x7ff, 0x126, 0x3, 0x2, 0x2, 0x2, 0x800, 0x801, 0x7, 0x4e, + 0x2, 0x2, 0x801, 0x802, 0x7, 0x6b, 0x2, 0x2, 0x802, 0x803, 0x7, 0x70, + 0x2, 0x2, 0x803, 0x804, 0x7, 0x67, 0x2, 0x2, 0x804, 0x805, 0x7, 0x55, + 0x2, 0x2, 0x805, 0x806, 0x7, 0x76, 0x2, 0x2, 0x806, 0x807, 0x7, 0x74, + 0x2, 0x2, 0x807, 0x808, 0x7, 0x67, 0x2, 0x2, 0x808, 0x809, 0x7, 0x63, + 0x2, 0x2, 0x809, 0x80a, 0x7, 0x6f, 0x2, 0x2, 0x80a, 0x128, 0x3, 0x2, + 0x2, 0x2, 0x80b, 0x80c, 0x7, 0x6e, 0x2, 0x2, 0x80c, 0x80d, 0x7, 0x71, + 0x2, 0x2, 0x80d, 0x80e, 0x7, 0x70, 0x2, 0x2, 0x80e, 0x80f, 0x7, 0x69, + 0x2, 0x2, 0x80f, 0x12a, 0x3, 0x2, 0x2, 0x2, 0x810, 0x811, 0x7, 0x6f, + 0x2, 0x2, 0x811, 0x812, 0x7, 0x63, 0x2, 0x2, 0x812, 0x813, 0x7, 0x76, + 0x2, 0x2, 0x813, 0x814, 0x7, 0x74, 0x2, 0x2, 0x814, 0x815, 0x7, 0x6b, + 0x2, 0x2, 0x815, 0x816, 0x7, 0x7a, 0x2, 0x2, 0x816, 0x12c, 0x3, 0x2, + 0x2, 0x2, 0x817, 0x818, 0x7, 0x70, 0x2, 0x2, 0x818, 0x819, 0x7, 0x71, + 0x2, 0x2, 0x819, 0x81a, 0x7, 0x6b, 0x2, 0x2, 0x81a, 0x81b, 0x7, 0x70, + 0x2, 0x2, 0x81b, 0x81c, 0x7, 0x76, 0x2, 0x2, 0x81c, 0x81d, 0x7, 0x67, + 0x2, 0x2, 0x81d, 0x81e, 0x7, 0x74, 0x2, 0x2, 0x81e, 0x81f, 0x7, 0x72, + 0x2, 0x2, 0x81f, 0x820, 0x7, 0x71, 0x2, 0x2, 0x820, 0x821, 0x7, 0x6e, + 0x2, 0x2, 0x821, 0x822, 0x7, 0x63, 0x2, 0x2, 0x822, 0x823, 0x7, 0x76, + 0x2, 0x2, 0x823, 0x824, 0x7, 0x6b, 0x2, 0x2, 0x824, 0x825, 0x7, 0x71, + 0x2, 0x2, 0x825, 0x826, 0x7, 0x70, 0x2, 0x2, 0x826, 0x12e, 0x3, 0x2, + 0x2, 0x2, 0x827, 0x828, 0x7, 0x70, 0x2, 0x2, 0x828, 0x829, 0x7, 0x71, + 0x2, 0x2, 0x829, 0x82a, 0x7, 0x72, 0x2, 0x2, 0x82a, 0x82b, 0x7, 0x67, + 0x2, 0x2, 0x82b, 0x82c, 0x7, 0x74, 0x2, 0x2, 0x82c, 0x82d, 0x7, 0x75, + 0x2, 0x2, 0x82d, 0x82e, 0x7, 0x72, 0x2, 0x2, 0x82e, 0x82f, 0x7, 0x67, + 0x2, 0x2, 0x82f, 0x830, 0x7, 0x65, 0x2, 0x2, 0x830, 0x831, 0x7, 0x76, + 0x2, 0x2, 0x831, 0x832, 0x7, 0x6b, 0x2, 0x2, 0x832, 0x833, 0x7, 0x78, + 0x2, 0x2, 0x833, 0x834, 0x7, 0x67, 0x2, 0x2, 0x834, 0x130, 0x3, 0x2, + 0x2, 0x2, 0x835, 0x836, 0x7, 0x71, 0x2, 0x2, 0x836, 0x837, 0x7, 0x72, + 0x2, 0x2, 0x837, 0x838, 0x7, 0x76, 0x2, 0x2, 0x838, 0x839, 0x7, 0x6b, + 0x2, 0x2, 0x839, 0x83a, 0x7, 0x71, 0x2, 0x2, 0x83a, 0x83b, 0x7, 0x70, + 0x2, 0x2, 0x83b, 0x132, 0x3, 0x2, 0x2, 0x2, 0x83c, 0x83d, 0x7, 0x71, + 0x2, 0x2, 0x83d, 0x83e, 0x7, 0x77, 0x2, 0x2, 0x83e, 0x83f, 0x7, 0x76, + 0x2, 0x2, 0x83f, 0x134, 0x3, 0x2, 0x2, 0x2, 0x840, 0x841, 0x7, 0x51, + 0x2, 0x2, 0x841, 0x842, 0x7, 0x77, 0x2, 0x2, 0x842, 0x843, 0x7, 0x76, + 0x2, 0x2, 0x843, 0x844, 0x7, 0x72, 0x2, 0x2, 0x844, 0x845, 0x7, 0x77, + 0x2, 0x2, 0x845, 0x846, 0x7, 0x76, 0x2, 0x2, 0x846, 0x847, 0x7, 0x52, + 0x2, 0x2, 0x847, 0x848, 0x7, 0x63, 0x2, 0x2, 0x848, 0x849, 0x7, 0x76, + 0x2, 0x2, 0x849, 0x84a, 0x7, 0x65, 0x2, 0x2, 0x84a, 0x84b, 0x7, 0x6a, + 0x2, 0x2, 0x84b, 0x136, 0x3, 0x2, 0x2, 0x2, 0x84c, 0x84d, 0x7, 0x71, + 0x2, 0x2, 0x84d, 0x84e, 0x7, 0x78, 0x2, 0x2, 0x84e, 0x84f, 0x7, 0x67, + 0x2, 0x2, 0x84f, 0x850, 0x7, 0x74, 0x2, 0x2, 0x850, 0x851, 0x7, 0x74, + 0x2, 0x2, 0x851, 0x852, 0x7, 0x6b, 0x2, 0x2, 0x852, 0x853, 0x7, 0x66, + 0x2, 0x2, 0x853, 0x854, 0x7, 0x67, 0x2, 0x2, 0x854, 0x138, 0x3, 0x2, + 0x2, 0x2, 0x855, 0x856, 0x7, 0x72, 0x2, 0x2, 0x856, 0x857, 0x7, 0x63, + 0x2, 0x2, 0x857, 0x858, 0x7, 0x74, 0x2, 0x2, 0x858, 0x859, 0x7, 0x76, + 0x2, 0x2, 0x859, 0x85a, 0x7, 0x6b, 0x2, 0x2, 0x85a, 0x85b, 0x7, 0x63, + 0x2, 0x2, 0x85b, 0x85c, 0x7, 0x6e, 0x2, 0x2, 0x85c, 0x13a, 0x3, 0x2, + 0x2, 0x2, 0x85d, 0x85e, 0x7, 0x72, 0x2, 0x2, 0x85e, 0x85f, 0x7, 0x63, + 0x2, 0x2, 0x85f, 0x860, 0x7, 0x65, 0x2, 0x2, 0x860, 0x861, 0x7, 0x6d, + 0x2, 0x2, 0x861, 0x862, 0x7, 0x71, 0x2, 0x2, 0x862, 0x863, 0x7, 0x68, + 0x2, 0x2, 0x863, 0x864, 0x7, 0x68, 0x2, 0x2, 0x864, 0x865, 0x7, 0x75, + 0x2, 0x2, 0x865, 0x866, 0x7, 0x67, 0x2, 0x2, 0x866, 0x867, 0x7, 0x76, + 0x2, 0x2, 0x867, 0x13c, 0x3, 0x2, 0x2, 0x2, 0x868, 0x869, 0x7, 0x72, + 0x2, 0x2, 0x869, 0x86a, 0x7, 0x71, 0x2, 0x2, 0x86a, 0x86b, 0x7, 0x6b, + 0x2, 0x2, 0x86b, 0x86c, 0x7, 0x70, 0x2, 0x2, 0x86c, 0x86d, 0x7, 0x76, + 0x2, 0x2, 0x86d, 0x13e, 0x3, 0x2, 0x2, 0x2, 0x86e, 0x86f, 0x7, 0x52, + 0x2, 0x2, 0x86f, 0x870, 0x7, 0x71, 0x2, 0x2, 0x870, 0x871, 0x7, 0x6b, + 0x2, 0x2, 0x871, 0x872, 0x7, 0x70, 0x2, 0x2, 0x872, 0x873, 0x7, 0x76, + 0x2, 0x2, 0x873, 0x874, 0x7, 0x55, 0x2, 0x2, 0x874, 0x875, 0x7, 0x76, + 0x2, 0x2, 0x875, 0x876, 0x7, 0x74, 0x2, 0x2, 0x876, 0x877, 0x7, 0x67, + 0x2, 0x2, 0x877, 0x878, 0x7, 0x63, 0x2, 0x2, 0x878, 0x879, 0x7, 0x6f, + 0x2, 0x2, 0x879, 0x140, 0x3, 0x2, 0x2, 0x2, 0x87a, 0x87b, 0x7, 0x72, + 0x2, 0x2, 0x87b, 0x87c, 0x7, 0x74, 0x2, 0x2, 0x87c, 0x87d, 0x7, 0x67, + 0x2, 0x2, 0x87d, 0x87e, 0x7, 0x65, 0x2, 0x2, 0x87e, 0x87f, 0x7, 0x6b, + 0x2, 0x2, 0x87f, 0x880, 0x7, 0x75, 0x2, 0x2, 0x880, 0x881, 0x7, 0x67, + 0x2, 0x2, 0x881, 0x142, 0x3, 0x2, 0x2, 0x2, 0x882, 0x883, 0x7, 0x54, + 0x2, 0x2, 0x883, 0x884, 0x7, 0x63, 0x2, 0x2, 0x884, 0x885, 0x7, 0x75, + 0x2, 0x2, 0x885, 0x886, 0x7, 0x76, 0x2, 0x2, 0x886, 0x887, 0x7, 0x67, + 0x2, 0x2, 0x887, 0x888, 0x7, 0x74, 0x2, 0x2, 0x888, 0x889, 0x7, 0x6b, + 0x2, 0x2, 0x889, 0x88a, 0x7, 0x7c, 0x2, 0x2, 0x88a, 0x88b, 0x7, 0x67, + 0x2, 0x2, 0x88b, 0x88c, 0x7, 0x74, 0x2, 0x2, 0x88c, 0x88d, 0x7, 0x51, + 0x2, 0x2, 0x88d, 0x88e, 0x7, 0x74, 0x2, 0x2, 0x88e, 0x88f, 0x7, 0x66, + 0x2, 0x2, 0x88f, 0x890, 0x7, 0x67, 0x2, 0x2, 0x890, 0x891, 0x7, 0x74, + 0x2, 0x2, 0x891, 0x892, 0x7, 0x67, 0x2, 0x2, 0x892, 0x893, 0x7, 0x66, + 0x2, 0x2, 0x893, 0x894, 0x7, 0x44, 0x2, 0x2, 0x894, 0x895, 0x7, 0x77, + 0x2, 0x2, 0x895, 0x896, 0x7, 0x68, 0x2, 0x2, 0x896, 0x897, 0x7, 0x68, + 0x2, 0x2, 0x897, 0x898, 0x7, 0x67, 0x2, 0x2, 0x898, 0x899, 0x7, 0x74, + 0x2, 0x2, 0x899, 0x144, 0x3, 0x2, 0x2, 0x2, 0x89a, 0x89b, 0x7, 0x54, + 0x2, 0x2, 0x89b, 0x89c, 0x7, 0x63, 0x2, 0x2, 0x89c, 0x89d, 0x7, 0x75, + 0x2, 0x2, 0x89d, 0x89e, 0x7, 0x76, 0x2, 0x2, 0x89e, 0x89f, 0x7, 0x67, + 0x2, 0x2, 0x89f, 0x8a0, 0x7, 0x74, 0x2, 0x2, 0x8a0, 0x8a1, 0x7, 0x6b, + 0x2, 0x2, 0x8a1, 0x8a2, 0x7, 0x7c, 0x2, 0x2, 0x8a2, 0x8a3, 0x7, 0x67, + 0x2, 0x2, 0x8a3, 0x8a4, 0x7, 0x74, 0x2, 0x2, 0x8a4, 0x8a5, 0x7, 0x51, + 0x2, 0x2, 0x8a5, 0x8a6, 0x7, 0x74, 0x2, 0x2, 0x8a6, 0x8a7, 0x7, 0x66, + 0x2, 0x2, 0x8a7, 0x8a8, 0x7, 0x67, 0x2, 0x2, 0x8a8, 0x8a9, 0x7, 0x74, + 0x2, 0x2, 0x8a9, 0x8aa, 0x7, 0x67, 0x2, 0x2, 0x8aa, 0x8ab, 0x7, 0x66, + 0x2, 0x2, 0x8ab, 0x8ac, 0x7, 0x44, 0x2, 0x2, 0x8ac, 0x8ad, 0x7, 0x7b, + 0x2, 0x2, 0x8ad, 0x8ae, 0x7, 0x76, 0x2, 0x2, 0x8ae, 0x8af, 0x7, 0x67, + 0x2, 0x2, 0x8af, 0x8b0, 0x7, 0x43, 0x2, 0x2, 0x8b0, 0x8b1, 0x7, 0x66, + 0x2, 0x2, 0x8b1, 0x8b2, 0x7, 0x66, 0x2, 0x2, 0x8b2, 0x8b3, 0x7, 0x74, + 0x2, 0x2, 0x8b3, 0x8b4, 0x7, 0x67, 0x2, 0x2, 0x8b4, 0x8b5, 0x7, 0x75, + 0x2, 0x2, 0x8b5, 0x8b6, 0x7, 0x75, 0x2, 0x2, 0x8b6, 0x8b7, 0x7, 0x44, + 0x2, 0x2, 0x8b7, 0x8b8, 0x7, 0x77, 0x2, 0x2, 0x8b8, 0x8b9, 0x7, 0x68, + 0x2, 0x2, 0x8b9, 0x8ba, 0x7, 0x68, 0x2, 0x2, 0x8ba, 0x8bb, 0x7, 0x67, + 0x2, 0x2, 0x8bb, 0x8bc, 0x7, 0x74, 0x2, 0x2, 0x8bc, 0x146, 0x3, 0x2, + 0x2, 0x2, 0x8bd, 0x8be, 0x7, 0x54, 0x2, 0x2, 0x8be, 0x8bf, 0x7, 0x63, + 0x2, 0x2, 0x8bf, 0x8c0, 0x7, 0x75, 0x2, 0x2, 0x8c0, 0x8c1, 0x7, 0x76, + 0x2, 0x2, 0x8c1, 0x8c2, 0x7, 0x67, 0x2, 0x2, 0x8c2, 0x8c3, 0x7, 0x74, + 0x2, 0x2, 0x8c3, 0x8c4, 0x7, 0x6b, 0x2, 0x2, 0x8c4, 0x8c5, 0x7, 0x7c, + 0x2, 0x2, 0x8c5, 0x8c6, 0x7, 0x67, 0x2, 0x2, 0x8c6, 0x8c7, 0x7, 0x74, + 0x2, 0x2, 0x8c7, 0x8c8, 0x7, 0x51, 0x2, 0x2, 0x8c8, 0x8c9, 0x7, 0x74, + 0x2, 0x2, 0x8c9, 0x8ca, 0x7, 0x66, 0x2, 0x2, 0x8ca, 0x8cb, 0x7, 0x67, + 0x2, 0x2, 0x8cb, 0x8cc, 0x7, 0x74, 0x2, 0x2, 0x8cc, 0x8cd, 0x7, 0x67, + 0x2, 0x2, 0x8cd, 0x8ce, 0x7, 0x66, 0x2, 0x2, 0x8ce, 0x8cf, 0x7, 0x55, + 0x2, 0x2, 0x8cf, 0x8d0, 0x7, 0x76, 0x2, 0x2, 0x8d0, 0x8d1, 0x7, 0x74, + 0x2, 0x2, 0x8d1, 0x8d2, 0x7, 0x77, 0x2, 0x2, 0x8d2, 0x8d3, 0x7, 0x65, + 0x2, 0x2, 0x8d3, 0x8d4, 0x7, 0x76, 0x2, 0x2, 0x8d4, 0x8d5, 0x7, 0x77, + 0x2, 0x2, 0x8d5, 0x8d6, 0x7, 0x74, 0x2, 0x2, 0x8d6, 0x8d7, 0x7, 0x67, + 0x2, 0x2, 0x8d7, 0x8d8, 0x7, 0x66, 0x2, 0x2, 0x8d8, 0x8d9, 0x7, 0x44, + 0x2, 0x2, 0x8d9, 0x8da, 0x7, 0x77, 0x2, 0x2, 0x8da, 0x8db, 0x7, 0x68, + 0x2, 0x2, 0x8db, 0x8dc, 0x7, 0x68, 0x2, 0x2, 0x8dc, 0x8dd, 0x7, 0x67, + 0x2, 0x2, 0x8dd, 0x8de, 0x7, 0x74, 0x2, 0x2, 0x8de, 0x148, 0x3, 0x2, + 0x2, 0x2, 0x8df, 0x8e0, 0x7, 0x54, 0x2, 0x2, 0x8e0, 0x8e1, 0x7, 0x63, + 0x2, 0x2, 0x8e1, 0x8e2, 0x7, 0x75, 0x2, 0x2, 0x8e2, 0x8e3, 0x7, 0x76, + 0x2, 0x2, 0x8e3, 0x8e4, 0x7, 0x67, 0x2, 0x2, 0x8e4, 0x8e5, 0x7, 0x74, + 0x2, 0x2, 0x8e5, 0x8e6, 0x7, 0x6b, 0x2, 0x2, 0x8e6, 0x8e7, 0x7, 0x7c, + 0x2, 0x2, 0x8e7, 0x8e8, 0x7, 0x67, 0x2, 0x2, 0x8e8, 0x8e9, 0x7, 0x74, + 0x2, 0x2, 0x8e9, 0x8ea, 0x7, 0x51, 0x2, 0x2, 0x8ea, 0x8eb, 0x7, 0x74, + 0x2, 0x2, 0x8eb, 0x8ec, 0x7, 0x66, 0x2, 0x2, 0x8ec, 0x8ed, 0x7, 0x67, + 0x2, 0x2, 0x8ed, 0x8ee, 0x7, 0x74, 0x2, 0x2, 0x8ee, 0x8ef, 0x7, 0x67, + 0x2, 0x2, 0x8ef, 0x8f0, 0x7, 0x66, 0x2, 0x2, 0x8f0, 0x8f1, 0x7, 0x56, + 0x2, 0x2, 0x8f1, 0x8f2, 0x7, 0x67, 0x2, 0x2, 0x8f2, 0x8f3, 0x7, 0x7a, + 0x2, 0x2, 0x8f3, 0x8f4, 0x7, 0x76, 0x2, 0x2, 0x8f4, 0x8f5, 0x7, 0x77, + 0x2, 0x2, 0x8f5, 0x8f6, 0x7, 0x74, 0x2, 0x2, 0x8f6, 0x8f7, 0x7, 0x67, + 0x2, 0x2, 0x8f7, 0x8f8, 0x7, 0x33, 0x2, 0x2, 0x8f8, 0x8f9, 0x7, 0x46, + 0x2, 0x2, 0x8f9, 0x14a, 0x3, 0x2, 0x2, 0x2, 0x8fa, 0x8fb, 0x7, 0x54, + 0x2, 0x2, 0x8fb, 0x8fc, 0x7, 0x63, 0x2, 0x2, 0x8fc, 0x8fd, 0x7, 0x75, + 0x2, 0x2, 0x8fd, 0x8fe, 0x7, 0x76, 0x2, 0x2, 0x8fe, 0x8ff, 0x7, 0x67, + 0x2, 0x2, 0x8ff, 0x900, 0x7, 0x74, 0x2, 0x2, 0x900, 0x901, 0x7, 0x6b, + 0x2, 0x2, 0x901, 0x902, 0x7, 0x7c, 0x2, 0x2, 0x902, 0x903, 0x7, 0x67, + 0x2, 0x2, 0x903, 0x904, 0x7, 0x74, 0x2, 0x2, 0x904, 0x905, 0x7, 0x51, + 0x2, 0x2, 0x905, 0x906, 0x7, 0x74, 0x2, 0x2, 0x906, 0x907, 0x7, 0x66, + 0x2, 0x2, 0x907, 0x908, 0x7, 0x67, 0x2, 0x2, 0x908, 0x909, 0x7, 0x74, + 0x2, 0x2, 0x909, 0x90a, 0x7, 0x67, 0x2, 0x2, 0x90a, 0x90b, 0x7, 0x66, + 0x2, 0x2, 0x90b, 0x90c, 0x7, 0x56, 0x2, 0x2, 0x90c, 0x90d, 0x7, 0x67, + 0x2, 0x2, 0x90d, 0x90e, 0x7, 0x7a, 0x2, 0x2, 0x90e, 0x90f, 0x7, 0x76, + 0x2, 0x2, 0x90f, 0x910, 0x7, 0x77, 0x2, 0x2, 0x910, 0x911, 0x7, 0x74, + 0x2, 0x2, 0x911, 0x912, 0x7, 0x67, 0x2, 0x2, 0x912, 0x913, 0x7, 0x33, + 0x2, 0x2, 0x913, 0x914, 0x7, 0x46, 0x2, 0x2, 0x914, 0x915, 0x7, 0x43, + 0x2, 0x2, 0x915, 0x916, 0x7, 0x74, 0x2, 0x2, 0x916, 0x917, 0x7, 0x74, + 0x2, 0x2, 0x917, 0x918, 0x7, 0x63, 0x2, 0x2, 0x918, 0x919, 0x7, 0x7b, + 0x2, 0x2, 0x919, 0x14c, 0x3, 0x2, 0x2, 0x2, 0x91a, 0x91b, 0x7, 0x54, + 0x2, 0x2, 0x91b, 0x91c, 0x7, 0x63, 0x2, 0x2, 0x91c, 0x91d, 0x7, 0x75, + 0x2, 0x2, 0x91d, 0x91e, 0x7, 0x76, 0x2, 0x2, 0x91e, 0x91f, 0x7, 0x67, + 0x2, 0x2, 0x91f, 0x920, 0x7, 0x74, 0x2, 0x2, 0x920, 0x921, 0x7, 0x6b, + 0x2, 0x2, 0x921, 0x922, 0x7, 0x7c, 0x2, 0x2, 0x922, 0x923, 0x7, 0x67, + 0x2, 0x2, 0x923, 0x924, 0x7, 0x74, 0x2, 0x2, 0x924, 0x925, 0x7, 0x51, + 0x2, 0x2, 0x925, 0x926, 0x7, 0x74, 0x2, 0x2, 0x926, 0x927, 0x7, 0x66, + 0x2, 0x2, 0x927, 0x928, 0x7, 0x67, 0x2, 0x2, 0x928, 0x929, 0x7, 0x74, + 0x2, 0x2, 0x929, 0x92a, 0x7, 0x67, 0x2, 0x2, 0x92a, 0x92b, 0x7, 0x66, + 0x2, 0x2, 0x92b, 0x92c, 0x7, 0x56, 0x2, 0x2, 0x92c, 0x92d, 0x7, 0x67, + 0x2, 0x2, 0x92d, 0x92e, 0x7, 0x7a, 0x2, 0x2, 0x92e, 0x92f, 0x7, 0x76, + 0x2, 0x2, 0x92f, 0x930, 0x7, 0x77, 0x2, 0x2, 0x930, 0x931, 0x7, 0x74, + 0x2, 0x2, 0x931, 0x932, 0x7, 0x67, 0x2, 0x2, 0x932, 0x933, 0x7, 0x34, + 0x2, 0x2, 0x933, 0x934, 0x7, 0x46, 0x2, 0x2, 0x934, 0x14e, 0x3, 0x2, + 0x2, 0x2, 0x935, 0x936, 0x7, 0x54, 0x2, 0x2, 0x936, 0x937, 0x7, 0x63, + 0x2, 0x2, 0x937, 0x938, 0x7, 0x75, 0x2, 0x2, 0x938, 0x939, 0x7, 0x76, + 0x2, 0x2, 0x939, 0x93a, 0x7, 0x67, 0x2, 0x2, 0x93a, 0x93b, 0x7, 0x74, + 0x2, 0x2, 0x93b, 0x93c, 0x7, 0x6b, 0x2, 0x2, 0x93c, 0x93d, 0x7, 0x7c, + 0x2, 0x2, 0x93d, 0x93e, 0x7, 0x67, 0x2, 0x2, 0x93e, 0x93f, 0x7, 0x74, + 0x2, 0x2, 0x93f, 0x940, 0x7, 0x51, 0x2, 0x2, 0x940, 0x941, 0x7, 0x74, + 0x2, 0x2, 0x941, 0x942, 0x7, 0x66, 0x2, 0x2, 0x942, 0x943, 0x7, 0x67, + 0x2, 0x2, 0x943, 0x944, 0x7, 0x74, 0x2, 0x2, 0x944, 0x945, 0x7, 0x67, + 0x2, 0x2, 0x945, 0x946, 0x7, 0x66, 0x2, 0x2, 0x946, 0x947, 0x7, 0x56, + 0x2, 0x2, 0x947, 0x948, 0x7, 0x67, 0x2, 0x2, 0x948, 0x949, 0x7, 0x7a, + 0x2, 0x2, 0x949, 0x94a, 0x7, 0x76, 0x2, 0x2, 0x94a, 0x94b, 0x7, 0x77, + 0x2, 0x2, 0x94b, 0x94c, 0x7, 0x74, 0x2, 0x2, 0x94c, 0x94d, 0x7, 0x67, + 0x2, 0x2, 0x94d, 0x94e, 0x7, 0x34, 0x2, 0x2, 0x94e, 0x94f, 0x7, 0x46, + 0x2, 0x2, 0x94f, 0x950, 0x7, 0x43, 0x2, 0x2, 0x950, 0x951, 0x7, 0x74, + 0x2, 0x2, 0x951, 0x952, 0x7, 0x74, 0x2, 0x2, 0x952, 0x953, 0x7, 0x63, + 0x2, 0x2, 0x953, 0x954, 0x7, 0x7b, 0x2, 0x2, 0x954, 0x150, 0x3, 0x2, + 0x2, 0x2, 0x955, 0x956, 0x7, 0x54, 0x2, 0x2, 0x956, 0x957, 0x7, 0x63, + 0x2, 0x2, 0x957, 0x958, 0x7, 0x75, 0x2, 0x2, 0x958, 0x959, 0x7, 0x76, + 0x2, 0x2, 0x959, 0x95a, 0x7, 0x67, 0x2, 0x2, 0x95a, 0x95b, 0x7, 0x74, + 0x2, 0x2, 0x95b, 0x95c, 0x7, 0x6b, 0x2, 0x2, 0x95c, 0x95d, 0x7, 0x7c, + 0x2, 0x2, 0x95d, 0x95e, 0x7, 0x67, 0x2, 0x2, 0x95e, 0x95f, 0x7, 0x74, + 0x2, 0x2, 0x95f, 0x960, 0x7, 0x51, 0x2, 0x2, 0x960, 0x961, 0x7, 0x74, + 0x2, 0x2, 0x961, 0x962, 0x7, 0x66, 0x2, 0x2, 0x962, 0x963, 0x7, 0x67, + 0x2, 0x2, 0x963, 0x964, 0x7, 0x74, 0x2, 0x2, 0x964, 0x965, 0x7, 0x67, + 0x2, 0x2, 0x965, 0x966, 0x7, 0x66, 0x2, 0x2, 0x966, 0x967, 0x7, 0x56, + 0x2, 0x2, 0x967, 0x968, 0x7, 0x67, 0x2, 0x2, 0x968, 0x969, 0x7, 0x7a, + 0x2, 0x2, 0x969, 0x96a, 0x7, 0x76, 0x2, 0x2, 0x96a, 0x96b, 0x7, 0x77, + 0x2, 0x2, 0x96b, 0x96c, 0x7, 0x74, 0x2, 0x2, 0x96c, 0x96d, 0x7, 0x67, + 0x2, 0x2, 0x96d, 0x96e, 0x7, 0x35, 0x2, 0x2, 0x96e, 0x96f, 0x7, 0x46, + 0x2, 0x2, 0x96f, 0x152, 0x3, 0x2, 0x2, 0x2, 0x970, 0x971, 0x7, 0x54, + 0x2, 0x2, 0x971, 0x972, 0x7, 0x63, 0x2, 0x2, 0x972, 0x973, 0x7, 0x7b, + 0x2, 0x2, 0x973, 0x974, 0x7, 0x46, 0x2, 0x2, 0x974, 0x975, 0x7, 0x67, + 0x2, 0x2, 0x975, 0x976, 0x7, 0x75, 0x2, 0x2, 0x976, 0x977, 0x7, 0x65, + 0x2, 0x2, 0x977, 0x154, 0x3, 0x2, 0x2, 0x2, 0x978, 0x979, 0x7, 0x54, + 0x2, 0x2, 0x979, 0x97a, 0x7, 0x63, 0x2, 0x2, 0x97a, 0x97b, 0x7, 0x7b, + 0x2, 0x2, 0x97b, 0x97c, 0x7, 0x76, 0x2, 0x2, 0x97c, 0x97d, 0x7, 0x74, + 0x2, 0x2, 0x97d, 0x97e, 0x7, 0x63, 0x2, 0x2, 0x97e, 0x97f, 0x7, 0x65, + 0x2, 0x2, 0x97f, 0x980, 0x7, 0x6b, 0x2, 0x2, 0x980, 0x981, 0x7, 0x70, + 0x2, 0x2, 0x981, 0x982, 0x7, 0x69, 0x2, 0x2, 0x982, 0x983, 0x7, 0x43, + 0x2, 0x2, 0x983, 0x984, 0x7, 0x65, 0x2, 0x2, 0x984, 0x985, 0x7, 0x65, + 0x2, 0x2, 0x985, 0x986, 0x7, 0x67, 0x2, 0x2, 0x986, 0x987, 0x7, 0x6e, + 0x2, 0x2, 0x987, 0x988, 0x7, 0x67, 0x2, 0x2, 0x988, 0x989, 0x7, 0x74, + 0x2, 0x2, 0x989, 0x98a, 0x7, 0x63, 0x2, 0x2, 0x98a, 0x98b, 0x7, 0x76, + 0x2, 0x2, 0x98b, 0x98c, 0x7, 0x6b, 0x2, 0x2, 0x98c, 0x98d, 0x7, 0x71, + 0x2, 0x2, 0x98d, 0x98e, 0x7, 0x70, 0x2, 0x2, 0x98e, 0x98f, 0x7, 0x55, + 0x2, 0x2, 0x98f, 0x990, 0x7, 0x76, 0x2, 0x2, 0x990, 0x991, 0x7, 0x74, + 0x2, 0x2, 0x991, 0x992, 0x7, 0x77, 0x2, 0x2, 0x992, 0x993, 0x7, 0x65, + 0x2, 0x2, 0x993, 0x994, 0x7, 0x76, 0x2, 0x2, 0x994, 0x995, 0x7, 0x77, + 0x2, 0x2, 0x995, 0x996, 0x7, 0x74, 0x2, 0x2, 0x996, 0x997, 0x7, 0x67, + 0x2, 0x2, 0x997, 0x156, 0x3, 0x2, 0x2, 0x2, 0x998, 0x999, 0x7, 0x74, + 0x2, 0x2, 0x999, 0x99a, 0x7, 0x67, 0x2, 0x2, 0x99a, 0x99b, 0x7, 0x69, + 0x2, 0x2, 0x99b, 0x99c, 0x7, 0x6b, 0x2, 0x2, 0x99c, 0x99d, 0x7, 0x75, + 0x2, 0x2, 0x99d, 0x99e, 0x7, 0x76, 0x2, 0x2, 0x99e, 0x99f, 0x7, 0x67, + 0x2, 0x2, 0x99f, 0x9a0, 0x7, 0x74, 0x2, 0x2, 0x9a0, 0x158, 0x3, 0x2, + 0x2, 0x2, 0x9a1, 0x9a2, 0x7, 0x74, 0x2, 0x2, 0x9a2, 0x9a3, 0x7, 0x67, + 0x2, 0x2, 0x9a3, 0x9a4, 0x7, 0x76, 0x2, 0x2, 0x9a4, 0x9a5, 0x7, 0x77, + 0x2, 0x2, 0x9a5, 0x9a6, 0x7, 0x74, 0x2, 0x2, 0x9a6, 0x9a7, 0x7, 0x70, + 0x2, 0x2, 0x9a7, 0x15a, 0x3, 0x2, 0x2, 0x2, 0x9a8, 0x9a9, 0x7, 0x74, + 0x2, 0x2, 0x9a9, 0x9aa, 0x7, 0x71, 0x2, 0x2, 0x9aa, 0x9ab, 0x7, 0x79, + 0x2, 0x2, 0x9ab, 0x9ac, 0x7, 0x61, 0x2, 0x2, 0x9ac, 0x9ad, 0x7, 0x6f, + 0x2, 0x2, 0x9ad, 0x9ae, 0x7, 0x63, 0x2, 0x2, 0x9ae, 0x9af, 0x7, 0x6c, + 0x2, 0x2, 0x9af, 0x9b0, 0x7, 0x71, 0x2, 0x2, 0x9b0, 0x9b1, 0x7, 0x74, + 0x2, 0x2, 0x9b1, 0x15c, 0x3, 0x2, 0x2, 0x2, 0x9b2, 0x9b3, 0x7, 0x54, + 0x2, 0x2, 0x9b3, 0x9b4, 0x7, 0x59, 0x2, 0x2, 0x9b4, 0x9b5, 0x7, 0x44, + 0x2, 0x2, 0x9b5, 0x9b6, 0x7, 0x77, 0x2, 0x2, 0x9b6, 0x9b7, 0x7, 0x68, + 0x2, 0x2, 0x9b7, 0x9b8, 0x7, 0x68, 0x2, 0x2, 0x9b8, 0x9b9, 0x7, 0x67, + 0x2, 0x2, 0x9b9, 0x9ba, 0x7, 0x74, 0x2, 0x2, 0x9ba, 0x15e, 0x3, 0x2, + 0x2, 0x2, 0x9bb, 0x9bc, 0x7, 0x54, 0x2, 0x2, 0x9bc, 0x9bd, 0x7, 0x59, + 0x2, 0x2, 0x9bd, 0x9be, 0x7, 0x44, 0x2, 0x2, 0x9be, 0x9bf, 0x7, 0x7b, + 0x2, 0x2, 0x9bf, 0x9c0, 0x7, 0x76, 0x2, 0x2, 0x9c0, 0x9c1, 0x7, 0x67, + 0x2, 0x2, 0x9c1, 0x9c2, 0x7, 0x43, 0x2, 0x2, 0x9c2, 0x9c3, 0x7, 0x66, + 0x2, 0x2, 0x9c3, 0x9c4, 0x7, 0x66, 0x2, 0x2, 0x9c4, 0x9c5, 0x7, 0x74, + 0x2, 0x2, 0x9c5, 0x9c6, 0x7, 0x67, 0x2, 0x2, 0x9c6, 0x9c7, 0x7, 0x75, + 0x2, 0x2, 0x9c7, 0x9c8, 0x7, 0x75, 0x2, 0x2, 0x9c8, 0x9c9, 0x7, 0x44, + 0x2, 0x2, 0x9c9, 0x9ca, 0x7, 0x77, 0x2, 0x2, 0x9ca, 0x9cb, 0x7, 0x68, + 0x2, 0x2, 0x9cb, 0x9cc, 0x7, 0x68, 0x2, 0x2, 0x9cc, 0x9cd, 0x7, 0x67, + 0x2, 0x2, 0x9cd, 0x9ce, 0x7, 0x74, 0x2, 0x2, 0x9ce, 0x160, 0x3, 0x2, + 0x2, 0x2, 0x9cf, 0x9d0, 0x7, 0x54, 0x2, 0x2, 0x9d0, 0x9d1, 0x7, 0x59, + 0x2, 0x2, 0x9d1, 0x9d2, 0x7, 0x55, 0x2, 0x2, 0x9d2, 0x9d3, 0x7, 0x76, + 0x2, 0x2, 0x9d3, 0x9d4, 0x7, 0x74, 0x2, 0x2, 0x9d4, 0x9d5, 0x7, 0x77, + 0x2, 0x2, 0x9d5, 0x9d6, 0x7, 0x65, 0x2, 0x2, 0x9d6, 0x9d7, 0x7, 0x76, + 0x2, 0x2, 0x9d7, 0x9d8, 0x7, 0x77, 0x2, 0x2, 0x9d8, 0x9d9, 0x7, 0x74, + 0x2, 0x2, 0x9d9, 0x9da, 0x7, 0x67, 0x2, 0x2, 0x9da, 0x9db, 0x7, 0x66, + 0x2, 0x2, 0x9db, 0x9dc, 0x7, 0x44, 0x2, 0x2, 0x9dc, 0x9dd, 0x7, 0x77, + 0x2, 0x2, 0x9dd, 0x9de, 0x7, 0x68, 0x2, 0x2, 0x9de, 0x9df, 0x7, 0x68, + 0x2, 0x2, 0x9df, 0x9e0, 0x7, 0x67, 0x2, 0x2, 0x9e0, 0x9e1, 0x7, 0x74, + 0x2, 0x2, 0x9e1, 0x162, 0x3, 0x2, 0x2, 0x2, 0x9e2, 0x9e3, 0x7, 0x54, + 0x2, 0x2, 0x9e3, 0x9e4, 0x7, 0x59, 0x2, 0x2, 0x9e4, 0x9e5, 0x7, 0x56, + 0x2, 0x2, 0x9e5, 0x9e6, 0x7, 0x67, 0x2, 0x2, 0x9e6, 0x9e7, 0x7, 0x7a, + 0x2, 0x2, 0x9e7, 0x9e8, 0x7, 0x76, 0x2, 0x2, 0x9e8, 0x9e9, 0x7, 0x77, + 0x2, 0x2, 0x9e9, 0x9ea, 0x7, 0x74, 0x2, 0x2, 0x9ea, 0x9eb, 0x7, 0x67, + 0x2, 0x2, 0x9eb, 0x9ec, 0x7, 0x33, 0x2, 0x2, 0x9ec, 0x9ed, 0x7, 0x46, + 0x2, 0x2, 0x9ed, 0x164, 0x3, 0x2, 0x2, 0x2, 0x9ee, 0x9ef, 0x7, 0x54, + 0x2, 0x2, 0x9ef, 0x9f0, 0x7, 0x59, 0x2, 0x2, 0x9f0, 0x9f1, 0x7, 0x56, + 0x2, 0x2, 0x9f1, 0x9f2, 0x7, 0x67, 0x2, 0x2, 0x9f2, 0x9f3, 0x7, 0x7a, + 0x2, 0x2, 0x9f3, 0x9f4, 0x7, 0x76, 0x2, 0x2, 0x9f4, 0x9f5, 0x7, 0x77, + 0x2, 0x2, 0x9f5, 0x9f6, 0x7, 0x74, 0x2, 0x2, 0x9f6, 0x9f7, 0x7, 0x67, + 0x2, 0x2, 0x9f7, 0x9f8, 0x7, 0x33, 0x2, 0x2, 0x9f8, 0x9f9, 0x7, 0x46, + 0x2, 0x2, 0x9f9, 0x9fa, 0x7, 0x43, 0x2, 0x2, 0x9fa, 0x9fb, 0x7, 0x74, + 0x2, 0x2, 0x9fb, 0x9fc, 0x7, 0x74, 0x2, 0x2, 0x9fc, 0x9fd, 0x7, 0x63, + 0x2, 0x2, 0x9fd, 0x9fe, 0x7, 0x7b, 0x2, 0x2, 0x9fe, 0x166, 0x3, 0x2, + 0x2, 0x2, 0x9ff, 0xa00, 0x7, 0x54, 0x2, 0x2, 0xa00, 0xa01, 0x7, 0x59, + 0x2, 0x2, 0xa01, 0xa02, 0x7, 0x56, 0x2, 0x2, 0xa02, 0xa03, 0x7, 0x67, + 0x2, 0x2, 0xa03, 0xa04, 0x7, 0x7a, 0x2, 0x2, 0xa04, 0xa05, 0x7, 0x76, + 0x2, 0x2, 0xa05, 0xa06, 0x7, 0x77, 0x2, 0x2, 0xa06, 0xa07, 0x7, 0x74, + 0x2, 0x2, 0xa07, 0xa08, 0x7, 0x67, 0x2, 0x2, 0xa08, 0xa09, 0x7, 0x34, + 0x2, 0x2, 0xa09, 0xa0a, 0x7, 0x46, 0x2, 0x2, 0xa0a, 0x168, 0x3, 0x2, + 0x2, 0x2, 0xa0b, 0xa0c, 0x7, 0x54, 0x2, 0x2, 0xa0c, 0xa0d, 0x7, 0x59, + 0x2, 0x2, 0xa0d, 0xa0e, 0x7, 0x56, 0x2, 0x2, 0xa0e, 0xa0f, 0x7, 0x67, + 0x2, 0x2, 0xa0f, 0xa10, 0x7, 0x7a, 0x2, 0x2, 0xa10, 0xa11, 0x7, 0x76, + 0x2, 0x2, 0xa11, 0xa12, 0x7, 0x77, 0x2, 0x2, 0xa12, 0xa13, 0x7, 0x74, + 0x2, 0x2, 0xa13, 0xa14, 0x7, 0x67, 0x2, 0x2, 0xa14, 0xa15, 0x7, 0x34, + 0x2, 0x2, 0xa15, 0xa16, 0x7, 0x46, 0x2, 0x2, 0xa16, 0xa17, 0x7, 0x43, + 0x2, 0x2, 0xa17, 0xa18, 0x7, 0x74, 0x2, 0x2, 0xa18, 0xa19, 0x7, 0x74, + 0x2, 0x2, 0xa19, 0xa1a, 0x7, 0x63, 0x2, 0x2, 0xa1a, 0xa1b, 0x7, 0x7b, + 0x2, 0x2, 0xa1b, 0x16a, 0x3, 0x2, 0x2, 0x2, 0xa1c, 0xa1d, 0x7, 0x54, + 0x2, 0x2, 0xa1d, 0xa1e, 0x7, 0x59, 0x2, 0x2, 0xa1e, 0xa1f, 0x7, 0x56, + 0x2, 0x2, 0xa1f, 0xa20, 0x7, 0x67, 0x2, 0x2, 0xa20, 0xa21, 0x7, 0x7a, + 0x2, 0x2, 0xa21, 0xa22, 0x7, 0x76, 0x2, 0x2, 0xa22, 0xa23, 0x7, 0x77, + 0x2, 0x2, 0xa23, 0xa24, 0x7, 0x74, 0x2, 0x2, 0xa24, 0xa25, 0x7, 0x67, + 0x2, 0x2, 0xa25, 0xa26, 0x7, 0x35, 0x2, 0x2, 0xa26, 0xa27, 0x7, 0x46, + 0x2, 0x2, 0xa27, 0x16c, 0x3, 0x2, 0x2, 0x2, 0xa28, 0xa29, 0x7, 0x75, + 0x2, 0x2, 0xa29, 0xa2a, 0x7, 0x63, 0x2, 0x2, 0xa2a, 0xa2b, 0x7, 0x6f, + 0x2, 0x2, 0xa2b, 0xa2c, 0x7, 0x72, 0x2, 0x2, 0xa2c, 0xa2d, 0x7, 0x6e, + 0x2, 0x2, 0xa2d, 0xa2e, 0x7, 0x67, 0x2, 0x2, 0xa2e, 0x16e, 0x3, 0x2, + 0x2, 0x2, 0xa2f, 0xa30, 0x7, 0x75, 0x2, 0x2, 0xa30, 0xa31, 0x7, 0x63, + 0x2, 0x2, 0xa31, 0xa32, 0x7, 0x6f, 0x2, 0x2, 0xa32, 0xa33, 0x7, 0x72, + 0x2, 0x2, 0xa33, 0xa34, 0x7, 0x6e, 0x2, 0x2, 0xa34, 0xa35, 0x7, 0x67, + 0x2, 0x2, 0xa35, 0xa36, 0x7, 0x74, 0x2, 0x2, 0xa36, 0x170, 0x3, 0x2, + 0x2, 0x2, 0xa37, 0xa38, 0x7, 0x55, 0x2, 0x2, 0xa38, 0xa39, 0x7, 0x63, + 0x2, 0x2, 0xa39, 0xa3a, 0x7, 0x6f, 0x2, 0x2, 0xa3a, 0xa3b, 0x7, 0x72, + 0x2, 0x2, 0xa3b, 0xa3c, 0x7, 0x6e, 0x2, 0x2, 0xa3c, 0xa3d, 0x7, 0x67, + 0x2, 0x2, 0xa3d, 0xa3e, 0x7, 0x74, 0x2, 0x2, 0xa3e, 0x172, 0x3, 0x2, + 0x2, 0x2, 0xa3f, 0xa40, 0x7, 0x55, 0x2, 0x2, 0xa40, 0xa41, 0x7, 0x63, + 0x2, 0x2, 0xa41, 0xa42, 0x7, 0x6f, 0x2, 0x2, 0xa42, 0xa43, 0x7, 0x72, + 0x2, 0x2, 0xa43, 0xa44, 0x7, 0x6e, 0x2, 0x2, 0xa44, 0xa45, 0x7, 0x67, + 0x2, 0x2, 0xa45, 0xa46, 0x7, 0x74, 0x2, 0x2, 0xa46, 0xa47, 0x7, 0x45, + 0x2, 0x2, 0xa47, 0xa48, 0x7, 0x71, 0x2, 0x2, 0xa48, 0xa49, 0x7, 0x6f, + 0x2, 0x2, 0xa49, 0xa4a, 0x7, 0x72, 0x2, 0x2, 0xa4a, 0xa4b, 0x7, 0x63, + 0x2, 0x2, 0xa4b, 0xa4c, 0x7, 0x74, 0x2, 0x2, 0xa4c, 0xa4d, 0x7, 0x6b, + 0x2, 0x2, 0xa4d, 0xa4e, 0x7, 0x75, 0x2, 0x2, 0xa4e, 0xa4f, 0x7, 0x71, + 0x2, 0x2, 0xa4f, 0xa50, 0x7, 0x70, 0x2, 0x2, 0xa50, 0xa51, 0x7, 0x55, + 0x2, 0x2, 0xa51, 0xa52, 0x7, 0x76, 0x2, 0x2, 0xa52, 0xa53, 0x7, 0x63, + 0x2, 0x2, 0xa53, 0xa54, 0x7, 0x76, 0x2, 0x2, 0xa54, 0xa55, 0x7, 0x67, + 0x2, 0x2, 0xa55, 0x174, 0x3, 0x2, 0x2, 0x2, 0xa56, 0xa57, 0x7, 0x55, + 0x2, 0x2, 0xa57, 0xa58, 0x7, 0x63, 0x2, 0x2, 0xa58, 0xa59, 0x7, 0x6f, + 0x2, 0x2, 0xa59, 0xa5a, 0x7, 0x72, 0x2, 0x2, 0xa5a, 0xa5b, 0x7, 0x6e, + 0x2, 0x2, 0xa5b, 0xa5c, 0x7, 0x67, 0x2, 0x2, 0xa5c, 0xa5d, 0x7, 0x74, + 0x2, 0x2, 0xa5d, 0xa5e, 0x7, 0x55, 0x2, 0x2, 0xa5e, 0xa5f, 0x7, 0x76, + 0x2, 0x2, 0xa5f, 0xa60, 0x7, 0x63, 0x2, 0x2, 0xa60, 0xa61, 0x7, 0x76, + 0x2, 0x2, 0xa61, 0xa62, 0x7, 0x67, 0x2, 0x2, 0xa62, 0x176, 0x3, 0x2, + 0x2, 0x2, 0xa63, 0xa64, 0x7, 0x75, 0x2, 0x2, 0xa64, 0xa65, 0x7, 0x63, + 0x2, 0x2, 0xa65, 0xa66, 0x7, 0x6f, 0x2, 0x2, 0xa66, 0xa67, 0x7, 0x72, + 0x2, 0x2, 0xa67, 0xa68, 0x7, 0x6e, 0x2, 0x2, 0xa68, 0xa69, 0x7, 0x67, + 0x2, 0x2, 0xa69, 0xa6a, 0x7, 0x74, 0x2, 0x2, 0xa6a, 0xa6b, 0x7, 0x61, + 0x2, 0x2, 0xa6b, 0xa6c, 0x7, 0x75, 0x2, 0x2, 0xa6c, 0xa6d, 0x7, 0x76, + 0x2, 0x2, 0xa6d, 0xa6e, 0x7, 0x63, 0x2, 0x2, 0xa6e, 0xa6f, 0x7, 0x76, + 0x2, 0x2, 0xa6f, 0xa70, 0x7, 0x67, 0x2, 0x2, 0xa70, 0x178, 0x3, 0x2, + 0x2, 0x2, 0xa71, 0xa72, 0x7, 0x75, 0x2, 0x2, 0xa72, 0xa73, 0x7, 0x6a, + 0x2, 0x2, 0xa73, 0xa74, 0x7, 0x63, 0x2, 0x2, 0xa74, 0xa75, 0x7, 0x74, + 0x2, 0x2, 0xa75, 0xa76, 0x7, 0x67, 0x2, 0x2, 0xa76, 0xa77, 0x7, 0x66, + 0x2, 0x2, 0xa77, 0x17a, 0x3, 0x2, 0x2, 0x2, 0xa78, 0xa79, 0x7, 0x75, + 0x2, 0x2, 0xa79, 0xa7a, 0x7, 0x70, 0x2, 0x2, 0xa7a, 0xa7b, 0x7, 0x71, + 0x2, 0x2, 0xa7b, 0xa7c, 0x7, 0x74, 0x2, 0x2, 0xa7c, 0xa7d, 0x7, 0x6f, + 0x2, 0x2, 0xa7d, 0x17c, 0x3, 0x2, 0x2, 0x2, 0xa7e, 0xa7f, 0x7, 0x75, + 0x2, 0x2, 0xa7f, 0xa80, 0x7, 0x76, 0x2, 0x2, 0xa80, 0xa81, 0x7, 0x63, + 0x2, 0x2, 0xa81, 0xa82, 0x7, 0x76, 0x2, 0x2, 0xa82, 0xa83, 0x7, 0x6b, + 0x2, 0x2, 0xa83, 0xa84, 0x7, 0x65, 0x2, 0x2, 0xa84, 0x17e, 0x3, 0x2, + 0x2, 0x2, 0xa85, 0xa86, 0x7, 0x75, 0x2, 0x2, 0xa86, 0xa87, 0x7, 0x76, + 0x2, 0x2, 0xa87, 0xa88, 0x7, 0x74, 0x2, 0x2, 0xa88, 0xa89, 0x7, 0x77, + 0x2, 0x2, 0xa89, 0xa8a, 0x7, 0x65, 0x2, 0x2, 0xa8a, 0xa8b, 0x7, 0x76, + 0x2, 0x2, 0xa8b, 0x180, 0x3, 0x2, 0x2, 0x2, 0xa8c, 0xa8d, 0x7, 0x55, + 0x2, 0x2, 0xa8d, 0xa8e, 0x7, 0x76, 0x2, 0x2, 0xa8e, 0xa8f, 0x7, 0x74, + 0x2, 0x2, 0xa8f, 0xa90, 0x7, 0x77, 0x2, 0x2, 0xa90, 0xa91, 0x7, 0x65, + 0x2, 0x2, 0xa91, 0xa92, 0x7, 0x76, 0x2, 0x2, 0xa92, 0xa93, 0x7, 0x77, + 0x2, 0x2, 0xa93, 0xa94, 0x7, 0x74, 0x2, 0x2, 0xa94, 0xa95, 0x7, 0x67, + 0x2, 0x2, 0xa95, 0xa96, 0x7, 0x66, 0x2, 0x2, 0xa96, 0xa97, 0x7, 0x44, + 0x2, 0x2, 0xa97, 0xa98, 0x7, 0x77, 0x2, 0x2, 0xa98, 0xa99, 0x7, 0x68, + 0x2, 0x2, 0xa99, 0xa9a, 0x7, 0x68, 0x2, 0x2, 0xa9a, 0xa9b, 0x7, 0x67, + 0x2, 0x2, 0xa9b, 0xa9c, 0x7, 0x74, 0x2, 0x2, 0xa9c, 0x182, 0x3, 0x2, + 0x2, 0x2, 0xa9d, 0xa9e, 0x7, 0x55, 0x2, 0x2, 0xa9e, 0xa9f, 0x7, 0x77, + 0x2, 0x2, 0xa9f, 0xaa0, 0x7, 0x64, 0x2, 0x2, 0xaa0, 0xaa1, 0x7, 0x72, + 0x2, 0x2, 0xaa1, 0xaa2, 0x7, 0x63, 0x2, 0x2, 0xaa2, 0xaa3, 0x7, 0x75, + 0x2, 0x2, 0xaa3, 0xaa4, 0x7, 0x75, 0x2, 0x2, 0xaa4, 0xaa5, 0x7, 0x4b, + 0x2, 0x2, 0xaa5, 0xaa6, 0x7, 0x70, 0x2, 0x2, 0xaa6, 0xaa7, 0x7, 0x72, + 0x2, 0x2, 0xaa7, 0xaa8, 0x7, 0x77, 0x2, 0x2, 0xaa8, 0xaa9, 0x7, 0x76, + 0x2, 0x2, 0xaa9, 0x184, 0x3, 0x2, 0x2, 0x2, 0xaaa, 0xaab, 0x7, 0x55, + 0x2, 0x2, 0xaab, 0xaac, 0x7, 0x77, 0x2, 0x2, 0xaac, 0xaad, 0x7, 0x64, + 0x2, 0x2, 0xaad, 0xaae, 0x7, 0x72, 0x2, 0x2, 0xaae, 0xaaf, 0x7, 0x63, + 0x2, 0x2, 0xaaf, 0xab0, 0x7, 0x75, 0x2, 0x2, 0xab0, 0xab1, 0x7, 0x75, + 0x2, 0x2, 0xab1, 0xab2, 0x7, 0x4b, 0x2, 0x2, 0xab2, 0xab3, 0x7, 0x70, + 0x2, 0x2, 0xab3, 0xab4, 0x7, 0x72, 0x2, 0x2, 0xab4, 0xab5, 0x7, 0x77, + 0x2, 0x2, 0xab5, 0xab6, 0x7, 0x76, 0x2, 0x2, 0xab6, 0xab7, 0x7, 0x4f, + 0x2, 0x2, 0xab7, 0xab8, 0x7, 0x55, 0x2, 0x2, 0xab8, 0x186, 0x3, 0x2, + 0x2, 0x2, 0xab9, 0xaba, 0x7, 0x75, 0x2, 0x2, 0xaba, 0xabb, 0x7, 0x79, + 0x2, 0x2, 0xabb, 0xabc, 0x7, 0x6b, 0x2, 0x2, 0xabc, 0xabd, 0x7, 0x76, + 0x2, 0x2, 0xabd, 0xabe, 0x7, 0x65, 0x2, 0x2, 0xabe, 0xabf, 0x7, 0x6a, + 0x2, 0x2, 0xabf, 0x188, 0x3, 0x2, 0x2, 0x2, 0xac0, 0xac1, 0x7, 0x76, + 0x2, 0x2, 0xac1, 0xac2, 0x7, 0x64, 0x2, 0x2, 0xac2, 0xac3, 0x7, 0x77, + 0x2, 0x2, 0xac3, 0xac4, 0x7, 0x68, 0x2, 0x2, 0xac4, 0xac5, 0x7, 0x68, + 0x2, 0x2, 0xac5, 0xac6, 0x7, 0x67, 0x2, 0x2, 0xac6, 0xac7, 0x7, 0x74, + 0x2, 0x2, 0xac7, 0x18a, 0x3, 0x2, 0x2, 0x2, 0xac8, 0xac9, 0x7, 0x56, + 0x2, 0x2, 0xac9, 0xaca, 0x7, 0x67, 0x2, 0x2, 0xaca, 0xacb, 0x7, 0x7a, + 0x2, 0x2, 0xacb, 0xacc, 0x7, 0x76, 0x2, 0x2, 0xacc, 0xacd, 0x7, 0x77, + 0x2, 0x2, 0xacd, 0xace, 0x7, 0x74, 0x2, 0x2, 0xace, 0xacf, 0x7, 0x67, + 0x2, 0x2, 0xacf, 0xad0, 0x7, 0x33, 0x2, 0x2, 0xad0, 0xad1, 0x7, 0x46, + 0x2, 0x2, 0xad1, 0x18c, 0x3, 0x2, 0x2, 0x2, 0xad2, 0xad3, 0x7, 0x56, + 0x2, 0x2, 0xad3, 0xad4, 0x7, 0x67, 0x2, 0x2, 0xad4, 0xad5, 0x7, 0x7a, + 0x2, 0x2, 0xad5, 0xad6, 0x7, 0x76, 0x2, 0x2, 0xad6, 0xad7, 0x7, 0x77, + 0x2, 0x2, 0xad7, 0xad8, 0x7, 0x74, 0x2, 0x2, 0xad8, 0xad9, 0x7, 0x67, + 0x2, 0x2, 0xad9, 0xada, 0x7, 0x33, 0x2, 0x2, 0xada, 0xadb, 0x7, 0x46, + 0x2, 0x2, 0xadb, 0xadc, 0x7, 0x43, 0x2, 0x2, 0xadc, 0xadd, 0x7, 0x74, + 0x2, 0x2, 0xadd, 0xade, 0x7, 0x74, 0x2, 0x2, 0xade, 0xadf, 0x7, 0x63, + 0x2, 0x2, 0xadf, 0xae0, 0x7, 0x7b, 0x2, 0x2, 0xae0, 0x18e, 0x3, 0x2, + 0x2, 0x2, 0xae1, 0xae2, 0x7, 0x56, 0x2, 0x2, 0xae2, 0xae3, 0x7, 0x67, + 0x2, 0x2, 0xae3, 0xae4, 0x7, 0x7a, 0x2, 0x2, 0xae4, 0xae5, 0x7, 0x76, + 0x2, 0x2, 0xae5, 0xae6, 0x7, 0x77, 0x2, 0x2, 0xae6, 0xae7, 0x7, 0x74, + 0x2, 0x2, 0xae7, 0xae8, 0x7, 0x67, 0x2, 0x2, 0xae8, 0xae9, 0x7, 0x34, + 0x2, 0x2, 0xae9, 0xaea, 0x7, 0x46, 0x2, 0x2, 0xaea, 0x190, 0x3, 0x2, + 0x2, 0x2, 0xaeb, 0xaec, 0x7, 0x56, 0x2, 0x2, 0xaec, 0xaed, 0x7, 0x67, + 0x2, 0x2, 0xaed, 0xaee, 0x7, 0x7a, 0x2, 0x2, 0xaee, 0xaef, 0x7, 0x76, + 0x2, 0x2, 0xaef, 0xaf0, 0x7, 0x77, 0x2, 0x2, 0xaf0, 0xaf1, 0x7, 0x74, + 0x2, 0x2, 0xaf1, 0xaf2, 0x7, 0x67, 0x2, 0x2, 0xaf2, 0xaf3, 0x7, 0x34, + 0x2, 0x2, 0xaf3, 0xaf4, 0x7, 0x46, 0x2, 0x2, 0xaf4, 0xaf5, 0x7, 0x43, + 0x2, 0x2, 0xaf5, 0xaf6, 0x7, 0x74, 0x2, 0x2, 0xaf6, 0xaf7, 0x7, 0x74, + 0x2, 0x2, 0xaf7, 0xaf8, 0x7, 0x63, 0x2, 0x2, 0xaf8, 0xaf9, 0x7, 0x7b, + 0x2, 0x2, 0xaf9, 0x192, 0x3, 0x2, 0x2, 0x2, 0xafa, 0xafb, 0x7, 0x56, + 0x2, 0x2, 0xafb, 0xafc, 0x7, 0x67, 0x2, 0x2, 0xafc, 0xafd, 0x7, 0x7a, + 0x2, 0x2, 0xafd, 0xafe, 0x7, 0x76, 0x2, 0x2, 0xafe, 0xaff, 0x7, 0x77, + 0x2, 0x2, 0xaff, 0xb00, 0x7, 0x74, 0x2, 0x2, 0xb00, 0xb01, 0x7, 0x67, + 0x2, 0x2, 0xb01, 0xb02, 0x7, 0x34, 0x2, 0x2, 0xb02, 0xb03, 0x7, 0x46, + 0x2, 0x2, 0xb03, 0xb04, 0x7, 0x4f, 0x2, 0x2, 0xb04, 0xb05, 0x7, 0x55, + 0x2, 0x2, 0xb05, 0x194, 0x3, 0x2, 0x2, 0x2, 0xb06, 0xb07, 0x7, 0x56, + 0x2, 0x2, 0xb07, 0xb08, 0x7, 0x67, 0x2, 0x2, 0xb08, 0xb09, 0x7, 0x7a, + 0x2, 0x2, 0xb09, 0xb0a, 0x7, 0x76, 0x2, 0x2, 0xb0a, 0xb0b, 0x7, 0x77, + 0x2, 0x2, 0xb0b, 0xb0c, 0x7, 0x74, 0x2, 0x2, 0xb0c, 0xb0d, 0x7, 0x67, + 0x2, 0x2, 0xb0d, 0xb0e, 0x7, 0x34, 0x2, 0x2, 0xb0e, 0xb0f, 0x7, 0x46, + 0x2, 0x2, 0xb0f, 0xb10, 0x7, 0x4f, 0x2, 0x2, 0xb10, 0xb11, 0x7, 0x55, + 0x2, 0x2, 0xb11, 0xb12, 0x7, 0x43, 0x2, 0x2, 0xb12, 0xb13, 0x7, 0x74, + 0x2, 0x2, 0xb13, 0xb14, 0x7, 0x74, 0x2, 0x2, 0xb14, 0xb15, 0x7, 0x63, + 0x2, 0x2, 0xb15, 0xb16, 0x7, 0x7b, 0x2, 0x2, 0xb16, 0x196, 0x3, 0x2, + 0x2, 0x2, 0xb17, 0xb18, 0x7, 0x56, 0x2, 0x2, 0xb18, 0xb19, 0x7, 0x67, + 0x2, 0x2, 0xb19, 0xb1a, 0x7, 0x7a, 0x2, 0x2, 0xb1a, 0xb1b, 0x7, 0x76, + 0x2, 0x2, 0xb1b, 0xb1c, 0x7, 0x77, 0x2, 0x2, 0xb1c, 0xb1d, 0x7, 0x74, + 0x2, 0x2, 0xb1d, 0xb1e, 0x7, 0x67, 0x2, 0x2, 0xb1e, 0xb1f, 0x7, 0x35, + 0x2, 0x2, 0xb1f, 0xb20, 0x7, 0x46, 0x2, 0x2, 0xb20, 0x198, 0x3, 0x2, + 0x2, 0x2, 0xb21, 0xb22, 0x7, 0x56, 0x2, 0x2, 0xb22, 0xb23, 0x7, 0x67, + 0x2, 0x2, 0xb23, 0xb24, 0x7, 0x7a, 0x2, 0x2, 0xb24, 0xb25, 0x7, 0x76, + 0x2, 0x2, 0xb25, 0xb26, 0x7, 0x77, 0x2, 0x2, 0xb26, 0xb27, 0x7, 0x74, + 0x2, 0x2, 0xb27, 0xb28, 0x7, 0x67, 0x2, 0x2, 0xb28, 0xb29, 0x7, 0x45, + 0x2, 0x2, 0xb29, 0xb2a, 0x7, 0x77, 0x2, 0x2, 0xb2a, 0xb2b, 0x7, 0x64, + 0x2, 0x2, 0xb2b, 0xb2c, 0x7, 0x67, 0x2, 0x2, 0xb2c, 0x19a, 0x3, 0x2, + 0x2, 0x2, 0xb2d, 0xb2e, 0x7, 0x56, 0x2, 0x2, 0xb2e, 0xb2f, 0x7, 0x67, + 0x2, 0x2, 0xb2f, 0xb30, 0x7, 0x7a, 0x2, 0x2, 0xb30, 0xb31, 0x7, 0x76, + 0x2, 0x2, 0xb31, 0xb32, 0x7, 0x77, 0x2, 0x2, 0xb32, 0xb33, 0x7, 0x74, + 0x2, 0x2, 0xb33, 0xb34, 0x7, 0x67, 0x2, 0x2, 0xb34, 0xb35, 0x7, 0x45, + 0x2, 0x2, 0xb35, 0xb36, 0x7, 0x77, 0x2, 0x2, 0xb36, 0xb37, 0x7, 0x64, + 0x2, 0x2, 0xb37, 0xb38, 0x7, 0x67, 0x2, 0x2, 0xb38, 0xb39, 0x7, 0x43, + 0x2, 0x2, 0xb39, 0xb3a, 0x7, 0x74, 0x2, 0x2, 0xb3a, 0xb3b, 0x7, 0x74, + 0x2, 0x2, 0xb3b, 0xb3c, 0x7, 0x63, 0x2, 0x2, 0xb3c, 0xb3d, 0x7, 0x7b, + 0x2, 0x2, 0xb3d, 0x19c, 0x3, 0x2, 0x2, 0x2, 0xb3e, 0xb3f, 0x7, 0x76, + 0x2, 0x2, 0xb3f, 0xb40, 0x7, 0x74, 0x2, 0x2, 0xb40, 0xb41, 0x7, 0x6b, + 0x2, 0x2, 0xb41, 0xb42, 0x7, 0x63, 0x2, 0x2, 0xb42, 0xb43, 0x7, 0x70, + 0x2, 0x2, 0xb43, 0xb44, 0x7, 0x69, 0x2, 0x2, 0xb44, 0xb45, 0x7, 0x6e, + 0x2, 0x2, 0xb45, 0xb46, 0x7, 0x67, 0x2, 0x2, 0xb46, 0x19e, 0x3, 0x2, + 0x2, 0x2, 0xb47, 0xb48, 0x7, 0x76, 0x2, 0x2, 0xb48, 0xb49, 0x7, 0x74, + 0x2, 0x2, 0xb49, 0xb4a, 0x7, 0x6b, 0x2, 0x2, 0xb4a, 0xb4b, 0x7, 0x63, + 0x2, 0x2, 0xb4b, 0xb4c, 0x7, 0x70, 0x2, 0x2, 0xb4c, 0xb4d, 0x7, 0x69, + 0x2, 0x2, 0xb4d, 0xb4e, 0x7, 0x6e, 0x2, 0x2, 0xb4e, 0xb4f, 0x7, 0x67, + 0x2, 0x2, 0xb4f, 0xb50, 0x7, 0x63, 0x2, 0x2, 0xb50, 0xb51, 0x7, 0x66, + 0x2, 0x2, 0xb51, 0xb52, 0x7, 0x6c, 0x2, 0x2, 0xb52, 0x1a0, 0x3, 0x2, + 0x2, 0x2, 0xb53, 0xb54, 0x7, 0x56, 0x2, 0x2, 0xb54, 0xb55, 0x7, 0x74, + 0x2, 0x2, 0xb55, 0xb56, 0x7, 0x6b, 0x2, 0x2, 0xb56, 0xb57, 0x7, 0x63, + 0x2, 0x2, 0xb57, 0xb58, 0x7, 0x70, 0x2, 0x2, 0xb58, 0xb59, 0x7, 0x69, + 0x2, 0x2, 0xb59, 0xb5a, 0x7, 0x6e, 0x2, 0x2, 0xb5a, 0xb5b, 0x7, 0x67, + 0x2, 0x2, 0xb5b, 0xb5c, 0x7, 0x55, 0x2, 0x2, 0xb5c, 0xb5d, 0x7, 0x76, + 0x2, 0x2, 0xb5d, 0xb5e, 0x7, 0x74, 0x2, 0x2, 0xb5e, 0xb5f, 0x7, 0x67, + 0x2, 0x2, 0xb5f, 0xb60, 0x7, 0x63, 0x2, 0x2, 0xb60, 0xb61, 0x7, 0x6f, + 0x2, 0x2, 0xb61, 0x1a2, 0x3, 0x2, 0x2, 0x2, 0xb62, 0xb63, 0x7, 0x77, + 0x2, 0x2, 0xb63, 0xb64, 0x7, 0x70, 0x2, 0x2, 0xb64, 0xb65, 0x7, 0x6b, + 0x2, 0x2, 0xb65, 0xb66, 0x7, 0x68, 0x2, 0x2, 0xb66, 0xb67, 0x7, 0x71, + 0x2, 0x2, 0xb67, 0xb68, 0x7, 0x74, 0x2, 0x2, 0xb68, 0xb69, 0x7, 0x6f, + 0x2, 0x2, 0xb69, 0x1a4, 0x3, 0x2, 0x2, 0x2, 0xb6a, 0xb6b, 0x7, 0x77, + 0x2, 0x2, 0xb6b, 0xb6c, 0x7, 0x6b, 0x2, 0x2, 0xb6c, 0xb6d, 0x7, 0x70, + 0x2, 0x2, 0xb6d, 0xb6e, 0x7, 0x76, 0x2, 0x2, 0xb6e, 0x1a6, 0x3, 0x2, + 0x2, 0x2, 0xb6f, 0xb70, 0x7, 0x77, 0x2, 0x2, 0xb70, 0xb71, 0x7, 0x6b, + 0x2, 0x2, 0xb71, 0xb72, 0x7, 0x70, 0x2, 0x2, 0xb72, 0xb73, 0x7, 0x76, + 0x2, 0x2, 0xb73, 0xb74, 0x7, 0x33, 0x2, 0x2, 0xb74, 0x1a8, 0x3, 0x2, + 0x2, 0x2, 0xb75, 0xb76, 0x7, 0x77, 0x2, 0x2, 0xb76, 0xb77, 0x7, 0x6b, + 0x2, 0x2, 0xb77, 0xb78, 0x7, 0x70, 0x2, 0x2, 0xb78, 0xb79, 0x7, 0x76, + 0x2, 0x2, 0xb79, 0xb7a, 0x7, 0x34, 0x2, 0x2, 0xb7a, 0x1aa, 0x3, 0x2, + 0x2, 0x2, 0xb7b, 0xb7c, 0x7, 0x77, 0x2, 0x2, 0xb7c, 0xb7d, 0x7, 0x6b, + 0x2, 0x2, 0xb7d, 0xb7e, 0x7, 0x70, 0x2, 0x2, 0xb7e, 0xb7f, 0x7, 0x76, + 0x2, 0x2, 0xb7f, 0xb80, 0x7, 0x35, 0x2, 0x2, 0xb80, 0x1ac, 0x3, 0x2, + 0x2, 0x2, 0xb81, 0xb82, 0x7, 0x77, 0x2, 0x2, 0xb82, 0xb83, 0x7, 0x6b, + 0x2, 0x2, 0xb83, 0xb84, 0x7, 0x70, 0x2, 0x2, 0xb84, 0xb85, 0x7, 0x76, + 0x2, 0x2, 0xb85, 0xb86, 0x7, 0x36, 0x2, 0x2, 0xb86, 0x1ae, 0x3, 0x2, + 0x2, 0x2, 0xb87, 0xb88, 0x7, 0x77, 0x2, 0x2, 0xb88, 0xb89, 0x7, 0x6b, + 0x2, 0x2, 0xb89, 0xb8a, 0x7, 0x70, 0x2, 0x2, 0xb8a, 0xb8b, 0x7, 0x76, + 0x2, 0x2, 0xb8b, 0xb8c, 0x7, 0x33, 0x2, 0x2, 0xb8c, 0xb8d, 0x7, 0x7a, + 0x2, 0x2, 0xb8d, 0xb8e, 0x7, 0x33, 0x2, 0x2, 0xb8e, 0x1b0, 0x3, 0x2, + 0x2, 0x2, 0xb8f, 0xb90, 0x7, 0x77, 0x2, 0x2, 0xb90, 0xb91, 0x7, 0x6b, + 0x2, 0x2, 0xb91, 0xb92, 0x7, 0x70, 0x2, 0x2, 0xb92, 0xb93, 0x7, 0x76, + 0x2, 0x2, 0xb93, 0xb94, 0x7, 0x33, 0x2, 0x2, 0xb94, 0xb95, 0x7, 0x7a, + 0x2, 0x2, 0xb95, 0xb96, 0x7, 0x34, 0x2, 0x2, 0xb96, 0x1b2, 0x3, 0x2, + 0x2, 0x2, 0xb97, 0xb98, 0x7, 0x77, 0x2, 0x2, 0xb98, 0xb99, 0x7, 0x6b, + 0x2, 0x2, 0xb99, 0xb9a, 0x7, 0x70, 0x2, 0x2, 0xb9a, 0xb9b, 0x7, 0x76, + 0x2, 0x2, 0xb9b, 0xb9c, 0x7, 0x33, 0x2, 0x2, 0xb9c, 0xb9d, 0x7, 0x7a, + 0x2, 0x2, 0xb9d, 0xb9e, 0x7, 0x35, 0x2, 0x2, 0xb9e, 0x1b4, 0x3, 0x2, + 0x2, 0x2, 0xb9f, 0xba0, 0x7, 0x77, 0x2, 0x2, 0xba0, 0xba1, 0x7, 0x6b, + 0x2, 0x2, 0xba1, 0xba2, 0x7, 0x70, 0x2, 0x2, 0xba2, 0xba3, 0x7, 0x76, + 0x2, 0x2, 0xba3, 0xba4, 0x7, 0x33, 0x2, 0x2, 0xba4, 0xba5, 0x7, 0x7a, + 0x2, 0x2, 0xba5, 0xba6, 0x7, 0x36, 0x2, 0x2, 0xba6, 0x1b6, 0x3, 0x2, + 0x2, 0x2, 0xba7, 0xba8, 0x7, 0x77, 0x2, 0x2, 0xba8, 0xba9, 0x7, 0x6b, + 0x2, 0x2, 0xba9, 0xbaa, 0x7, 0x70, 0x2, 0x2, 0xbaa, 0xbab, 0x7, 0x76, + 0x2, 0x2, 0xbab, 0xbac, 0x7, 0x34, 0x2, 0x2, 0xbac, 0xbad, 0x7, 0x7a, + 0x2, 0x2, 0xbad, 0xbae, 0x7, 0x33, 0x2, 0x2, 0xbae, 0x1b8, 0x3, 0x2, + 0x2, 0x2, 0xbaf, 0xbb0, 0x7, 0x77, 0x2, 0x2, 0xbb0, 0xbb1, 0x7, 0x6b, + 0x2, 0x2, 0xbb1, 0xbb2, 0x7, 0x70, 0x2, 0x2, 0xbb2, 0xbb3, 0x7, 0x76, + 0x2, 0x2, 0xbb3, 0xbb4, 0x7, 0x34, 0x2, 0x2, 0xbb4, 0xbb5, 0x7, 0x7a, + 0x2, 0x2, 0xbb5, 0xbb6, 0x7, 0x34, 0x2, 0x2, 0xbb6, 0x1ba, 0x3, 0x2, + 0x2, 0x2, 0xbb7, 0xbb8, 0x7, 0x77, 0x2, 0x2, 0xbb8, 0xbb9, 0x7, 0x6b, + 0x2, 0x2, 0xbb9, 0xbba, 0x7, 0x70, 0x2, 0x2, 0xbba, 0xbbb, 0x7, 0x76, + 0x2, 0x2, 0xbbb, 0xbbc, 0x7, 0x34, 0x2, 0x2, 0xbbc, 0xbbd, 0x7, 0x7a, + 0x2, 0x2, 0xbbd, 0xbbe, 0x7, 0x35, 0x2, 0x2, 0xbbe, 0x1bc, 0x3, 0x2, + 0x2, 0x2, 0xbbf, 0xbc0, 0x7, 0x77, 0x2, 0x2, 0xbc0, 0xbc1, 0x7, 0x6b, + 0x2, 0x2, 0xbc1, 0xbc2, 0x7, 0x70, 0x2, 0x2, 0xbc2, 0xbc3, 0x7, 0x76, + 0x2, 0x2, 0xbc3, 0xbc4, 0x7, 0x34, 0x2, 0x2, 0xbc4, 0xbc5, 0x7, 0x7a, + 0x2, 0x2, 0xbc5, 0xbc6, 0x7, 0x36, 0x2, 0x2, 0xbc6, 0x1be, 0x3, 0x2, + 0x2, 0x2, 0xbc7, 0xbc8, 0x7, 0x77, 0x2, 0x2, 0xbc8, 0xbc9, 0x7, 0x6b, + 0x2, 0x2, 0xbc9, 0xbca, 0x7, 0x70, 0x2, 0x2, 0xbca, 0xbcb, 0x7, 0x76, + 0x2, 0x2, 0xbcb, 0xbcc, 0x7, 0x35, 0x2, 0x2, 0xbcc, 0xbcd, 0x7, 0x7a, + 0x2, 0x2, 0xbcd, 0xbce, 0x7, 0x33, 0x2, 0x2, 0xbce, 0x1c0, 0x3, 0x2, + 0x2, 0x2, 0xbcf, 0xbd0, 0x7, 0x77, 0x2, 0x2, 0xbd0, 0xbd1, 0x7, 0x6b, + 0x2, 0x2, 0xbd1, 0xbd2, 0x7, 0x70, 0x2, 0x2, 0xbd2, 0xbd3, 0x7, 0x76, + 0x2, 0x2, 0xbd3, 0xbd4, 0x7, 0x35, 0x2, 0x2, 0xbd4, 0xbd5, 0x7, 0x7a, + 0x2, 0x2, 0xbd5, 0xbd6, 0x7, 0x34, 0x2, 0x2, 0xbd6, 0x1c2, 0x3, 0x2, + 0x2, 0x2, 0xbd7, 0xbd8, 0x7, 0x77, 0x2, 0x2, 0xbd8, 0xbd9, 0x7, 0x6b, + 0x2, 0x2, 0xbd9, 0xbda, 0x7, 0x70, 0x2, 0x2, 0xbda, 0xbdb, 0x7, 0x76, + 0x2, 0x2, 0xbdb, 0xbdc, 0x7, 0x35, 0x2, 0x2, 0xbdc, 0xbdd, 0x7, 0x7a, + 0x2, 0x2, 0xbdd, 0xbde, 0x7, 0x35, 0x2, 0x2, 0xbde, 0x1c4, 0x3, 0x2, + 0x2, 0x2, 0xbdf, 0xbe0, 0x7, 0x77, 0x2, 0x2, 0xbe0, 0xbe1, 0x7, 0x6b, + 0x2, 0x2, 0xbe1, 0xbe2, 0x7, 0x70, 0x2, 0x2, 0xbe2, 0xbe3, 0x7, 0x76, + 0x2, 0x2, 0xbe3, 0xbe4, 0x7, 0x35, 0x2, 0x2, 0xbe4, 0xbe5, 0x7, 0x7a, + 0x2, 0x2, 0xbe5, 0xbe6, 0x7, 0x36, 0x2, 0x2, 0xbe6, 0x1c6, 0x3, 0x2, + 0x2, 0x2, 0xbe7, 0xbe8, 0x7, 0x77, 0x2, 0x2, 0xbe8, 0xbe9, 0x7, 0x6b, + 0x2, 0x2, 0xbe9, 0xbea, 0x7, 0x70, 0x2, 0x2, 0xbea, 0xbeb, 0x7, 0x76, + 0x2, 0x2, 0xbeb, 0xbec, 0x7, 0x36, 0x2, 0x2, 0xbec, 0xbed, 0x7, 0x7a, + 0x2, 0x2, 0xbed, 0xbee, 0x7, 0x33, 0x2, 0x2, 0xbee, 0x1c8, 0x3, 0x2, + 0x2, 0x2, 0xbef, 0xbf0, 0x7, 0x77, 0x2, 0x2, 0xbf0, 0xbf1, 0x7, 0x6b, + 0x2, 0x2, 0xbf1, 0xbf2, 0x7, 0x70, 0x2, 0x2, 0xbf2, 0xbf3, 0x7, 0x76, + 0x2, 0x2, 0xbf3, 0xbf4, 0x7, 0x36, 0x2, 0x2, 0xbf4, 0xbf5, 0x7, 0x7a, + 0x2, 0x2, 0xbf5, 0xbf6, 0x7, 0x34, 0x2, 0x2, 0xbf6, 0x1ca, 0x3, 0x2, + 0x2, 0x2, 0xbf7, 0xbf8, 0x7, 0x77, 0x2, 0x2, 0xbf8, 0xbf9, 0x7, 0x6b, + 0x2, 0x2, 0xbf9, 0xbfa, 0x7, 0x70, 0x2, 0x2, 0xbfa, 0xbfb, 0x7, 0x76, + 0x2, 0x2, 0xbfb, 0xbfc, 0x7, 0x36, 0x2, 0x2, 0xbfc, 0xbfd, 0x7, 0x7a, + 0x2, 0x2, 0xbfd, 0xbfe, 0x7, 0x35, 0x2, 0x2, 0xbfe, 0x1cc, 0x3, 0x2, + 0x2, 0x2, 0xbff, 0xc00, 0x7, 0x77, 0x2, 0x2, 0xc00, 0xc01, 0x7, 0x6b, + 0x2, 0x2, 0xc01, 0xc02, 0x7, 0x70, 0x2, 0x2, 0xc02, 0xc03, 0x7, 0x76, + 0x2, 0x2, 0xc03, 0xc04, 0x7, 0x36, 0x2, 0x2, 0xc04, 0xc05, 0x7, 0x7a, + 0x2, 0x2, 0xc05, 0xc06, 0x7, 0x36, 0x2, 0x2, 0xc06, 0x1ce, 0x3, 0x2, + 0x2, 0x2, 0xc07, 0xc08, 0x7, 0x77, 0x2, 0x2, 0xc08, 0xc09, 0x7, 0x6b, + 0x2, 0x2, 0xc09, 0xc0a, 0x7, 0x70, 0x2, 0x2, 0xc0a, 0xc0b, 0x7, 0x76, + 0x2, 0x2, 0xc0b, 0xc0c, 0x7, 0x33, 0x2, 0x2, 0xc0c, 0xc0d, 0x7, 0x38, + 0x2, 0x2, 0xc0d, 0xc0e, 0x7, 0x61, 0x2, 0x2, 0xc0e, 0xc0f, 0x7, 0x76, + 0x2, 0x2, 0xc0f, 0x1d0, 0x3, 0x2, 0x2, 0x2, 0xc10, 0xc11, 0x7, 0x77, + 0x2, 0x2, 0xc11, 0xc12, 0x7, 0x6b, 0x2, 0x2, 0xc12, 0xc13, 0x7, 0x70, + 0x2, 0x2, 0xc13, 0xc14, 0x7, 0x76, 0x2, 0x2, 0xc14, 0xc15, 0x7, 0x35, + 0x2, 0x2, 0xc15, 0xc16, 0x7, 0x34, 0x2, 0x2, 0xc16, 0xc17, 0x7, 0x61, + 0x2, 0x2, 0xc17, 0xc18, 0x7, 0x76, 0x2, 0x2, 0xc18, 0x1d2, 0x3, 0x2, + 0x2, 0x2, 0xc19, 0xc1a, 0x7, 0x77, 0x2, 0x2, 0xc1a, 0xc1b, 0x7, 0x6b, + 0x2, 0x2, 0xc1b, 0xc1c, 0x7, 0x70, 0x2, 0x2, 0xc1c, 0xc1d, 0x7, 0x76, + 0x2, 0x2, 0xc1d, 0xc1e, 0x7, 0x38, 0x2, 0x2, 0xc1e, 0xc1f, 0x7, 0x36, + 0x2, 0x2, 0xc1f, 0xc20, 0x7, 0x61, 0x2, 0x2, 0xc20, 0xc21, 0x7, 0x76, + 0x2, 0x2, 0xc21, 0x1d4, 0x3, 0x2, 0x2, 0x2, 0xc22, 0xc23, 0x7, 0x77, + 0x2, 0x2, 0xc23, 0xc24, 0x7, 0x70, 0x2, 0x2, 0xc24, 0xc25, 0x7, 0x71, + 0x2, 0x2, 0xc25, 0xc26, 0x7, 0x74, 0x2, 0x2, 0xc26, 0xc27, 0x7, 0x6f, + 0x2, 0x2, 0xc27, 0x1d6, 0x3, 0x2, 0x2, 0x2, 0xc28, 0xc29, 0x7, 0x77, + 0x2, 0x2, 0xc29, 0xc2a, 0x7, 0x70, 0x2, 0x2, 0xc2a, 0xc2b, 0x7, 0x75, + 0x2, 0x2, 0xc2b, 0xc2c, 0x7, 0x6b, 0x2, 0x2, 0xc2c, 0xc2d, 0x7, 0x69, + 0x2, 0x2, 0xc2d, 0xc2e, 0x7, 0x70, 0x2, 0x2, 0xc2e, 0xc2f, 0x7, 0x67, + 0x2, 0x2, 0xc2f, 0xc30, 0x7, 0x66, 0x2, 0x2, 0xc30, 0x1d8, 0x3, 0x2, + 0x2, 0x2, 0xc31, 0xc32, 0x7, 0x66, 0x2, 0x2, 0xc32, 0xc33, 0x7, 0x79, + 0x2, 0x2, 0xc33, 0xc34, 0x7, 0x71, 0x2, 0x2, 0xc34, 0xc35, 0x7, 0x74, + 0x2, 0x2, 0xc35, 0xc36, 0x7, 0x66, 0x2, 0x2, 0xc36, 0x1da, 0x3, 0x2, + 0x2, 0x2, 0xc37, 0xc38, 0x7, 0x66, 0x2, 0x2, 0xc38, 0xc39, 0x7, 0x79, + 0x2, 0x2, 0xc39, 0xc3a, 0x7, 0x71, 0x2, 0x2, 0xc3a, 0xc3b, 0x7, 0x74, + 0x2, 0x2, 0xc3b, 0xc3c, 0x7, 0x66, 0x2, 0x2, 0xc3c, 0xc3d, 0x7, 0x33, + 0x2, 0x2, 0xc3d, 0x1dc, 0x3, 0x2, 0x2, 0x2, 0xc3e, 0xc3f, 0x7, 0x66, + 0x2, 0x2, 0xc3f, 0xc40, 0x7, 0x79, 0x2, 0x2, 0xc40, 0xc41, 0x7, 0x71, + 0x2, 0x2, 0xc41, 0xc42, 0x7, 0x74, 0x2, 0x2, 0xc42, 0xc43, 0x7, 0x66, + 0x2, 0x2, 0xc43, 0xc44, 0x7, 0x34, 0x2, 0x2, 0xc44, 0x1de, 0x3, 0x2, + 0x2, 0x2, 0xc45, 0xc46, 0x7, 0x66, 0x2, 0x2, 0xc46, 0xc47, 0x7, 0x79, + 0x2, 0x2, 0xc47, 0xc48, 0x7, 0x71, 0x2, 0x2, 0xc48, 0xc49, 0x7, 0x74, + 0x2, 0x2, 0xc49, 0xc4a, 0x7, 0x66, 0x2, 0x2, 0xc4a, 0xc4b, 0x7, 0x35, + 0x2, 0x2, 0xc4b, 0x1e0, 0x3, 0x2, 0x2, 0x2, 0xc4c, 0xc4d, 0x7, 0x66, + 0x2, 0x2, 0xc4d, 0xc4e, 0x7, 0x79, 0x2, 0x2, 0xc4e, 0xc4f, 0x7, 0x71, + 0x2, 0x2, 0xc4f, 0xc50, 0x7, 0x74, 0x2, 0x2, 0xc50, 0xc51, 0x7, 0x66, + 0x2, 0x2, 0xc51, 0xc52, 0x7, 0x36, 0x2, 0x2, 0xc52, 0x1e2, 0x3, 0x2, + 0x2, 0x2, 0xc53, 0xc54, 0x7, 0x66, 0x2, 0x2, 0xc54, 0xc55, 0x7, 0x79, + 0x2, 0x2, 0xc55, 0xc56, 0x7, 0x71, 0x2, 0x2, 0xc56, 0xc57, 0x7, 0x74, + 0x2, 0x2, 0xc57, 0xc58, 0x7, 0x66, 0x2, 0x2, 0xc58, 0xc59, 0x7, 0x33, + 0x2, 0x2, 0xc59, 0xc5a, 0x7, 0x7a, 0x2, 0x2, 0xc5a, 0xc5b, 0x7, 0x33, + 0x2, 0x2, 0xc5b, 0x1e4, 0x3, 0x2, 0x2, 0x2, 0xc5c, 0xc5d, 0x7, 0x66, + 0x2, 0x2, 0xc5d, 0xc5e, 0x7, 0x79, 0x2, 0x2, 0xc5e, 0xc5f, 0x7, 0x71, + 0x2, 0x2, 0xc5f, 0xc60, 0x7, 0x74, 0x2, 0x2, 0xc60, 0xc61, 0x7, 0x66, + 0x2, 0x2, 0xc61, 0xc62, 0x7, 0x33, 0x2, 0x2, 0xc62, 0xc63, 0x7, 0x7a, + 0x2, 0x2, 0xc63, 0xc64, 0x7, 0x34, 0x2, 0x2, 0xc64, 0x1e6, 0x3, 0x2, + 0x2, 0x2, 0xc65, 0xc66, 0x7, 0x66, 0x2, 0x2, 0xc66, 0xc67, 0x7, 0x79, + 0x2, 0x2, 0xc67, 0xc68, 0x7, 0x71, 0x2, 0x2, 0xc68, 0xc69, 0x7, 0x74, + 0x2, 0x2, 0xc69, 0xc6a, 0x7, 0x66, 0x2, 0x2, 0xc6a, 0xc6b, 0x7, 0x33, + 0x2, 0x2, 0xc6b, 0xc6c, 0x7, 0x7a, 0x2, 0x2, 0xc6c, 0xc6d, 0x7, 0x35, + 0x2, 0x2, 0xc6d, 0x1e8, 0x3, 0x2, 0x2, 0x2, 0xc6e, 0xc6f, 0x7, 0x66, + 0x2, 0x2, 0xc6f, 0xc70, 0x7, 0x79, 0x2, 0x2, 0xc70, 0xc71, 0x7, 0x71, + 0x2, 0x2, 0xc71, 0xc72, 0x7, 0x74, 0x2, 0x2, 0xc72, 0xc73, 0x7, 0x66, + 0x2, 0x2, 0xc73, 0xc74, 0x7, 0x33, 0x2, 0x2, 0xc74, 0xc75, 0x7, 0x7a, + 0x2, 0x2, 0xc75, 0xc76, 0x7, 0x36, 0x2, 0x2, 0xc76, 0x1ea, 0x3, 0x2, + 0x2, 0x2, 0xc77, 0xc78, 0x7, 0x66, 0x2, 0x2, 0xc78, 0xc79, 0x7, 0x79, + 0x2, 0x2, 0xc79, 0xc7a, 0x7, 0x71, 0x2, 0x2, 0xc7a, 0xc7b, 0x7, 0x74, + 0x2, 0x2, 0xc7b, 0xc7c, 0x7, 0x66, 0x2, 0x2, 0xc7c, 0xc7d, 0x7, 0x34, + 0x2, 0x2, 0xc7d, 0xc7e, 0x7, 0x7a, 0x2, 0x2, 0xc7e, 0xc7f, 0x7, 0x33, + 0x2, 0x2, 0xc7f, 0x1ec, 0x3, 0x2, 0x2, 0x2, 0xc80, 0xc81, 0x7, 0x66, + 0x2, 0x2, 0xc81, 0xc82, 0x7, 0x79, 0x2, 0x2, 0xc82, 0xc83, 0x7, 0x71, + 0x2, 0x2, 0xc83, 0xc84, 0x7, 0x74, 0x2, 0x2, 0xc84, 0xc85, 0x7, 0x66, + 0x2, 0x2, 0xc85, 0xc86, 0x7, 0x34, 0x2, 0x2, 0xc86, 0xc87, 0x7, 0x7a, + 0x2, 0x2, 0xc87, 0xc88, 0x7, 0x34, 0x2, 0x2, 0xc88, 0x1ee, 0x3, 0x2, + 0x2, 0x2, 0xc89, 0xc8a, 0x7, 0x66, 0x2, 0x2, 0xc8a, 0xc8b, 0x7, 0x79, + 0x2, 0x2, 0xc8b, 0xc8c, 0x7, 0x71, 0x2, 0x2, 0xc8c, 0xc8d, 0x7, 0x74, + 0x2, 0x2, 0xc8d, 0xc8e, 0x7, 0x66, 0x2, 0x2, 0xc8e, 0xc8f, 0x7, 0x34, + 0x2, 0x2, 0xc8f, 0xc90, 0x7, 0x7a, 0x2, 0x2, 0xc90, 0xc91, 0x7, 0x35, + 0x2, 0x2, 0xc91, 0x1f0, 0x3, 0x2, 0x2, 0x2, 0xc92, 0xc93, 0x7, 0x66, + 0x2, 0x2, 0xc93, 0xc94, 0x7, 0x79, 0x2, 0x2, 0xc94, 0xc95, 0x7, 0x71, + 0x2, 0x2, 0xc95, 0xc96, 0x7, 0x74, 0x2, 0x2, 0xc96, 0xc97, 0x7, 0x66, + 0x2, 0x2, 0xc97, 0xc98, 0x7, 0x34, 0x2, 0x2, 0xc98, 0xc99, 0x7, 0x7a, + 0x2, 0x2, 0xc99, 0xc9a, 0x7, 0x36, 0x2, 0x2, 0xc9a, 0x1f2, 0x3, 0x2, + 0x2, 0x2, 0xc9b, 0xc9c, 0x7, 0x66, 0x2, 0x2, 0xc9c, 0xc9d, 0x7, 0x79, + 0x2, 0x2, 0xc9d, 0xc9e, 0x7, 0x71, 0x2, 0x2, 0xc9e, 0xc9f, 0x7, 0x74, + 0x2, 0x2, 0xc9f, 0xca0, 0x7, 0x66, 0x2, 0x2, 0xca0, 0xca1, 0x7, 0x35, + 0x2, 0x2, 0xca1, 0xca2, 0x7, 0x7a, 0x2, 0x2, 0xca2, 0xca3, 0x7, 0x33, + 0x2, 0x2, 0xca3, 0x1f4, 0x3, 0x2, 0x2, 0x2, 0xca4, 0xca5, 0x7, 0x66, + 0x2, 0x2, 0xca5, 0xca6, 0x7, 0x79, 0x2, 0x2, 0xca6, 0xca7, 0x7, 0x71, + 0x2, 0x2, 0xca7, 0xca8, 0x7, 0x74, 0x2, 0x2, 0xca8, 0xca9, 0x7, 0x66, + 0x2, 0x2, 0xca9, 0xcaa, 0x7, 0x35, 0x2, 0x2, 0xcaa, 0xcab, 0x7, 0x7a, + 0x2, 0x2, 0xcab, 0xcac, 0x7, 0x34, 0x2, 0x2, 0xcac, 0x1f6, 0x3, 0x2, + 0x2, 0x2, 0xcad, 0xcae, 0x7, 0x66, 0x2, 0x2, 0xcae, 0xcaf, 0x7, 0x79, + 0x2, 0x2, 0xcaf, 0xcb0, 0x7, 0x71, 0x2, 0x2, 0xcb0, 0xcb1, 0x7, 0x74, + 0x2, 0x2, 0xcb1, 0xcb2, 0x7, 0x66, 0x2, 0x2, 0xcb2, 0xcb3, 0x7, 0x35, + 0x2, 0x2, 0xcb3, 0xcb4, 0x7, 0x7a, 0x2, 0x2, 0xcb4, 0xcb5, 0x7, 0x35, + 0x2, 0x2, 0xcb5, 0x1f8, 0x3, 0x2, 0x2, 0x2, 0xcb6, 0xcb7, 0x7, 0x66, + 0x2, 0x2, 0xcb7, 0xcb8, 0x7, 0x79, 0x2, 0x2, 0xcb8, 0xcb9, 0x7, 0x71, + 0x2, 0x2, 0xcb9, 0xcba, 0x7, 0x74, 0x2, 0x2, 0xcba, 0xcbb, 0x7, 0x66, + 0x2, 0x2, 0xcbb, 0xcbc, 0x7, 0x35, 0x2, 0x2, 0xcbc, 0xcbd, 0x7, 0x7a, + 0x2, 0x2, 0xcbd, 0xcbe, 0x7, 0x36, 0x2, 0x2, 0xcbe, 0x1fa, 0x3, 0x2, + 0x2, 0x2, 0xcbf, 0xcc0, 0x7, 0x66, 0x2, 0x2, 0xcc0, 0xcc1, 0x7, 0x79, + 0x2, 0x2, 0xcc1, 0xcc2, 0x7, 0x71, 0x2, 0x2, 0xcc2, 0xcc3, 0x7, 0x74, + 0x2, 0x2, 0xcc3, 0xcc4, 0x7, 0x66, 0x2, 0x2, 0xcc4, 0xcc5, 0x7, 0x36, + 0x2, 0x2, 0xcc5, 0xcc6, 0x7, 0x7a, 0x2, 0x2, 0xcc6, 0xcc7, 0x7, 0x33, + 0x2, 0x2, 0xcc7, 0x1fc, 0x3, 0x2, 0x2, 0x2, 0xcc8, 0xcc9, 0x7, 0x66, + 0x2, 0x2, 0xcc9, 0xcca, 0x7, 0x79, 0x2, 0x2, 0xcca, 0xccb, 0x7, 0x71, + 0x2, 0x2, 0xccb, 0xccc, 0x7, 0x74, 0x2, 0x2, 0xccc, 0xccd, 0x7, 0x66, + 0x2, 0x2, 0xccd, 0xcce, 0x7, 0x36, 0x2, 0x2, 0xcce, 0xccf, 0x7, 0x7a, + 0x2, 0x2, 0xccf, 0xcd0, 0x7, 0x34, 0x2, 0x2, 0xcd0, 0x1fe, 0x3, 0x2, + 0x2, 0x2, 0xcd1, 0xcd2, 0x7, 0x66, 0x2, 0x2, 0xcd2, 0xcd3, 0x7, 0x79, + 0x2, 0x2, 0xcd3, 0xcd4, 0x7, 0x71, 0x2, 0x2, 0xcd4, 0xcd5, 0x7, 0x74, + 0x2, 0x2, 0xcd5, 0xcd6, 0x7, 0x66, 0x2, 0x2, 0xcd6, 0xcd7, 0x7, 0x36, + 0x2, 0x2, 0xcd7, 0xcd8, 0x7, 0x7a, 0x2, 0x2, 0xcd8, 0xcd9, 0x7, 0x35, + 0x2, 0x2, 0xcd9, 0x200, 0x3, 0x2, 0x2, 0x2, 0xcda, 0xcdb, 0x7, 0x66, + 0x2, 0x2, 0xcdb, 0xcdc, 0x7, 0x79, 0x2, 0x2, 0xcdc, 0xcdd, 0x7, 0x71, + 0x2, 0x2, 0xcdd, 0xcde, 0x7, 0x74, 0x2, 0x2, 0xcde, 0xcdf, 0x7, 0x66, + 0x2, 0x2, 0xcdf, 0xce0, 0x7, 0x36, 0x2, 0x2, 0xce0, 0xce1, 0x7, 0x7a, + 0x2, 0x2, 0xce1, 0xce2, 0x7, 0x36, 0x2, 0x2, 0xce2, 0x202, 0x3, 0x2, + 0x2, 0x2, 0xce3, 0xce4, 0x7, 0x78, 0x2, 0x2, 0xce4, 0xce5, 0x7, 0x67, + 0x2, 0x2, 0xce5, 0xce6, 0x7, 0x65, 0x2, 0x2, 0xce6, 0xce7, 0x7, 0x76, + 0x2, 0x2, 0xce7, 0xce8, 0x7, 0x71, 0x2, 0x2, 0xce8, 0xce9, 0x7, 0x74, + 0x2, 0x2, 0xce9, 0x204, 0x3, 0x2, 0x2, 0x2, 0xcea, 0xceb, 0x7, 0x78, + 0x2, 0x2, 0xceb, 0xcec, 0x7, 0x71, 0x2, 0x2, 0xcec, 0xced, 0x7, 0x6e, + 0x2, 0x2, 0xced, 0xcee, 0x7, 0x63, 0x2, 0x2, 0xcee, 0xcef, 0x7, 0x76, + 0x2, 0x2, 0xcef, 0xcf0, 0x7, 0x6b, 0x2, 0x2, 0xcf0, 0xcf1, 0x7, 0x6e, + 0x2, 0x2, 0xcf1, 0xcf2, 0x7, 0x67, 0x2, 0x2, 0xcf2, 0x206, 0x3, 0x2, + 0x2, 0x2, 0xcf3, 0xcf4, 0x7, 0x78, 0x2, 0x2, 0xcf4, 0xcf5, 0x7, 0x71, + 0x2, 0x2, 0xcf5, 0xcf6, 0x7, 0x6b, 0x2, 0x2, 0xcf6, 0xcf7, 0x7, 0x66, + 0x2, 0x2, 0xcf7, 0x208, 0x3, 0x2, 0x2, 0x2, 0xcf8, 0xcf9, 0x7, 0x79, + 0x2, 0x2, 0xcf9, 0xcfa, 0x7, 0x6a, 0x2, 0x2, 0xcfa, 0xcfb, 0x7, 0x6b, + 0x2, 0x2, 0xcfb, 0xcfc, 0x7, 0x6e, 0x2, 0x2, 0xcfc, 0xcfd, 0x7, 0x67, + 0x2, 0x2, 0xcfd, 0x20a, 0x3, 0x2, 0x2, 0x2, 0xcfe, 0xcff, 0x7, 0x55, + 0x2, 0x2, 0xcff, 0xd00, 0x7, 0x76, 0x2, 0x2, 0xd00, 0xd01, 0x7, 0x63, + 0x2, 0x2, 0xd01, 0xd02, 0x7, 0x76, 0x2, 0x2, 0xd02, 0xd03, 0x7, 0x67, + 0x2, 0x2, 0xd03, 0xd04, 0x7, 0x51, 0x2, 0x2, 0xd04, 0xd05, 0x7, 0x64, + 0x2, 0x2, 0xd05, 0xd06, 0x7, 0x6c, 0x2, 0x2, 0xd06, 0xd07, 0x7, 0x67, + 0x2, 0x2, 0xd07, 0xd08, 0x7, 0x65, 0x2, 0x2, 0xd08, 0xd09, 0x7, 0x76, + 0x2, 0x2, 0xd09, 0xd0a, 0x7, 0x45, 0x2, 0x2, 0xd0a, 0xd0b, 0x7, 0x71, + 0x2, 0x2, 0xd0b, 0xd0c, 0x7, 0x70, 0x2, 0x2, 0xd0c, 0xd0d, 0x7, 0x68, + 0x2, 0x2, 0xd0d, 0xd0e, 0x7, 0x6b, 0x2, 0x2, 0xd0e, 0xd0f, 0x7, 0x69, + 0x2, 0x2, 0xd0f, 0x20c, 0x3, 0x2, 0x2, 0x2, 0xd10, 0xd11, 0x7, 0x4e, + 0x2, 0x2, 0xd11, 0xd12, 0x7, 0x71, 0x2, 0x2, 0xd12, 0xd13, 0x7, 0x65, + 0x2, 0x2, 0xd13, 0xd14, 0x7, 0x63, 0x2, 0x2, 0xd14, 0xd15, 0x7, 0x6e, + 0x2, 0x2, 0xd15, 0xd16, 0x7, 0x54, 0x2, 0x2, 0xd16, 0xd17, 0x7, 0x71, + 0x2, 0x2, 0xd17, 0xd18, 0x7, 0x71, 0x2, 0x2, 0xd18, 0xd19, 0x7, 0x76, + 0x2, 0x2, 0xd19, 0xd1a, 0x7, 0x55, 0x2, 0x2, 0xd1a, 0xd1b, 0x7, 0x6b, + 0x2, 0x2, 0xd1b, 0xd1c, 0x7, 0x69, 0x2, 0x2, 0xd1c, 0xd1d, 0x7, 0x70, + 0x2, 0x2, 0xd1d, 0xd1e, 0x7, 0x63, 0x2, 0x2, 0xd1e, 0xd1f, 0x7, 0x76, + 0x2, 0x2, 0xd1f, 0xd20, 0x7, 0x77, 0x2, 0x2, 0xd20, 0xd21, 0x7, 0x74, + 0x2, 0x2, 0xd21, 0xd22, 0x7, 0x67, 0x2, 0x2, 0xd22, 0x20e, 0x3, 0x2, + 0x2, 0x2, 0xd23, 0xd24, 0x7, 0x49, 0x2, 0x2, 0xd24, 0xd25, 0x7, 0x6e, + 0x2, 0x2, 0xd25, 0xd26, 0x7, 0x71, 0x2, 0x2, 0xd26, 0xd27, 0x7, 0x64, + 0x2, 0x2, 0xd27, 0xd28, 0x7, 0x63, 0x2, 0x2, 0xd28, 0xd29, 0x7, 0x6e, + 0x2, 0x2, 0xd29, 0xd2a, 0x7, 0x54, 0x2, 0x2, 0xd2a, 0xd2b, 0x7, 0x71, + 0x2, 0x2, 0xd2b, 0xd2c, 0x7, 0x71, 0x2, 0x2, 0xd2c, 0xd2d, 0x7, 0x76, + 0x2, 0x2, 0xd2d, 0xd2e, 0x7, 0x55, 0x2, 0x2, 0xd2e, 0xd2f, 0x7, 0x6b, + 0x2, 0x2, 0xd2f, 0xd30, 0x7, 0x69, 0x2, 0x2, 0xd30, 0xd31, 0x7, 0x70, + 0x2, 0x2, 0xd31, 0xd32, 0x7, 0x63, 0x2, 0x2, 0xd32, 0xd33, 0x7, 0x76, + 0x2, 0x2, 0xd33, 0xd34, 0x7, 0x77, 0x2, 0x2, 0xd34, 0xd35, 0x7, 0x74, + 0x2, 0x2, 0xd35, 0xd36, 0x7, 0x67, 0x2, 0x2, 0xd36, 0x210, 0x3, 0x2, + 0x2, 0x2, 0xd37, 0xd38, 0x7, 0x55, 0x2, 0x2, 0xd38, 0xd39, 0x7, 0x77, + 0x2, 0x2, 0xd39, 0xd3a, 0x7, 0x64, 0x2, 0x2, 0xd3a, 0xd3b, 0x7, 0x71, + 0x2, 0x2, 0xd3b, 0xd3c, 0x7, 0x64, 0x2, 0x2, 0xd3c, 0xd3d, 0x7, 0x6c, + 0x2, 0x2, 0xd3d, 0xd3e, 0x7, 0x67, 0x2, 0x2, 0xd3e, 0xd3f, 0x7, 0x65, + 0x2, 0x2, 0xd3f, 0xd40, 0x7, 0x76, 0x2, 0x2, 0xd40, 0xd41, 0x7, 0x56, + 0x2, 0x2, 0xd41, 0xd42, 0x7, 0x71, 0x2, 0x2, 0xd42, 0xd43, 0x7, 0x47, + 0x2, 0x2, 0xd43, 0xd44, 0x7, 0x7a, 0x2, 0x2, 0xd44, 0xd45, 0x7, 0x72, + 0x2, 0x2, 0xd45, 0xd46, 0x7, 0x71, 0x2, 0x2, 0xd46, 0xd47, 0x7, 0x74, + 0x2, 0x2, 0xd47, 0xd48, 0x7, 0x76, 0x2, 0x2, 0xd48, 0xd49, 0x7, 0x75, + 0x2, 0x2, 0xd49, 0xd4a, 0x7, 0x43, 0x2, 0x2, 0xd4a, 0xd4b, 0x7, 0x75, + 0x2, 0x2, 0xd4b, 0xd4c, 0x7, 0x75, 0x2, 0x2, 0xd4c, 0xd4d, 0x7, 0x71, + 0x2, 0x2, 0xd4d, 0xd4e, 0x7, 0x65, 0x2, 0x2, 0xd4e, 0xd4f, 0x7, 0x6b, + 0x2, 0x2, 0xd4f, 0xd50, 0x7, 0x63, 0x2, 0x2, 0xd50, 0xd51, 0x7, 0x76, + 0x2, 0x2, 0xd51, 0xd52, 0x7, 0x6b, 0x2, 0x2, 0xd52, 0xd53, 0x7, 0x71, + 0x2, 0x2, 0xd53, 0xd54, 0x7, 0x70, 0x2, 0x2, 0xd54, 0x212, 0x3, 0x2, + 0x2, 0x2, 0xd55, 0xd56, 0x7, 0x54, 0x2, 0x2, 0xd56, 0xd57, 0x7, 0x63, + 0x2, 0x2, 0xd57, 0xd58, 0x7, 0x7b, 0x2, 0x2, 0xd58, 0xd59, 0x7, 0x76, + 0x2, 0x2, 0xd59, 0xd5a, 0x7, 0x74, 0x2, 0x2, 0xd5a, 0xd5b, 0x7, 0x63, + 0x2, 0x2, 0xd5b, 0xd5c, 0x7, 0x65, 0x2, 0x2, 0xd5c, 0xd5d, 0x7, 0x6b, + 0x2, 0x2, 0xd5d, 0xd5e, 0x7, 0x70, 0x2, 0x2, 0xd5e, 0xd5f, 0x7, 0x69, + 0x2, 0x2, 0xd5f, 0xd60, 0x7, 0x55, 0x2, 0x2, 0xd60, 0xd61, 0x7, 0x6a, + 0x2, 0x2, 0xd61, 0xd62, 0x7, 0x63, 0x2, 0x2, 0xd62, 0xd63, 0x7, 0x66, + 0x2, 0x2, 0xd63, 0xd64, 0x7, 0x67, 0x2, 0x2, 0xd64, 0xd65, 0x7, 0x74, + 0x2, 0x2, 0xd65, 0xd66, 0x7, 0x45, 0x2, 0x2, 0xd66, 0xd67, 0x7, 0x71, + 0x2, 0x2, 0xd67, 0xd68, 0x7, 0x70, 0x2, 0x2, 0xd68, 0xd69, 0x7, 0x68, + 0x2, 0x2, 0xd69, 0xd6a, 0x7, 0x6b, 0x2, 0x2, 0xd6a, 0xd6b, 0x7, 0x69, + 0x2, 0x2, 0xd6b, 0x214, 0x3, 0x2, 0x2, 0x2, 0xd6c, 0xd6d, 0x7, 0x54, + 0x2, 0x2, 0xd6d, 0xd6e, 0x7, 0x63, 0x2, 0x2, 0xd6e, 0xd6f, 0x7, 0x7b, + 0x2, 0x2, 0xd6f, 0xd70, 0x7, 0x76, 0x2, 0x2, 0xd70, 0xd71, 0x7, 0x74, + 0x2, 0x2, 0xd71, 0xd72, 0x7, 0x63, 0x2, 0x2, 0xd72, 0xd73, 0x7, 0x65, + 0x2, 0x2, 0xd73, 0xd74, 0x7, 0x6b, 0x2, 0x2, 0xd74, 0xd75, 0x7, 0x70, + 0x2, 0x2, 0xd75, 0xd76, 0x7, 0x69, 0x2, 0x2, 0xd76, 0xd77, 0x7, 0x52, + 0x2, 0x2, 0xd77, 0xd78, 0x7, 0x6b, 0x2, 0x2, 0xd78, 0xd79, 0x7, 0x72, + 0x2, 0x2, 0xd79, 0xd7a, 0x7, 0x67, 0x2, 0x2, 0xd7a, 0xd7b, 0x7, 0x6e, + 0x2, 0x2, 0xd7b, 0xd7c, 0x7, 0x6b, 0x2, 0x2, 0xd7c, 0xd7d, 0x7, 0x70, + 0x2, 0x2, 0xd7d, 0xd7e, 0x7, 0x67, 0x2, 0x2, 0xd7e, 0xd7f, 0x7, 0x45, + 0x2, 0x2, 0xd7f, 0xd80, 0x7, 0x71, 0x2, 0x2, 0xd80, 0xd81, 0x7, 0x70, + 0x2, 0x2, 0xd81, 0xd82, 0x7, 0x68, 0x2, 0x2, 0xd82, 0xd83, 0x7, 0x6b, + 0x2, 0x2, 0xd83, 0xd84, 0x7, 0x69, 0x2, 0x2, 0xd84, 0x216, 0x3, 0x2, + 0x2, 0x2, 0xd85, 0xd86, 0x7, 0x54, 0x2, 0x2, 0xd86, 0xd87, 0x7, 0x63, + 0x2, 0x2, 0xd87, 0xd88, 0x7, 0x7b, 0x2, 0x2, 0xd88, 0xd89, 0x7, 0x76, + 0x2, 0x2, 0xd89, 0xd8a, 0x7, 0x74, 0x2, 0x2, 0xd8a, 0xd8b, 0x7, 0x63, + 0x2, 0x2, 0xd8b, 0xd8c, 0x7, 0x65, 0x2, 0x2, 0xd8c, 0xd8d, 0x7, 0x6b, + 0x2, 0x2, 0xd8d, 0xd8e, 0x7, 0x70, 0x2, 0x2, 0xd8e, 0xd8f, 0x7, 0x69, + 0x2, 0x2, 0xd8f, 0xd90, 0x7, 0x52, 0x2, 0x2, 0xd90, 0xd91, 0x7, 0x6b, + 0x2, 0x2, 0xd91, 0xd92, 0x7, 0x72, 0x2, 0x2, 0xd92, 0xd93, 0x7, 0x67, + 0x2, 0x2, 0xd93, 0xd94, 0x7, 0x6e, 0x2, 0x2, 0xd94, 0xd95, 0x7, 0x6b, + 0x2, 0x2, 0xd95, 0xd96, 0x7, 0x70, 0x2, 0x2, 0xd96, 0xd97, 0x7, 0x67, + 0x2, 0x2, 0xd97, 0xd98, 0x7, 0x45, 0x2, 0x2, 0xd98, 0xd99, 0x7, 0x71, + 0x2, 0x2, 0xd99, 0xd9a, 0x7, 0x70, 0x2, 0x2, 0xd9a, 0xd9b, 0x7, 0x68, + 0x2, 0x2, 0xd9b, 0xd9c, 0x7, 0x6b, 0x2, 0x2, 0xd9c, 0xd9d, 0x7, 0x69, + 0x2, 0x2, 0xd9d, 0xd9e, 0x7, 0x33, 0x2, 0x2, 0xd9e, 0x218, 0x3, 0x2, + 0x2, 0x2, 0xd9f, 0xda0, 0x7, 0x56, 0x2, 0x2, 0xda0, 0xda1, 0x7, 0x74, + 0x2, 0x2, 0xda1, 0xda2, 0x7, 0x6b, 0x2, 0x2, 0xda2, 0xda3, 0x7, 0x63, + 0x2, 0x2, 0xda3, 0xda4, 0x7, 0x70, 0x2, 0x2, 0xda4, 0xda5, 0x7, 0x69, + 0x2, 0x2, 0xda5, 0xda6, 0x7, 0x6e, 0x2, 0x2, 0xda6, 0xda7, 0x7, 0x67, + 0x2, 0x2, 0xda7, 0xda8, 0x7, 0x4a, 0x2, 0x2, 0xda8, 0xda9, 0x7, 0x6b, + 0x2, 0x2, 0xda9, 0xdaa, 0x7, 0x76, 0x2, 0x2, 0xdaa, 0xdab, 0x7, 0x49, + 0x2, 0x2, 0xdab, 0xdac, 0x7, 0x74, 0x2, 0x2, 0xdac, 0xdad, 0x7, 0x71, + 0x2, 0x2, 0xdad, 0xdae, 0x7, 0x77, 0x2, 0x2, 0xdae, 0xdaf, 0x7, 0x72, + 0x2, 0x2, 0xdaf, 0x21a, 0x3, 0x2, 0x2, 0x2, 0xdb0, 0xdb1, 0x7, 0x52, + 0x2, 0x2, 0xdb1, 0xdb2, 0x7, 0x74, 0x2, 0x2, 0xdb2, 0xdb3, 0x7, 0x71, + 0x2, 0x2, 0xdb3, 0xdb4, 0x7, 0x65, 0x2, 0x2, 0xdb4, 0xdb5, 0x7, 0x67, + 0x2, 0x2, 0xdb5, 0xdb6, 0x7, 0x66, 0x2, 0x2, 0xdb6, 0xdb7, 0x7, 0x77, + 0x2, 0x2, 0xdb7, 0xdb8, 0x7, 0x74, 0x2, 0x2, 0xdb8, 0xdb9, 0x7, 0x63, + 0x2, 0x2, 0xdb9, 0xdba, 0x7, 0x6e, 0x2, 0x2, 0xdba, 0xdbb, 0x7, 0x52, + 0x2, 0x2, 0xdbb, 0xdbc, 0x7, 0x74, 0x2, 0x2, 0xdbc, 0xdbd, 0x7, 0x6b, + 0x2, 0x2, 0xdbd, 0xdbe, 0x7, 0x6f, 0x2, 0x2, 0xdbe, 0xdbf, 0x7, 0x6b, + 0x2, 0x2, 0xdbf, 0xdc0, 0x7, 0x76, 0x2, 0x2, 0xdc0, 0xdc1, 0x7, 0x6b, + 0x2, 0x2, 0xdc1, 0xdc2, 0x7, 0x78, 0x2, 0x2, 0xdc2, 0xdc3, 0x7, 0x67, + 0x2, 0x2, 0xdc3, 0xdc4, 0x7, 0x4a, 0x2, 0x2, 0xdc4, 0xdc5, 0x7, 0x6b, + 0x2, 0x2, 0xdc5, 0xdc6, 0x7, 0x76, 0x2, 0x2, 0xdc6, 0xdc7, 0x7, 0x49, + 0x2, 0x2, 0xdc7, 0xdc8, 0x7, 0x74, 0x2, 0x2, 0xdc8, 0xdc9, 0x7, 0x71, + 0x2, 0x2, 0xdc9, 0xdca, 0x7, 0x77, 0x2, 0x2, 0xdca, 0xdcb, 0x7, 0x72, + 0x2, 0x2, 0xdcb, 0x21c, 0x3, 0x2, 0x2, 0x2, 0xdcc, 0xdcd, 0x7, 0x43, + 0x2, 0x2, 0xdcd, 0xdce, 0x7, 0x66, 0x2, 0x2, 0xdce, 0xdcf, 0x7, 0x66, + 0x2, 0x2, 0xdcf, 0xdd0, 0x7, 0x74, 0x2, 0x2, 0xdd0, 0xdd1, 0x7, 0x67, + 0x2, 0x2, 0xdd1, 0xdd2, 0x7, 0x75, 0x2, 0x2, 0xdd2, 0xdd3, 0x7, 0x75, + 0x2, 0x2, 0xdd3, 0xdd4, 0x7, 0x57, 0x2, 0x2, 0xdd4, 0x21e, 0x3, 0x2, + 0x2, 0x2, 0xdd5, 0xdd6, 0x7, 0x43, 0x2, 0x2, 0xdd6, 0xdd7, 0x7, 0x66, + 0x2, 0x2, 0xdd7, 0xdd8, 0x7, 0x66, 0x2, 0x2, 0xdd8, 0xdd9, 0x7, 0x74, + 0x2, 0x2, 0xdd9, 0xdda, 0x7, 0x67, 0x2, 0x2, 0xdda, 0xddb, 0x7, 0x75, + 0x2, 0x2, 0xddb, 0xddc, 0x7, 0x75, 0x2, 0x2, 0xddc, 0xddd, 0x7, 0x58, + 0x2, 0x2, 0xddd, 0x220, 0x3, 0x2, 0x2, 0x2, 0xdde, 0xddf, 0x7, 0x43, + 0x2, 0x2, 0xddf, 0xde0, 0x7, 0x66, 0x2, 0x2, 0xde0, 0xde1, 0x7, 0x66, + 0x2, 0x2, 0xde1, 0xde2, 0x7, 0x74, 0x2, 0x2, 0xde2, 0xde3, 0x7, 0x67, + 0x2, 0x2, 0xde3, 0xde4, 0x7, 0x75, 0x2, 0x2, 0xde4, 0xde5, 0x7, 0x75, + 0x2, 0x2, 0xde5, 0xde6, 0x7, 0x59, 0x2, 0x2, 0xde6, 0x222, 0x3, 0x2, + 0x2, 0x2, 0xde7, 0xde8, 0x7, 0x44, 0x2, 0x2, 0xde8, 0xde9, 0x7, 0x71, + 0x2, 0x2, 0xde9, 0xdea, 0x7, 0x74, 0x2, 0x2, 0xdea, 0xdeb, 0x7, 0x66, + 0x2, 0x2, 0xdeb, 0xdec, 0x7, 0x67, 0x2, 0x2, 0xdec, 0xded, 0x7, 0x74, + 0x2, 0x2, 0xded, 0xdee, 0x7, 0x45, 0x2, 0x2, 0xdee, 0xdef, 0x7, 0x71, + 0x2, 0x2, 0xdef, 0xdf0, 0x7, 0x6e, 0x2, 0x2, 0xdf0, 0xdf1, 0x7, 0x71, + 0x2, 0x2, 0xdf1, 0xdf2, 0x7, 0x74, 0x2, 0x2, 0xdf2, 0x224, 0x3, 0x2, + 0x2, 0x2, 0xdf3, 0xdf4, 0x7, 0x4f, 0x2, 0x2, 0xdf4, 0xdf5, 0x7, 0x6b, + 0x2, 0x2, 0xdf5, 0xdf6, 0x7, 0x70, 0x2, 0x2, 0xdf6, 0xdf7, 0x7, 0x48, + 0x2, 0x2, 0xdf7, 0xdf8, 0x7, 0x6b, 0x2, 0x2, 0xdf8, 0xdf9, 0x7, 0x6e, + 0x2, 0x2, 0xdf9, 0xdfa, 0x7, 0x76, 0x2, 0x2, 0xdfa, 0xdfb, 0x7, 0x67, + 0x2, 0x2, 0xdfb, 0xdfc, 0x7, 0x74, 0x2, 0x2, 0xdfc, 0x226, 0x3, 0x2, + 0x2, 0x2, 0xdfd, 0xdfe, 0x7, 0x4f, 0x2, 0x2, 0xdfe, 0xdff, 0x7, 0x63, + 0x2, 0x2, 0xdff, 0xe00, 0x7, 0x69, 0x2, 0x2, 0xe00, 0xe01, 0x7, 0x48, + 0x2, 0x2, 0xe01, 0xe02, 0x7, 0x6b, 0x2, 0x2, 0xe02, 0xe03, 0x7, 0x6e, + 0x2, 0x2, 0xe03, 0xe04, 0x7, 0x76, 0x2, 0x2, 0xe04, 0xe05, 0x7, 0x67, + 0x2, 0x2, 0xe05, 0xe06, 0x7, 0x74, 0x2, 0x2, 0xe06, 0x228, 0x3, 0x2, + 0x2, 0x2, 0xe07, 0xe08, 0x7, 0x4f, 0x2, 0x2, 0xe08, 0xe09, 0x7, 0x6b, + 0x2, 0x2, 0xe09, 0xe0a, 0x7, 0x72, 0x2, 0x2, 0xe0a, 0xe0b, 0x7, 0x48, + 0x2, 0x2, 0xe0b, 0xe0c, 0x7, 0x6b, 0x2, 0x2, 0xe0c, 0xe0d, 0x7, 0x6e, + 0x2, 0x2, 0xe0d, 0xe0e, 0x7, 0x76, 0x2, 0x2, 0xe0e, 0xe0f, 0x7, 0x67, + 0x2, 0x2, 0xe0f, 0xe10, 0x7, 0x74, 0x2, 0x2, 0xe10, 0x22a, 0x3, 0x2, + 0x2, 0x2, 0xe11, 0xe12, 0x7, 0x4f, 0x2, 0x2, 0xe12, 0xe13, 0x7, 0x63, + 0x2, 0x2, 0xe13, 0xe14, 0x7, 0x7a, 0x2, 0x2, 0xe14, 0xe15, 0x7, 0x43, + 0x2, 0x2, 0xe15, 0xe16, 0x7, 0x70, 0x2, 0x2, 0xe16, 0xe17, 0x7, 0x6b, + 0x2, 0x2, 0xe17, 0xe18, 0x7, 0x75, 0x2, 0x2, 0xe18, 0xe19, 0x7, 0x71, + 0x2, 0x2, 0xe19, 0xe1a, 0x7, 0x76, 0x2, 0x2, 0xe1a, 0xe1b, 0x7, 0x74, + 0x2, 0x2, 0xe1b, 0xe1c, 0x7, 0x71, 0x2, 0x2, 0xe1c, 0xe1d, 0x7, 0x72, + 0x2, 0x2, 0xe1d, 0xe1e, 0x7, 0x7b, 0x2, 0x2, 0xe1e, 0x22c, 0x3, 0x2, + 0x2, 0x2, 0xe1f, 0xe20, 0x7, 0x4f, 0x2, 0x2, 0xe20, 0xe21, 0x7, 0x63, + 0x2, 0x2, 0xe21, 0xe22, 0x7, 0x7a, 0x2, 0x2, 0xe22, 0xe23, 0x7, 0x4e, + 0x2, 0x2, 0xe23, 0xe24, 0x7, 0x51, 0x2, 0x2, 0xe24, 0xe25, 0x7, 0x46, + 0x2, 0x2, 0xe25, 0x22e, 0x3, 0x2, 0x2, 0x2, 0xe26, 0xe27, 0x7, 0x4f, + 0x2, 0x2, 0xe27, 0xe28, 0x7, 0x6b, 0x2, 0x2, 0xe28, 0xe29, 0x7, 0x70, + 0x2, 0x2, 0xe29, 0xe2a, 0x7, 0x4e, 0x2, 0x2, 0xe2a, 0xe2b, 0x7, 0x51, + 0x2, 0x2, 0xe2b, 0xe2c, 0x7, 0x46, 0x2, 0x2, 0xe2c, 0x230, 0x3, 0x2, + 0x2, 0x2, 0xe2d, 0xe2e, 0x7, 0x4f, 0x2, 0x2, 0xe2e, 0xe2f, 0x7, 0x6b, + 0x2, 0x2, 0xe2f, 0xe30, 0x7, 0x72, 0x2, 0x2, 0xe30, 0xe31, 0x7, 0x4e, + 0x2, 0x2, 0xe31, 0xe32, 0x7, 0x51, 0x2, 0x2, 0xe32, 0xe33, 0x7, 0x46, + 0x2, 0x2, 0xe33, 0xe34, 0x7, 0x44, 0x2, 0x2, 0xe34, 0xe35, 0x7, 0x6b, + 0x2, 0x2, 0xe35, 0xe36, 0x7, 0x63, 0x2, 0x2, 0xe36, 0xe37, 0x7, 0x75, + 0x2, 0x2, 0xe37, 0x232, 0x3, 0x2, 0x2, 0x2, 0xe38, 0xe39, 0x7, 0x45, + 0x2, 0x2, 0xe39, 0xe3a, 0x7, 0x71, 0x2, 0x2, 0xe3a, 0xe3b, 0x7, 0x6f, + 0x2, 0x2, 0xe3b, 0xe3c, 0x7, 0x72, 0x2, 0x2, 0xe3c, 0xe3d, 0x7, 0x63, + 0x2, 0x2, 0xe3d, 0xe3e, 0x7, 0x74, 0x2, 0x2, 0xe3e, 0xe3f, 0x7, 0x6b, + 0x2, 0x2, 0xe3f, 0xe40, 0x7, 0x75, 0x2, 0x2, 0xe40, 0xe41, 0x7, 0x71, + 0x2, 0x2, 0xe41, 0xe42, 0x7, 0x70, 0x2, 0x2, 0xe42, 0xe43, 0x7, 0x48, + 0x2, 0x2, 0xe43, 0xe44, 0x7, 0x77, 0x2, 0x2, 0xe44, 0xe45, 0x7, 0x70, + 0x2, 0x2, 0xe45, 0xe46, 0x7, 0x65, 0x2, 0x2, 0xe46, 0x234, 0x3, 0x2, + 0x2, 0x2, 0xe47, 0xe48, 0x7, 0x54, 0x2, 0x2, 0xe48, 0xe49, 0x7, 0x67, + 0x2, 0x2, 0xe49, 0xe4a, 0x7, 0x66, 0x2, 0x2, 0xe4a, 0xe4b, 0x7, 0x77, + 0x2, 0x2, 0xe4b, 0xe4c, 0x7, 0x65, 0x2, 0x2, 0xe4c, 0xe4d, 0x7, 0x76, + 0x2, 0x2, 0xe4d, 0xe4e, 0x7, 0x6b, 0x2, 0x2, 0xe4e, 0xe4f, 0x7, 0x71, + 0x2, 0x2, 0xe4f, 0xe50, 0x7, 0x70, 0x2, 0x2, 0xe50, 0xe51, 0x7, 0x56, + 0x2, 0x2, 0xe51, 0xe52, 0x7, 0x7b, 0x2, 0x2, 0xe52, 0xe53, 0x7, 0x72, + 0x2, 0x2, 0xe53, 0xe54, 0x7, 0x67, 0x2, 0x2, 0xe54, 0x236, 0x3, 0x2, + 0x2, 0x2, 0xe55, 0xe56, 0x7, 0x52, 0x2, 0x2, 0xe56, 0xe57, 0x7, 0x71, + 0x2, 0x2, 0xe57, 0xe58, 0x7, 0x6b, 0x2, 0x2, 0xe58, 0xe59, 0x7, 0x70, + 0x2, 0x2, 0xe59, 0xe5a, 0x7, 0x76, 0x2, 0x2, 0xe5a, 0x238, 0x3, 0x2, + 0x2, 0x2, 0xe5b, 0xe5c, 0x7, 0x4e, 0x2, 0x2, 0xe5c, 0xe5d, 0x7, 0x6b, + 0x2, 0x2, 0xe5d, 0xe5e, 0x7, 0x70, 0x2, 0x2, 0xe5e, 0xe5f, 0x7, 0x67, + 0x2, 0x2, 0xe5f, 0xe60, 0x7, 0x63, 0x2, 0x2, 0xe60, 0xe61, 0x7, 0x74, + 0x2, 0x2, 0xe61, 0x23a, 0x3, 0x2, 0x2, 0x2, 0xe62, 0xe63, 0x7, 0x48, + 0x2, 0x2, 0xe63, 0xe64, 0x7, 0x6b, 0x2, 0x2, 0xe64, 0xe65, 0x7, 0x6e, + 0x2, 0x2, 0xe65, 0xe66, 0x7, 0x76, 0x2, 0x2, 0xe66, 0xe67, 0x7, 0x67, + 0x2, 0x2, 0xe67, 0xe68, 0x7, 0x74, 0x2, 0x2, 0xe68, 0x23c, 0x3, 0x2, + 0x2, 0x2, 0xe69, 0xe6a, 0x7, 0x45, 0x2, 0x2, 0xe6a, 0xe6b, 0x7, 0x71, + 0x2, 0x2, 0xe6b, 0xe6c, 0x7, 0x6f, 0x2, 0x2, 0xe6c, 0xe6d, 0x7, 0x72, + 0x2, 0x2, 0xe6d, 0xe6e, 0x7, 0x63, 0x2, 0x2, 0xe6e, 0xe6f, 0x7, 0x74, + 0x2, 0x2, 0xe6f, 0xe70, 0x7, 0x6b, 0x2, 0x2, 0xe70, 0xe71, 0x7, 0x75, + 0x2, 0x2, 0xe71, 0xe72, 0x7, 0x71, 0x2, 0x2, 0xe72, 0xe73, 0x7, 0x70, + 0x2, 0x2, 0xe73, 0x23e, 0x3, 0x2, 0x2, 0x2, 0xe74, 0xe75, 0x7, 0x4f, + 0x2, 0x2, 0xe75, 0xe76, 0x7, 0x6b, 0x2, 0x2, 0xe76, 0xe77, 0x7, 0x70, + 0x2, 0x2, 0xe77, 0xe78, 0x7, 0x6b, 0x2, 0x2, 0xe78, 0xe79, 0x7, 0x6f, + 0x2, 0x2, 0xe79, 0xe7a, 0x7, 0x77, 0x2, 0x2, 0xe7a, 0xe7b, 0x7, 0x6f, + 0x2, 0x2, 0xe7b, 0x240, 0x3, 0x2, 0x2, 0x2, 0xe7c, 0xe7d, 0x7, 0x4f, + 0x2, 0x2, 0xe7d, 0xe7e, 0x7, 0x63, 0x2, 0x2, 0xe7e, 0xe7f, 0x7, 0x7a, + 0x2, 0x2, 0xe7f, 0xe80, 0x7, 0x6b, 0x2, 0x2, 0xe80, 0xe81, 0x7, 0x6f, + 0x2, 0x2, 0xe81, 0xe82, 0x7, 0x77, 0x2, 0x2, 0xe82, 0xe83, 0x7, 0x6f, + 0x2, 0x2, 0xe83, 0x242, 0x3, 0x2, 0x2, 0x2, 0xe84, 0xe85, 0x7, 0x59, + 0x2, 0x2, 0xe85, 0xe86, 0x7, 0x74, 0x2, 0x2, 0xe86, 0xe87, 0x7, 0x63, + 0x2, 0x2, 0xe87, 0xe88, 0x7, 0x72, 0x2, 0x2, 0xe88, 0x244, 0x3, 0x2, + 0x2, 0x2, 0xe89, 0xe8a, 0x7, 0x4f, 0x2, 0x2, 0xe8a, 0xe8b, 0x7, 0x6b, + 0x2, 0x2, 0xe8b, 0xe8c, 0x7, 0x74, 0x2, 0x2, 0xe8c, 0xe8d, 0x7, 0x74, + 0x2, 0x2, 0xe8d, 0xe8e, 0x7, 0x71, 0x2, 0x2, 0xe8e, 0xe8f, 0x7, 0x74, + 0x2, 0x2, 0xe8f, 0x246, 0x3, 0x2, 0x2, 0x2, 0xe90, 0xe91, 0x7, 0x45, + 0x2, 0x2, 0xe91, 0xe92, 0x7, 0x6e, 0x2, 0x2, 0xe92, 0xe93, 0x7, 0x63, + 0x2, 0x2, 0xe93, 0xe94, 0x7, 0x6f, 0x2, 0x2, 0xe94, 0xe95, 0x7, 0x72, + 0x2, 0x2, 0xe95, 0x248, 0x3, 0x2, 0x2, 0x2, 0xe96, 0xe97, 0x7, 0x44, + 0x2, 0x2, 0xe97, 0xe98, 0x7, 0x71, 0x2, 0x2, 0xe98, 0xe99, 0x7, 0x74, + 0x2, 0x2, 0xe99, 0xe9a, 0x7, 0x66, 0x2, 0x2, 0xe9a, 0xe9b, 0x7, 0x67, + 0x2, 0x2, 0xe9b, 0xe9c, 0x7, 0x74, 0x2, 0x2, 0xe9c, 0x24a, 0x3, 0x2, + 0x2, 0x2, 0xe9d, 0xe9e, 0x7, 0x4f, 0x2, 0x2, 0xe9e, 0xe9f, 0x7, 0x6b, + 0x2, 0x2, 0xe9f, 0xea0, 0x7, 0x74, 0x2, 0x2, 0xea0, 0xea1, 0x7, 0x74, + 0x2, 0x2, 0xea1, 0xea2, 0x7, 0x71, 0x2, 0x2, 0xea2, 0xea3, 0x7, 0x74, + 0x2, 0x2, 0xea3, 0xea4, 0x7, 0x51, 0x2, 0x2, 0xea4, 0xea5, 0x7, 0x70, + 0x2, 0x2, 0xea5, 0xea6, 0x7, 0x65, 0x2, 0x2, 0xea6, 0xea7, 0x7, 0x67, + 0x2, 0x2, 0xea7, 0x24c, 0x3, 0x2, 0x2, 0x2, 0xea8, 0xea9, 0x7, 0x50, + 0x2, 0x2, 0xea9, 0xeaa, 0x7, 0x67, 0x2, 0x2, 0xeaa, 0xeab, 0x7, 0x78, + 0x2, 0x2, 0xeab, 0xeac, 0x7, 0x67, 0x2, 0x2, 0xeac, 0xead, 0x7, 0x74, + 0x2, 0x2, 0xead, 0x24e, 0x3, 0x2, 0x2, 0x2, 0xeae, 0xeaf, 0x7, 0x4e, + 0x2, 0x2, 0xeaf, 0xeb0, 0x7, 0x67, 0x2, 0x2, 0xeb0, 0xeb1, 0x7, 0x75, + 0x2, 0x2, 0xeb1, 0xeb2, 0x7, 0x75, 0x2, 0x2, 0xeb2, 0x250, 0x3, 0x2, + 0x2, 0x2, 0xeb3, 0xeb4, 0x7, 0x47, 0x2, 0x2, 0xeb4, 0xeb5, 0x7, 0x73, + 0x2, 0x2, 0xeb5, 0xeb6, 0x7, 0x77, 0x2, 0x2, 0xeb6, 0xeb7, 0x7, 0x63, + 0x2, 0x2, 0xeb7, 0xeb8, 0x7, 0x6e, 0x2, 0x2, 0xeb8, 0x252, 0x3, 0x2, + 0x2, 0x2, 0xeb9, 0xeba, 0x7, 0x4e, 0x2, 0x2, 0xeba, 0xebb, 0x7, 0x67, + 0x2, 0x2, 0xebb, 0xebc, 0x7, 0x75, 0x2, 0x2, 0xebc, 0xebd, 0x7, 0x75, + 0x2, 0x2, 0xebd, 0xebe, 0x7, 0x47, 0x2, 0x2, 0xebe, 0xebf, 0x7, 0x73, + 0x2, 0x2, 0xebf, 0xec0, 0x7, 0x77, 0x2, 0x2, 0xec0, 0xec1, 0x7, 0x63, + 0x2, 0x2, 0xec1, 0xec2, 0x7, 0x6e, 0x2, 0x2, 0xec2, 0x254, 0x3, 0x2, + 0x2, 0x2, 0xec3, 0xec4, 0x7, 0x49, 0x2, 0x2, 0xec4, 0xec5, 0x7, 0x74, + 0x2, 0x2, 0xec5, 0xec6, 0x7, 0x67, 0x2, 0x2, 0xec6, 0xec7, 0x7, 0x63, + 0x2, 0x2, 0xec7, 0xec8, 0x7, 0x76, 0x2, 0x2, 0xec8, 0xec9, 0x7, 0x67, + 0x2, 0x2, 0xec9, 0xeca, 0x7, 0x74, 0x2, 0x2, 0xeca, 0x256, 0x3, 0x2, + 0x2, 0x2, 0xecb, 0xecc, 0x7, 0x50, 0x2, 0x2, 0xecc, 0xecd, 0x7, 0x71, + 0x2, 0x2, 0xecd, 0xece, 0x7, 0x76, 0x2, 0x2, 0xece, 0xecf, 0x7, 0x47, + 0x2, 0x2, 0xecf, 0xed0, 0x7, 0x73, 0x2, 0x2, 0xed0, 0xed1, 0x7, 0x77, + 0x2, 0x2, 0xed1, 0xed2, 0x7, 0x63, 0x2, 0x2, 0xed2, 0xed3, 0x7, 0x6e, + 0x2, 0x2, 0xed3, 0x258, 0x3, 0x2, 0x2, 0x2, 0xed4, 0xed5, 0x7, 0x49, + 0x2, 0x2, 0xed5, 0xed6, 0x7, 0x74, 0x2, 0x2, 0xed6, 0xed7, 0x7, 0x67, + 0x2, 0x2, 0xed7, 0xed8, 0x7, 0x63, 0x2, 0x2, 0xed8, 0xed9, 0x7, 0x76, + 0x2, 0x2, 0xed9, 0xeda, 0x7, 0x67, 0x2, 0x2, 0xeda, 0xedb, 0x7, 0x74, + 0x2, 0x2, 0xedb, 0xedc, 0x7, 0x47, 0x2, 0x2, 0xedc, 0xedd, 0x7, 0x73, + 0x2, 0x2, 0xedd, 0xede, 0x7, 0x77, 0x2, 0x2, 0xede, 0xedf, 0x7, 0x63, + 0x2, 0x2, 0xedf, 0xee0, 0x7, 0x6e, 0x2, 0x2, 0xee0, 0x25a, 0x3, 0x2, + 0x2, 0x2, 0xee1, 0xee2, 0x7, 0x43, 0x2, 0x2, 0xee2, 0xee3, 0x7, 0x6e, + 0x2, 0x2, 0xee3, 0xee4, 0x7, 0x79, 0x2, 0x2, 0xee4, 0xee5, 0x7, 0x63, + 0x2, 0x2, 0xee5, 0xee6, 0x7, 0x7b, 0x2, 0x2, 0xee6, 0xee7, 0x7, 0x75, + 0x2, 0x2, 0xee7, 0x25c, 0x3, 0x2, 0x2, 0x2, 0xee8, 0xee9, 0x7, 0x51, + 0x2, 0x2, 0xee9, 0xeea, 0x7, 0x72, 0x2, 0x2, 0xeea, 0xeeb, 0x7, 0x63, + 0x2, 0x2, 0xeeb, 0xeec, 0x7, 0x73, 0x2, 0x2, 0xeec, 0xeed, 0x7, 0x77, + 0x2, 0x2, 0xeed, 0xeee, 0x7, 0x67, 0x2, 0x2, 0xeee, 0xeef, 0x7, 0x44, + 0x2, 0x2, 0xeef, 0xef0, 0x7, 0x6e, 0x2, 0x2, 0xef0, 0xef1, 0x7, 0x63, + 0x2, 0x2, 0xef1, 0xef2, 0x7, 0x65, 0x2, 0x2, 0xef2, 0xef3, 0x7, 0x6d, + 0x2, 0x2, 0xef3, 0x25e, 0x3, 0x2, 0x2, 0x2, 0xef4, 0xef5, 0x7, 0x56, + 0x2, 0x2, 0xef5, 0xef6, 0x7, 0x74, 0x2, 0x2, 0xef6, 0xef7, 0x7, 0x63, + 0x2, 0x2, 0xef7, 0xef8, 0x7, 0x70, 0x2, 0x2, 0xef8, 0xef9, 0x7, 0x75, + 0x2, 0x2, 0xef9, 0xefa, 0x7, 0x72, 0x2, 0x2, 0xefa, 0xefb, 0x7, 0x63, + 0x2, 0x2, 0xefb, 0xefc, 0x7, 0x74, 0x2, 0x2, 0xefc, 0xefd, 0x7, 0x67, + 0x2, 0x2, 0xefd, 0xefe, 0x7, 0x70, 0x2, 0x2, 0xefe, 0xeff, 0x7, 0x76, + 0x2, 0x2, 0xeff, 0xf00, 0x7, 0x44, 0x2, 0x2, 0xf00, 0xf01, 0x7, 0x6e, + 0x2, 0x2, 0xf01, 0xf02, 0x7, 0x63, 0x2, 0x2, 0xf02, 0xf03, 0x7, 0x65, + 0x2, 0x2, 0xf03, 0xf04, 0x7, 0x6d, 0x2, 0x2, 0xf04, 0x260, 0x3, 0x2, + 0x2, 0x2, 0xf05, 0xf06, 0x7, 0x51, 0x2, 0x2, 0xf06, 0xf07, 0x7, 0x72, + 0x2, 0x2, 0xf07, 0xf08, 0x7, 0x63, 0x2, 0x2, 0xf08, 0xf09, 0x7, 0x73, + 0x2, 0x2, 0xf09, 0xf0a, 0x7, 0x77, 0x2, 0x2, 0xf0a, 0xf0b, 0x7, 0x67, + 0x2, 0x2, 0xf0b, 0xf0c, 0x7, 0x59, 0x2, 0x2, 0xf0c, 0xf0d, 0x7, 0x6a, + 0x2, 0x2, 0xf0d, 0xf0e, 0x7, 0x6b, 0x2, 0x2, 0xf0e, 0xf0f, 0x7, 0x76, + 0x2, 0x2, 0xf0f, 0xf10, 0x7, 0x67, 0x2, 0x2, 0xf10, 0x262, 0x3, 0x2, + 0x2, 0x2, 0xf11, 0xf12, 0x7, 0x2a, 0x2, 0x2, 0xf12, 0x264, 0x3, 0x2, + 0x2, 0x2, 0xf13, 0xf14, 0x7, 0x2b, 0x2, 0x2, 0xf14, 0x266, 0x3, 0x2, + 0x2, 0x2, 0xf15, 0xf16, 0x7, 0x5d, 0x2, 0x2, 0xf16, 0x268, 0x3, 0x2, + 0x2, 0x2, 0xf17, 0xf18, 0x7, 0x5f, 0x2, 0x2, 0xf18, 0x26a, 0x3, 0x2, + 0x2, 0x2, 0xf19, 0xf1a, 0x7, 0x7d, 0x2, 0x2, 0xf1a, 0x26c, 0x3, 0x2, + 0x2, 0x2, 0xf1b, 0xf1c, 0x7, 0x7f, 0x2, 0x2, 0xf1c, 0x26e, 0x3, 0x2, + 0x2, 0x2, 0xf1d, 0xf1e, 0x7, 0x5d, 0x2, 0x2, 0xf1e, 0xf1f, 0x7, 0x5d, + 0x2, 0x2, 0xf1f, 0x270, 0x3, 0x2, 0x2, 0x2, 0xf20, 0xf21, 0x7, 0x3e, + 0x2, 0x2, 0xf21, 0x272, 0x3, 0x2, 0x2, 0x2, 0xf22, 0xf23, 0x7, 0x3e, + 0x2, 0x2, 0xf23, 0xf24, 0x7, 0x3f, 0x2, 0x2, 0xf24, 0x274, 0x3, 0x2, + 0x2, 0x2, 0xf25, 0xf26, 0x7, 0x40, 0x2, 0x2, 0xf26, 0x276, 0x3, 0x2, + 0x2, 0x2, 0xf27, 0xf28, 0x7, 0x40, 0x2, 0x2, 0xf28, 0xf29, 0x7, 0x3f, + 0x2, 0x2, 0xf29, 0x278, 0x3, 0x2, 0x2, 0x2, 0xf2a, 0xf2b, 0x7, 0x3e, + 0x2, 0x2, 0xf2b, 0xf2c, 0x7, 0x3e, 0x2, 0x2, 0xf2c, 0x27a, 0x3, 0x2, + 0x2, 0x2, 0xf2d, 0xf2e, 0x7, 0x40, 0x2, 0x2, 0xf2e, 0xf2f, 0x7, 0x40, + 0x2, 0x2, 0xf2f, 0x27c, 0x3, 0x2, 0x2, 0x2, 0xf30, 0xf31, 0x7, 0x2d, + 0x2, 0x2, 0xf31, 0x27e, 0x3, 0x2, 0x2, 0x2, 0xf32, 0xf33, 0x7, 0x2d, + 0x2, 0x2, 0xf33, 0xf34, 0x7, 0x2d, 0x2, 0x2, 0xf34, 0x280, 0x3, 0x2, + 0x2, 0x2, 0xf35, 0xf36, 0x7, 0x2f, 0x2, 0x2, 0xf36, 0x282, 0x3, 0x2, + 0x2, 0x2, 0xf37, 0xf38, 0x7, 0x2f, 0x2, 0x2, 0xf38, 0xf39, 0x7, 0x2f, + 0x2, 0x2, 0xf39, 0x284, 0x3, 0x2, 0x2, 0x2, 0xf3a, 0xf3b, 0x7, 0x2c, + 0x2, 0x2, 0xf3b, 0x286, 0x3, 0x2, 0x2, 0x2, 0xf3c, 0xf3d, 0x7, 0x31, + 0x2, 0x2, 0xf3d, 0x288, 0x3, 0x2, 0x2, 0x2, 0xf3e, 0xf3f, 0x7, 0x27, + 0x2, 0x2, 0xf3f, 0x28a, 0x3, 0x2, 0x2, 0x2, 0xf40, 0xf41, 0x7, 0x28, + 0x2, 0x2, 0xf41, 0x28c, 0x3, 0x2, 0x2, 0x2, 0xf42, 0xf43, 0x7, 0x7e, + 0x2, 0x2, 0xf43, 0x28e, 0x3, 0x2, 0x2, 0x2, 0xf44, 0xf45, 0x7, 0x28, + 0x2, 0x2, 0xf45, 0xf46, 0x7, 0x28, 0x2, 0x2, 0xf46, 0x290, 0x3, 0x2, + 0x2, 0x2, 0xf47, 0xf48, 0x7, 0x7e, 0x2, 0x2, 0xf48, 0xf49, 0x7, 0x7e, + 0x2, 0x2, 0xf49, 0x292, 0x3, 0x2, 0x2, 0x2, 0xf4a, 0xf4b, 0x7, 0x60, + 0x2, 0x2, 0xf4b, 0x294, 0x3, 0x2, 0x2, 0x2, 0xf4c, 0xf4d, 0x7, 0x23, + 0x2, 0x2, 0xf4d, 0x296, 0x3, 0x2, 0x2, 0x2, 0xf4e, 0xf4f, 0x7, 0x80, + 0x2, 0x2, 0xf4f, 0x298, 0x3, 0x2, 0x2, 0x2, 0xf50, 0xf51, 0x7, 0x41, + 0x2, 0x2, 0xf51, 0x29a, 0x3, 0x2, 0x2, 0x2, 0xf52, 0xf53, 0x7, 0x3c, + 0x2, 0x2, 0xf53, 0x29c, 0x3, 0x2, 0x2, 0x2, 0xf54, 0xf55, 0x7, 0x3c, + 0x2, 0x2, 0xf55, 0xf56, 0x7, 0x3c, 0x2, 0x2, 0xf56, 0x29e, 0x3, 0x2, + 0x2, 0x2, 0xf57, 0xf58, 0x7, 0x3d, 0x2, 0x2, 0xf58, 0x2a0, 0x3, 0x2, + 0x2, 0x2, 0xf59, 0xf5a, 0x7, 0x2e, 0x2, 0x2, 0xf5a, 0x2a2, 0x3, 0x2, + 0x2, 0x2, 0xf5b, 0xf5c, 0x7, 0x3f, 0x2, 0x2, 0xf5c, 0x2a4, 0x3, 0x2, + 0x2, 0x2, 0xf5d, 0xf5e, 0x7, 0x2c, 0x2, 0x2, 0xf5e, 0xf5f, 0x7, 0x3f, + 0x2, 0x2, 0xf5f, 0x2a6, 0x3, 0x2, 0x2, 0x2, 0xf60, 0xf61, 0x7, 0x31, + 0x2, 0x2, 0xf61, 0xf62, 0x7, 0x3f, 0x2, 0x2, 0xf62, 0x2a8, 0x3, 0x2, + 0x2, 0x2, 0xf63, 0xf64, 0x7, 0x27, 0x2, 0x2, 0xf64, 0xf65, 0x7, 0x3f, + 0x2, 0x2, 0xf65, 0x2aa, 0x3, 0x2, 0x2, 0x2, 0xf66, 0xf67, 0x7, 0x2d, + 0x2, 0x2, 0xf67, 0xf68, 0x7, 0x3f, 0x2, 0x2, 0xf68, 0x2ac, 0x3, 0x2, + 0x2, 0x2, 0xf69, 0xf6a, 0x7, 0x2f, 0x2, 0x2, 0xf6a, 0xf6b, 0x7, 0x3f, + 0x2, 0x2, 0xf6b, 0x2ae, 0x3, 0x2, 0x2, 0x2, 0xf6c, 0xf6d, 0x7, 0x3e, + 0x2, 0x2, 0xf6d, 0xf6e, 0x7, 0x3e, 0x2, 0x2, 0xf6e, 0xf6f, 0x7, 0x3f, + 0x2, 0x2, 0xf6f, 0x2b0, 0x3, 0x2, 0x2, 0x2, 0xf70, 0xf71, 0x7, 0x40, + 0x2, 0x2, 0xf71, 0xf72, 0x7, 0x40, 0x2, 0x2, 0xf72, 0xf73, 0x7, 0x3f, + 0x2, 0x2, 0xf73, 0x2b2, 0x3, 0x2, 0x2, 0x2, 0xf74, 0xf75, 0x7, 0x28, + 0x2, 0x2, 0xf75, 0xf76, 0x7, 0x3f, 0x2, 0x2, 0xf76, 0x2b4, 0x3, 0x2, + 0x2, 0x2, 0xf77, 0xf78, 0x7, 0x60, 0x2, 0x2, 0xf78, 0xf79, 0x7, 0x3f, + 0x2, 0x2, 0xf79, 0x2b6, 0x3, 0x2, 0x2, 0x2, 0xf7a, 0xf7b, 0x7, 0x7e, + 0x2, 0x2, 0xf7b, 0xf7c, 0x7, 0x3f, 0x2, 0x2, 0xf7c, 0x2b8, 0x3, 0x2, + 0x2, 0x2, 0xf7d, 0xf7e, 0x7, 0x3f, 0x2, 0x2, 0xf7e, 0xf7f, 0x7, 0x3f, + 0x2, 0x2, 0xf7f, 0x2ba, 0x3, 0x2, 0x2, 0x2, 0xf80, 0xf81, 0x7, 0x23, + 0x2, 0x2, 0xf81, 0xf82, 0x7, 0x3f, 0x2, 0x2, 0xf82, 0x2bc, 0x3, 0x2, + 0x2, 0x2, 0xf83, 0xf84, 0x7, 0x30, 0x2, 0x2, 0xf84, 0x2be, 0x3, 0x2, + 0x2, 0x2, 0xf85, 0xf86, 0x7, 0x76, 0x2, 0x2, 0xf86, 0xf87, 0x7, 0x74, + 0x2, 0x2, 0xf87, 0xf88, 0x7, 0x77, 0x2, 0x2, 0xf88, 0xf89, 0x7, 0x67, + 0x2, 0x2, 0xf89, 0x2c0, 0x3, 0x2, 0x2, 0x2, 0xf8a, 0xf8b, 0x7, 0x68, + 0x2, 0x2, 0xf8b, 0xf8c, 0x7, 0x63, 0x2, 0x2, 0xf8c, 0xf8d, 0x7, 0x6e, + 0x2, 0x2, 0xf8d, 0xf8e, 0x7, 0x75, 0x2, 0x2, 0xf8e, 0xf8f, 0x7, 0x67, + 0x2, 0x2, 0xf8f, 0x2c2, 0x3, 0x2, 0x2, 0x2, 0xf90, 0xf91, 0x7, 0x63, + 0x2, 0x2, 0xf91, 0xf92, 0x7, 0x75, 0x2, 0x2, 0xf92, 0xf93, 0x7, 0x75, + 0x2, 0x2, 0xf93, 0xf94, 0x7, 0x71, 0x2, 0x2, 0xf94, 0xf95, 0x7, 0x65, + 0x2, 0x2, 0xf95, 0xf96, 0x7, 0x6b, 0x2, 0x2, 0xf96, 0xf97, 0x7, 0x63, + 0x2, 0x2, 0xf97, 0xf98, 0x7, 0x76, 0x2, 0x2, 0xf98, 0xf99, 0x7, 0x67, + 0x2, 0x2, 0xf99, 0xf9a, 0x7, 0x66, 0x2, 0x2, 0xf9a, 0xf9b, 0x7, 0x76, + 0x2, 0x2, 0xf9b, 0xf9c, 0x7, 0x7b, 0x2, 0x2, 0xf9c, 0xf9d, 0x7, 0x72, + 0x2, 0x2, 0xf9d, 0xf9e, 0x7, 0x67, 0x2, 0x2, 0xf9e, 0x2c4, 0x3, 0x2, + 0x2, 0x2, 0xf9f, 0xfa0, 0x7, 0x76, 0x2, 0x2, 0xfa0, 0xfa1, 0x7, 0x7b, + 0x2, 0x2, 0xfa1, 0xfa2, 0x7, 0x72, 0x2, 0x2, 0xfa2, 0xfa3, 0x7, 0x67, + 0x2, 0x2, 0xfa3, 0xfa4, 0x7, 0x63, 0x2, 0x2, 0xfa4, 0xfa5, 0x7, 0x6e, + 0x2, 0x2, 0xfa5, 0xfa6, 0x7, 0x6b, 0x2, 0x2, 0xfa6, 0xfa7, 0x7, 0x63, + 0x2, 0x2, 0xfa7, 0xfa8, 0x7, 0x75, 0x2, 0x2, 0xfa8, 0x2c6, 0x3, 0x2, + 0x2, 0x2, 0xfa9, 0xfaa, 0x7, 0x76, 0x2, 0x2, 0xfaa, 0xfab, 0x7, 0x7b, + 0x2, 0x2, 0xfab, 0xfac, 0x7, 0x72, 0x2, 0x2, 0xfac, 0xfad, 0x7, 0x67, + 0x2, 0x2, 0xfad, 0xfae, 0x7, 0x66, 0x2, 0x2, 0xfae, 0xfaf, 0x7, 0x67, + 0x2, 0x2, 0xfaf, 0xfb0, 0x7, 0x68, 0x2, 0x2, 0xfb0, 0x2c8, 0x3, 0x2, + 0x2, 0x2, 0xfb1, 0xfb2, 0x7, 0x68, 0x2, 0x2, 0xfb2, 0xfb3, 0x7, 0x77, + 0x2, 0x2, 0xfb3, 0xfb4, 0x7, 0x70, 0x2, 0x2, 0xfb4, 0xfb5, 0x7, 0x66, + 0x2, 0x2, 0xfb5, 0xfb6, 0x7, 0x63, 0x2, 0x2, 0xfb6, 0xfb7, 0x7, 0x6f, + 0x2, 0x2, 0xfb7, 0xfb8, 0x7, 0x67, 0x2, 0x2, 0xfb8, 0xfb9, 0x7, 0x70, + 0x2, 0x2, 0xfb9, 0xfba, 0x7, 0x76, 0x2, 0x2, 0xfba, 0xfbb, 0x7, 0x63, + 0x2, 0x2, 0xfbb, 0xfbc, 0x7, 0x6e, 0x2, 0x2, 0xfbc, 0x2ca, 0x3, 0x2, + 0x2, 0x2, 0xfbd, 0xfbe, 0x7, 0x76, 0x2, 0x2, 0xfbe, 0xfbf, 0x7, 0x7b, + 0x2, 0x2, 0xfbf, 0xfc0, 0x7, 0x72, 0x2, 0x2, 0xfc0, 0xfc1, 0x7, 0x67, + 0x2, 0x2, 0xfc1, 0xfc2, 0x7, 0x71, 0x2, 0x2, 0xfc2, 0xfc3, 0x7, 0x68, + 0x2, 0x2, 0xfc3, 0x2cc, 0x3, 0x2, 0x2, 0x2, 0xfc4, 0xfc5, 0x7, 0x48, + 0x2, 0x2, 0xfc5, 0xfc6, 0x7, 0x74, 0x2, 0x2, 0xfc6, 0xfc7, 0x7, 0x67, + 0x2, 0x2, 0xfc7, 0xfc8, 0x7, 0x73, 0x2, 0x2, 0xfc8, 0xfc9, 0x7, 0x77, + 0x2, 0x2, 0xfc9, 0xfca, 0x7, 0x67, 0x2, 0x2, 0xfca, 0xfcb, 0x7, 0x70, + 0x2, 0x2, 0xfcb, 0xfcc, 0x7, 0x65, 0x2, 0x2, 0xfcc, 0xfcd, 0x7, 0x7b, + 0x2, 0x2, 0xfcd, 0xfce, 0x7, 0x4b, 0x2, 0x2, 0xfce, 0xfcf, 0x7, 0x66, + 0x2, 0x2, 0xfcf, 0x2ce, 0x3, 0x2, 0x2, 0x2, 0xfd0, 0xfd1, 0x7, 0x55, + 0x2, 0x2, 0xfd1, 0xfd2, 0x7, 0x6a, 0x2, 0x2, 0xfd2, 0xfd3, 0x7, 0x63, + 0x2, 0x2, 0xfd3, 0xfd4, 0x7, 0x66, 0x2, 0x2, 0xfd4, 0xfd5, 0x7, 0x67, + 0x2, 0x2, 0xfd5, 0xfd6, 0x7, 0x74, 0x2, 0x2, 0xfd6, 0xfd7, 0x7, 0x58, + 0x2, 0x2, 0xfd7, 0xfd8, 0x7, 0x63, 0x2, 0x2, 0xfd8, 0xfd9, 0x7, 0x74, + 0x2, 0x2, 0xfd9, 0xfda, 0x7, 0x6b, 0x2, 0x2, 0xfda, 0xfdb, 0x7, 0x63, + 0x2, 0x2, 0xfdb, 0xfdc, 0x7, 0x70, 0x2, 0x2, 0xfdc, 0xfdd, 0x7, 0x76, + 0x2, 0x2, 0xfdd, 0xfde, 0x7, 0x48, 0x2, 0x2, 0xfde, 0xfdf, 0x7, 0x63, + 0x2, 0x2, 0xfdf, 0xfe0, 0x7, 0x6e, 0x2, 0x2, 0xfe0, 0xfe1, 0x7, 0x6e, + 0x2, 0x2, 0xfe1, 0xfe2, 0x7, 0x64, 0x2, 0x2, 0xfe2, 0xfe3, 0x7, 0x63, + 0x2, 0x2, 0xfe3, 0xfe4, 0x7, 0x65, 0x2, 0x2, 0xfe4, 0xfe5, 0x7, 0x6d, + 0x2, 0x2, 0xfe5, 0x2d0, 0x3, 0x2, 0x2, 0x2, 0xfe6, 0xfe7, 0x7, 0x55, + 0x2, 0x2, 0xfe7, 0xfe8, 0x7, 0x6a, 0x2, 0x2, 0xfe8, 0xfe9, 0x7, 0x63, + 0x2, 0x2, 0xfe9, 0xfea, 0x7, 0x66, 0x2, 0x2, 0xfea, 0xfeb, 0x7, 0x67, + 0x2, 0x2, 0xfeb, 0xfec, 0x7, 0x74, 0x2, 0x2, 0xfec, 0xfed, 0x7, 0x54, + 0x2, 0x2, 0xfed, 0xfee, 0x7, 0x67, 0x2, 0x2, 0xfee, 0xfef, 0x7, 0x75, + 0x2, 0x2, 0xfef, 0xff0, 0x7, 0x71, 0x2, 0x2, 0xff0, 0xff1, 0x7, 0x77, + 0x2, 0x2, 0xff1, 0xff2, 0x7, 0x74, 0x2, 0x2, 0xff2, 0xff3, 0x7, 0x65, + 0x2, 0x2, 0xff3, 0xff4, 0x7, 0x67, 0x2, 0x2, 0xff4, 0xff5, 0x7, 0x49, + 0x2, 0x2, 0xff5, 0xff6, 0x7, 0x74, 0x2, 0x2, 0xff6, 0xff7, 0x7, 0x71, + 0x2, 0x2, 0xff7, 0xff8, 0x7, 0x77, 0x2, 0x2, 0xff8, 0xff9, 0x7, 0x72, + 0x2, 0x2, 0xff9, 0xffa, 0x7, 0x55, 0x2, 0x2, 0xffa, 0xffb, 0x7, 0x67, + 0x2, 0x2, 0xffb, 0xffc, 0x7, 0x6f, 0x2, 0x2, 0xffc, 0xffd, 0x7, 0x63, + 0x2, 0x2, 0xffd, 0xffe, 0x7, 0x70, 0x2, 0x2, 0xffe, 0xfff, 0x7, 0x76, + 0x2, 0x2, 0xfff, 0x1000, 0x7, 0x6b, 0x2, 0x2, 0x1000, 0x1001, 0x7, + 0x65, 0x2, 0x2, 0x1001, 0x2d2, 0x3, 0x2, 0x2, 0x2, 0x1002, 0x1003, + 0x7, 0x55, 0x2, 0x2, 0x1003, 0x1004, 0x7, 0x6a, 0x2, 0x2, 0x1004, + 0x1005, 0x7, 0x63, 0x2, 0x2, 0x1005, 0x1006, 0x7, 0x66, 0x2, 0x2, + 0x1006, 0x1007, 0x7, 0x67, 0x2, 0x2, 0x1007, 0x1008, 0x7, 0x74, 0x2, + 0x2, 0x1008, 0x1009, 0x7, 0x54, 0x2, 0x2, 0x1009, 0x100a, 0x7, 0x67, + 0x2, 0x2, 0x100a, 0x100b, 0x7, 0x75, 0x2, 0x2, 0x100b, 0x100c, 0x7, + 0x71, 0x2, 0x2, 0x100c, 0x100d, 0x7, 0x77, 0x2, 0x2, 0x100d, 0x100e, + 0x7, 0x74, 0x2, 0x2, 0x100e, 0x100f, 0x7, 0x65, 0x2, 0x2, 0x100f, + 0x1010, 0x7, 0x67, 0x2, 0x2, 0x1010, 0x1011, 0x7, 0x49, 0x2, 0x2, + 0x1011, 0x1012, 0x7, 0x74, 0x2, 0x2, 0x1012, 0x1013, 0x7, 0x71, 0x2, + 0x2, 0x1013, 0x1014, 0x7, 0x77, 0x2, 0x2, 0x1014, 0x1015, 0x7, 0x72, + 0x2, 0x2, 0x1015, 0x2d4, 0x3, 0x2, 0x2, 0x2, 0x1016, 0x1017, 0x7, + 0x61, 0x2, 0x2, 0x1017, 0x1018, 0x7, 0x61, 0x2, 0x2, 0x1018, 0x1019, + 0x7, 0x63, 0x2, 0x2, 0x1019, 0x101a, 0x7, 0x7c, 0x2, 0x2, 0x101a, + 0x101b, 0x7, 0x75, 0x2, 0x2, 0x101b, 0x101c, 0x7, 0x6e, 0x2, 0x2, + 0x101c, 0x101d, 0x7, 0x65, 0x2, 0x2, 0x101d, 0x101e, 0x7, 0x61, 0x2, + 0x2, 0x101e, 0x101f, 0x7, 0x72, 0x2, 0x2, 0x101f, 0x1020, 0x7, 0x74, + 0x2, 0x2, 0x1020, 0x1021, 0x7, 0x6b, 0x2, 0x2, 0x1021, 0x1022, 0x7, + 0x70, 0x2, 0x2, 0x1022, 0x1023, 0x7, 0x76, 0x2, 0x2, 0x1023, 0x1024, + 0x7, 0x61, 0x2, 0x2, 0x1024, 0x1025, 0x7, 0x6f, 0x2, 0x2, 0x1025, + 0x1026, 0x7, 0x67, 0x2, 0x2, 0x1026, 0x1027, 0x7, 0x75, 0x2, 0x2, + 0x1027, 0x1028, 0x7, 0x75, 0x2, 0x2, 0x1028, 0x1029, 0x7, 0x63, 0x2, + 0x2, 0x1029, 0x102a, 0x7, 0x69, 0x2, 0x2, 0x102a, 0x102b, 0x7, 0x67, + 0x2, 0x2, 0x102b, 0x2d6, 0x3, 0x2, 0x2, 0x2, 0x102c, 0x102d, 0x7, + 0x61, 0x2, 0x2, 0x102d, 0x102e, 0x7, 0x61, 0x2, 0x2, 0x102e, 0x102f, + 0x7, 0x63, 0x2, 0x2, 0x102f, 0x1030, 0x7, 0x7c, 0x2, 0x2, 0x1030, + 0x1031, 0x7, 0x75, 0x2, 0x2, 0x1031, 0x1032, 0x7, 0x6e, 0x2, 0x2, + 0x1032, 0x1033, 0x7, 0x65, 0x2, 0x2, 0x1033, 0x1034, 0x7, 0x61, 0x2, + 0x2, 0x1034, 0x1035, 0x7, 0x72, 0x2, 0x2, 0x1035, 0x1036, 0x7, 0x74, + 0x2, 0x2, 0x1036, 0x1037, 0x7, 0x6b, 0x2, 0x2, 0x1037, 0x1038, 0x7, + 0x70, 0x2, 0x2, 0x1038, 0x1039, 0x7, 0x76, 0x2, 0x2, 0x1039, 0x103a, + 0x7, 0x61, 0x2, 0x2, 0x103a, 0x103b, 0x7, 0x75, 0x2, 0x2, 0x103b, + 0x103c, 0x7, 0x7b, 0x2, 0x2, 0x103c, 0x103d, 0x7, 0x6f, 0x2, 0x2, + 0x103d, 0x103e, 0x7, 0x64, 0x2, 0x2, 0x103e, 0x103f, 0x7, 0x71, 0x2, + 0x2, 0x103f, 0x1040, 0x7, 0x6e, 0x2, 0x2, 0x1040, 0x2d8, 0x3, 0x2, + 0x2, 0x2, 0x1041, 0x1042, 0x7, 0x61, 0x2, 0x2, 0x1042, 0x1043, 0x7, + 0x61, 0x2, 0x2, 0x1043, 0x1044, 0x7, 0x63, 0x2, 0x2, 0x1044, 0x1045, + 0x7, 0x7c, 0x2, 0x2, 0x1045, 0x1046, 0x7, 0x75, 0x2, 0x2, 0x1046, + 0x1047, 0x7, 0x6e, 0x2, 0x2, 0x1047, 0x1048, 0x7, 0x65, 0x2, 0x2, + 0x1048, 0x1049, 0x7, 0x61, 0x2, 0x2, 0x1049, 0x104a, 0x7, 0x72, 0x2, + 0x2, 0x104a, 0x104b, 0x7, 0x74, 0x2, 0x2, 0x104b, 0x104c, 0x7, 0x76, + 0x2, 0x2, 0x104c, 0x104d, 0x7, 0x75, 0x2, 0x2, 0x104d, 0x104e, 0x7, + 0x7b, 0x2, 0x2, 0x104e, 0x104f, 0x7, 0x6f, 0x2, 0x2, 0x104f, 0x1050, + 0x7, 0x61, 0x2, 0x2, 0x1050, 0x1051, 0x7, 0x68, 0x2, 0x2, 0x1051, + 0x1052, 0x7, 0x77, 0x2, 0x2, 0x1052, 0x1053, 0x7, 0x6e, 0x2, 0x2, + 0x1053, 0x1054, 0x7, 0x6e, 0x2, 0x2, 0x1054, 0x1055, 0x7, 0x7b, 0x2, + 0x2, 0x1055, 0x1056, 0x7, 0x61, 0x2, 0x2, 0x1056, 0x1057, 0x7, 0x73, + 0x2, 0x2, 0x1057, 0x1058, 0x7, 0x77, 0x2, 0x2, 0x1058, 0x1059, 0x7, + 0x63, 0x2, 0x2, 0x1059, 0x105a, 0x7, 0x6e, 0x2, 0x2, 0x105a, 0x105b, + 0x7, 0x6b, 0x2, 0x2, 0x105b, 0x105c, 0x7, 0x68, 0x2, 0x2, 0x105c, + 0x105d, 0x7, 0x6b, 0x2, 0x2, 0x105d, 0x105e, 0x7, 0x67, 0x2, 0x2, + 0x105e, 0x105f, 0x7, 0x66, 0x2, 0x2, 0x105f, 0x2da, 0x3, 0x2, 0x2, + 0x2, 0x1060, 0x1061, 0x7, 0x61, 0x2, 0x2, 0x1061, 0x1062, 0x7, 0x61, + 0x2, 0x2, 0x1062, 0x1063, 0x7, 0x63, 0x2, 0x2, 0x1063, 0x1064, 0x7, + 0x7c, 0x2, 0x2, 0x1064, 0x1065, 0x7, 0x75, 0x2, 0x2, 0x1065, 0x1066, + 0x7, 0x6e, 0x2, 0x2, 0x1066, 0x1067, 0x7, 0x65, 0x2, 0x2, 0x1067, + 0x1068, 0x7, 0x61, 0x2, 0x2, 0x1068, 0x1069, 0x7, 0x72, 0x2, 0x2, + 0x1069, 0x106a, 0x7, 0x74, 0x2, 0x2, 0x106a, 0x106b, 0x7, 0x76, 0x2, + 0x2, 0x106b, 0x106c, 0x7, 0x75, 0x2, 0x2, 0x106c, 0x106d, 0x7, 0x7b, + 0x2, 0x2, 0x106d, 0x106e, 0x7, 0x6f, 0x2, 0x2, 0x106e, 0x106f, 0x7, + 0x61, 0x2, 0x2, 0x106f, 0x1070, 0x7, 0x6e, 0x2, 0x2, 0x1070, 0x1071, + 0x7, 0x67, 0x2, 0x2, 0x1071, 0x1072, 0x7, 0x63, 0x2, 0x2, 0x1072, + 0x1073, 0x7, 0x75, 0x2, 0x2, 0x1073, 0x1074, 0x7, 0x76, 0x2, 0x2, + 0x1074, 0x1075, 0x7, 0x61, 0x2, 0x2, 0x1075, 0x1076, 0x7, 0x73, 0x2, + 0x2, 0x1076, 0x1077, 0x7, 0x77, 0x2, 0x2, 0x1077, 0x1078, 0x7, 0x63, + 0x2, 0x2, 0x1078, 0x1079, 0x7, 0x6e, 0x2, 0x2, 0x1079, 0x107a, 0x7, + 0x6b, 0x2, 0x2, 0x107a, 0x107b, 0x7, 0x68, 0x2, 0x2, 0x107b, 0x107c, + 0x7, 0x6b, 0x2, 0x2, 0x107c, 0x107d, 0x7, 0x67, 0x2, 0x2, 0x107d, + 0x107e, 0x7, 0x66, 0x2, 0x2, 0x107e, 0x2dc, 0x3, 0x2, 0x2, 0x2, 0x107f, + 0x1080, 0x7, 0x61, 0x2, 0x2, 0x1080, 0x1081, 0x7, 0x61, 0x2, 0x2, + 0x1081, 0x1082, 0x7, 0x63, 0x2, 0x2, 0x1082, 0x1083, 0x7, 0x7c, 0x2, + 0x2, 0x1083, 0x1084, 0x7, 0x75, 0x2, 0x2, 0x1084, 0x1085, 0x7, 0x6e, + 0x2, 0x2, 0x1085, 0x1086, 0x7, 0x65, 0x2, 0x2, 0x1086, 0x1087, 0x7, + 0x61, 0x2, 0x2, 0x1087, 0x1088, 0x7, 0x72, 0x2, 0x2, 0x1088, 0x1089, + 0x7, 0x74, 0x2, 0x2, 0x1089, 0x108a, 0x7, 0x76, 0x2, 0x2, 0x108a, + 0x108b, 0x7, 0x75, 0x2, 0x2, 0x108b, 0x108c, 0x7, 0x7b, 0x2, 0x2, + 0x108c, 0x108d, 0x7, 0x6f, 0x2, 0x2, 0x108d, 0x108e, 0x7, 0x61, 0x2, + 0x2, 0x108e, 0x108f, 0x7, 0x65, 0x2, 0x2, 0x108f, 0x1090, 0x7, 0x71, + 0x2, 0x2, 0x1090, 0x1091, 0x7, 0x70, 0x2, 0x2, 0x1091, 0x1092, 0x7, + 0x75, 0x2, 0x2, 0x1092, 0x1093, 0x7, 0x76, 0x2, 0x2, 0x1093, 0x1094, + 0x7, 0x6b, 0x2, 0x2, 0x1094, 0x1095, 0x7, 0x70, 0x2, 0x2, 0x1095, + 0x1096, 0x7, 0x76, 0x2, 0x2, 0x1096, 0x1097, 0x7, 0x61, 0x2, 0x2, + 0x1097, 0x1098, 0x7, 0x78, 0x2, 0x2, 0x1098, 0x1099, 0x7, 0x63, 0x2, + 0x2, 0x1099, 0x109a, 0x7, 0x6e, 0x2, 0x2, 0x109a, 0x109b, 0x7, 0x77, + 0x2, 0x2, 0x109b, 0x109c, 0x7, 0x67, 0x2, 0x2, 0x109c, 0x2de, 0x3, + 0x2, 0x2, 0x2, 0x109d, 0x109e, 0x7, 0x44, 0x2, 0x2, 0x109e, 0x109f, + 0x7, 0x4b, 0x2, 0x2, 0x109f, 0x10a0, 0x7, 0x50, 0x2, 0x2, 0x10a0, + 0x10a1, 0x7, 0x51, 0x2, 0x2, 0x10a1, 0x10a2, 0x7, 0x54, 0x2, 0x2, + 0x10a2, 0x10a3, 0x7, 0x4f, 0x2, 0x2, 0x10a3, 0x10a4, 0x7, 0x43, 0x2, + 0x2, 0x10a4, 0x10a5, 0x7, 0x4e, 0x2, 0x2, 0x10a5, 0x10a9, 0x3, 0x2, + 0x2, 0x2, 0x10a6, 0x10a8, 0x5, 0x2e7, 0x174, 0x2, 0x10a7, 0x10a6, + 0x3, 0x2, 0x2, 0x2, 0x10a8, 0x10ab, 0x3, 0x2, 0x2, 0x2, 0x10a9, 0x10a7, + 0x3, 0x2, 0x2, 0x2, 0x10a9, 0x10aa, 0x3, 0x2, 0x2, 0x2, 0x10aa, 0x116b, + 0x3, 0x2, 0x2, 0x2, 0x10ab, 0x10a9, 0x3, 0x2, 0x2, 0x2, 0x10ac, 0x10ad, + 0x7, 0x44, 0x2, 0x2, 0x10ad, 0x10ae, 0x7, 0x4e, 0x2, 0x2, 0x10ae, + 0x10af, 0x7, 0x47, 0x2, 0x2, 0x10af, 0x10b0, 0x7, 0x50, 0x2, 0x2, + 0x10b0, 0x10b1, 0x7, 0x46, 0x2, 0x2, 0x10b1, 0x10b2, 0x7, 0x4b, 0x2, + 0x2, 0x10b2, 0x10b3, 0x7, 0x50, 0x2, 0x2, 0x10b3, 0x10b4, 0x7, 0x46, + 0x2, 0x2, 0x10b4, 0x10b5, 0x7, 0x4b, 0x2, 0x2, 0x10b5, 0x10b6, 0x7, + 0x45, 0x2, 0x2, 0x10b6, 0x10b7, 0x7, 0x47, 0x2, 0x2, 0x10b7, 0x10b8, + 0x7, 0x55, 0x2, 0x2, 0x10b8, 0x10bc, 0x3, 0x2, 0x2, 0x2, 0x10b9, + 0x10bb, 0x5, 0x2e7, 0x174, 0x2, 0x10ba, 0x10b9, 0x3, 0x2, 0x2, 0x2, + 0x10bb, 0x10be, 0x3, 0x2, 0x2, 0x2, 0x10bc, 0x10ba, 0x3, 0x2, 0x2, + 0x2, 0x10bc, 0x10bd, 0x3, 0x2, 0x2, 0x2, 0x10bd, 0x116b, 0x3, 0x2, + 0x2, 0x2, 0x10be, 0x10bc, 0x3, 0x2, 0x2, 0x2, 0x10bf, 0x10c0, 0x7, + 0x44, 0x2, 0x2, 0x10c0, 0x10c1, 0x7, 0x4e, 0x2, 0x2, 0x10c1, 0x10c2, + 0x7, 0x47, 0x2, 0x2, 0x10c2, 0x10c3, 0x7, 0x50, 0x2, 0x2, 0x10c3, + 0x10c4, 0x7, 0x46, 0x2, 0x2, 0x10c4, 0x10c5, 0x7, 0x59, 0x2, 0x2, + 0x10c5, 0x10c6, 0x7, 0x47, 0x2, 0x2, 0x10c6, 0x10c7, 0x7, 0x4b, 0x2, + 0x2, 0x10c7, 0x10c8, 0x7, 0x49, 0x2, 0x2, 0x10c8, 0x10c9, 0x7, 0x4a, + 0x2, 0x2, 0x10c9, 0x10ca, 0x7, 0x56, 0x2, 0x2, 0x10ca, 0x10ce, 0x3, + 0x2, 0x2, 0x2, 0x10cb, 0x10cd, 0x5, 0x2e7, 0x174, 0x2, 0x10cc, 0x10cb, + 0x3, 0x2, 0x2, 0x2, 0x10cd, 0x10d0, 0x3, 0x2, 0x2, 0x2, 0x10ce, 0x10cc, + 0x3, 0x2, 0x2, 0x2, 0x10ce, 0x10cf, 0x3, 0x2, 0x2, 0x2, 0x10cf, 0x116b, + 0x3, 0x2, 0x2, 0x2, 0x10d0, 0x10ce, 0x3, 0x2, 0x2, 0x2, 0x10d1, 0x10d2, + 0x7, 0x45, 0x2, 0x2, 0x10d2, 0x10d3, 0x7, 0x51, 0x2, 0x2, 0x10d3, + 0x10d4, 0x7, 0x4e, 0x2, 0x2, 0x10d4, 0x10d5, 0x7, 0x51, 0x2, 0x2, + 0x10d5, 0x10d6, 0x7, 0x54, 0x2, 0x2, 0x10d6, 0x10da, 0x3, 0x2, 0x2, + 0x2, 0x10d7, 0x10d9, 0x5, 0x2e7, 0x174, 0x2, 0x10d8, 0x10d7, 0x3, + 0x2, 0x2, 0x2, 0x10d9, 0x10dc, 0x3, 0x2, 0x2, 0x2, 0x10da, 0x10d8, + 0x3, 0x2, 0x2, 0x2, 0x10da, 0x10db, 0x3, 0x2, 0x2, 0x2, 0x10db, 0x116b, + 0x3, 0x2, 0x2, 0x2, 0x10dc, 0x10da, 0x3, 0x2, 0x2, 0x2, 0x10dd, 0x10de, + 0x7, 0x50, 0x2, 0x2, 0x10de, 0x10df, 0x7, 0x51, 0x2, 0x2, 0x10df, + 0x10e0, 0x7, 0x54, 0x2, 0x2, 0x10e0, 0x10e1, 0x7, 0x4f, 0x2, 0x2, + 0x10e1, 0x10e2, 0x7, 0x43, 0x2, 0x2, 0x10e2, 0x10e3, 0x7, 0x4e, 0x2, + 0x2, 0x10e3, 0x10e7, 0x3, 0x2, 0x2, 0x2, 0x10e4, 0x10e6, 0x5, 0x2e7, + 0x174, 0x2, 0x10e5, 0x10e4, 0x3, 0x2, 0x2, 0x2, 0x10e6, 0x10e9, 0x3, + 0x2, 0x2, 0x2, 0x10e7, 0x10e5, 0x3, 0x2, 0x2, 0x2, 0x10e7, 0x10e8, + 0x3, 0x2, 0x2, 0x2, 0x10e8, 0x116b, 0x3, 0x2, 0x2, 0x2, 0x10e9, 0x10e7, + 0x3, 0x2, 0x2, 0x2, 0x10ea, 0x10eb, 0x7, 0x52, 0x2, 0x2, 0x10eb, + 0x10ec, 0x7, 0x51, 0x2, 0x2, 0x10ec, 0x10ed, 0x7, 0x55, 0x2, 0x2, + 0x10ed, 0x10ee, 0x7, 0x4b, 0x2, 0x2, 0x10ee, 0x10ef, 0x7, 0x56, 0x2, + 0x2, 0x10ef, 0x10f0, 0x7, 0x4b, 0x2, 0x2, 0x10f0, 0x10f1, 0x7, 0x51, + 0x2, 0x2, 0x10f1, 0x10f2, 0x7, 0x50, 0x2, 0x2, 0x10f2, 0x10f6, 0x3, + 0x2, 0x2, 0x2, 0x10f3, 0x10f5, 0x5, 0x2e7, 0x174, 0x2, 0x10f4, 0x10f3, + 0x3, 0x2, 0x2, 0x2, 0x10f5, 0x10f8, 0x3, 0x2, 0x2, 0x2, 0x10f6, 0x10f4, + 0x3, 0x2, 0x2, 0x2, 0x10f6, 0x10f7, 0x3, 0x2, 0x2, 0x2, 0x10f7, 0x116b, + 0x3, 0x2, 0x2, 0x2, 0x10f8, 0x10f6, 0x3, 0x2, 0x2, 0x2, 0x10f9, 0x10fa, + 0x7, 0x52, 0x2, 0x2, 0x10fa, 0x10fb, 0x7, 0x51, 0x2, 0x2, 0x10fb, + 0x10fc, 0x7, 0x55, 0x2, 0x2, 0x10fc, 0x10fd, 0x7, 0x4b, 0x2, 0x2, + 0x10fd, 0x10fe, 0x7, 0x56, 0x2, 0x2, 0x10fe, 0x10ff, 0x7, 0x4b, 0x2, + 0x2, 0x10ff, 0x1100, 0x7, 0x51, 0x2, 0x2, 0x1100, 0x1101, 0x7, 0x50, + 0x2, 0x2, 0x1101, 0x116b, 0x7, 0x56, 0x2, 0x2, 0x1102, 0x1103, 0x7, + 0x52, 0x2, 0x2, 0x1103, 0x1104, 0x7, 0x55, 0x2, 0x2, 0x1104, 0x1105, + 0x7, 0x4b, 0x2, 0x2, 0x1105, 0x1106, 0x7, 0x5c, 0x2, 0x2, 0x1106, + 0x1107, 0x7, 0x47, 0x2, 0x2, 0x1107, 0x110b, 0x3, 0x2, 0x2, 0x2, + 0x1108, 0x110a, 0x5, 0x2e7, 0x174, 0x2, 0x1109, 0x1108, 0x3, 0x2, + 0x2, 0x2, 0x110a, 0x110d, 0x3, 0x2, 0x2, 0x2, 0x110b, 0x1109, 0x3, + 0x2, 0x2, 0x2, 0x110b, 0x110c, 0x3, 0x2, 0x2, 0x2, 0x110c, 0x116b, + 0x3, 0x2, 0x2, 0x2, 0x110d, 0x110b, 0x3, 0x2, 0x2, 0x2, 0x110e, 0x110f, + 0x7, 0x56, 0x2, 0x2, 0x110f, 0x1110, 0x7, 0x43, 0x2, 0x2, 0x1110, + 0x1111, 0x7, 0x50, 0x2, 0x2, 0x1111, 0x1112, 0x7, 0x49, 0x2, 0x2, + 0x1112, 0x1113, 0x7, 0x47, 0x2, 0x2, 0x1113, 0x1114, 0x7, 0x50, 0x2, + 0x2, 0x1114, 0x1115, 0x7, 0x56, 0x2, 0x2, 0x1115, 0x1119, 0x3, 0x2, + 0x2, 0x2, 0x1116, 0x1118, 0x5, 0x2e7, 0x174, 0x2, 0x1117, 0x1116, + 0x3, 0x2, 0x2, 0x2, 0x1118, 0x111b, 0x3, 0x2, 0x2, 0x2, 0x1119, 0x1117, + 0x3, 0x2, 0x2, 0x2, 0x1119, 0x111a, 0x3, 0x2, 0x2, 0x2, 0x111a, 0x116b, + 0x3, 0x2, 0x2, 0x2, 0x111b, 0x1119, 0x3, 0x2, 0x2, 0x2, 0x111c, 0x111d, + 0x7, 0x56, 0x2, 0x2, 0x111d, 0x111e, 0x7, 0x47, 0x2, 0x2, 0x111e, + 0x111f, 0x7, 0x5a, 0x2, 0x2, 0x111f, 0x1120, 0x7, 0x45, 0x2, 0x2, + 0x1120, 0x1121, 0x7, 0x51, 0x2, 0x2, 0x1121, 0x1122, 0x7, 0x51, 0x2, + 0x2, 0x1122, 0x1123, 0x7, 0x54, 0x2, 0x2, 0x1123, 0x1124, 0x7, 0x46, + 0x2, 0x2, 0x1124, 0x1128, 0x3, 0x2, 0x2, 0x2, 0x1125, 0x1127, 0x5, + 0x2e7, 0x174, 0x2, 0x1126, 0x1125, 0x3, 0x2, 0x2, 0x2, 0x1127, 0x112a, + 0x3, 0x2, 0x2, 0x2, 0x1128, 0x1126, 0x3, 0x2, 0x2, 0x2, 0x1128, 0x1129, + 0x3, 0x2, 0x2, 0x2, 0x1129, 0x116b, 0x3, 0x2, 0x2, 0x2, 0x112a, 0x1128, + 0x3, 0x2, 0x2, 0x2, 0x112b, 0x112c, 0x7, 0x48, 0x2, 0x2, 0x112c, + 0x112d, 0x7, 0x51, 0x2, 0x2, 0x112d, 0x116b, 0x7, 0x49, 0x2, 0x2, + 0x112e, 0x112f, 0x7, 0x56, 0x2, 0x2, 0x112f, 0x1130, 0x7, 0x47, 0x2, + 0x2, 0x1130, 0x1131, 0x7, 0x55, 0x2, 0x2, 0x1131, 0x1132, 0x7, 0x55, + 0x2, 0x2, 0x1132, 0x1133, 0x7, 0x48, 0x2, 0x2, 0x1133, 0x1134, 0x7, + 0x43, 0x2, 0x2, 0x1134, 0x1135, 0x7, 0x45, 0x2, 0x2, 0x1135, 0x1136, + 0x7, 0x56, 0x2, 0x2, 0x1136, 0x1137, 0x7, 0x51, 0x2, 0x2, 0x1137, + 0x1138, 0x7, 0x54, 0x2, 0x2, 0x1138, 0x113c, 0x3, 0x2, 0x2, 0x2, + 0x1139, 0x113b, 0x5, 0x2e7, 0x174, 0x2, 0x113a, 0x1139, 0x3, 0x2, + 0x2, 0x2, 0x113b, 0x113e, 0x3, 0x2, 0x2, 0x2, 0x113c, 0x113a, 0x3, + 0x2, 0x2, 0x2, 0x113c, 0x113d, 0x3, 0x2, 0x2, 0x2, 0x113d, 0x116b, + 0x3, 0x2, 0x2, 0x2, 0x113e, 0x113c, 0x3, 0x2, 0x2, 0x2, 0x113f, 0x1140, + 0x7, 0x56, 0x2, 0x2, 0x1140, 0x1141, 0x7, 0x47, 0x2, 0x2, 0x1141, + 0x1142, 0x7, 0x5a, 0x2, 0x2, 0x1142, 0x1143, 0x7, 0x45, 0x2, 0x2, + 0x1143, 0x1144, 0x7, 0x51, 0x2, 0x2, 0x1144, 0x1145, 0x7, 0x51, 0x2, + 0x2, 0x1145, 0x1146, 0x7, 0x54, 0x2, 0x2, 0x1146, 0x1147, 0x7, 0x46, + 0x2, 0x2, 0x1147, 0x114b, 0x3, 0x2, 0x2, 0x2, 0x1148, 0x114a, 0x5, + 0x2e7, 0x174, 0x2, 0x1149, 0x1148, 0x3, 0x2, 0x2, 0x2, 0x114a, 0x114d, + 0x3, 0x2, 0x2, 0x2, 0x114b, 0x1149, 0x3, 0x2, 0x2, 0x2, 0x114b, 0x114c, + 0x3, 0x2, 0x2, 0x2, 0x114c, 0x116b, 0x3, 0x2, 0x2, 0x2, 0x114d, 0x114b, + 0x3, 0x2, 0x2, 0x2, 0x114e, 0x114f, 0x7, 0x58, 0x2, 0x2, 0x114f, + 0x1150, 0x7, 0x48, 0x2, 0x2, 0x1150, 0x1151, 0x7, 0x43, 0x2, 0x2, + 0x1151, 0x1152, 0x7, 0x45, 0x2, 0x2, 0x1152, 0x116b, 0x7, 0x47, 0x2, + 0x2, 0x1153, 0x1154, 0x7, 0x58, 0x2, 0x2, 0x1154, 0x1155, 0x7, 0x52, + 0x2, 0x2, 0x1155, 0x1156, 0x7, 0x51, 0x2, 0x2, 0x1156, 0x1157, 0x7, + 0x55, 0x2, 0x2, 0x1157, 0x115b, 0x3, 0x2, 0x2, 0x2, 0x1158, 0x115a, + 0x5, 0x2e7, 0x174, 0x2, 0x1159, 0x1158, 0x3, 0x2, 0x2, 0x2, 0x115a, + 0x115d, 0x3, 0x2, 0x2, 0x2, 0x115b, 0x1159, 0x3, 0x2, 0x2, 0x2, 0x115b, + 0x115c, 0x3, 0x2, 0x2, 0x2, 0x115c, 0x116b, 0x3, 0x2, 0x2, 0x2, 0x115d, + 0x115b, 0x3, 0x2, 0x2, 0x2, 0x115e, 0x115f, 0x7, 0x46, 0x2, 0x2, + 0x115f, 0x1160, 0x7, 0x47, 0x2, 0x2, 0x1160, 0x1161, 0x7, 0x52, 0x2, + 0x2, 0x1161, 0x1162, 0x7, 0x56, 0x2, 0x2, 0x1162, 0x1163, 0x7, 0x4a, + 0x2, 0x2, 0x1163, 0x1167, 0x3, 0x2, 0x2, 0x2, 0x1164, 0x1166, 0x5, + 0x2e7, 0x174, 0x2, 0x1165, 0x1164, 0x3, 0x2, 0x2, 0x2, 0x1166, 0x1169, + 0x3, 0x2, 0x2, 0x2, 0x1167, 0x1165, 0x3, 0x2, 0x2, 0x2, 0x1167, 0x1168, + 0x3, 0x2, 0x2, 0x2, 0x1168, 0x116b, 0x3, 0x2, 0x2, 0x2, 0x1169, 0x1167, + 0x3, 0x2, 0x2, 0x2, 0x116a, 0x109d, 0x3, 0x2, 0x2, 0x2, 0x116a, 0x10ac, + 0x3, 0x2, 0x2, 0x2, 0x116a, 0x10bf, 0x3, 0x2, 0x2, 0x2, 0x116a, 0x10d1, + 0x3, 0x2, 0x2, 0x2, 0x116a, 0x10dd, 0x3, 0x2, 0x2, 0x2, 0x116a, 0x10ea, + 0x3, 0x2, 0x2, 0x2, 0x116a, 0x10f9, 0x3, 0x2, 0x2, 0x2, 0x116a, 0x1102, + 0x3, 0x2, 0x2, 0x2, 0x116a, 0x110e, 0x3, 0x2, 0x2, 0x2, 0x116a, 0x111c, + 0x3, 0x2, 0x2, 0x2, 0x116a, 0x112b, 0x3, 0x2, 0x2, 0x2, 0x116a, 0x112e, + 0x3, 0x2, 0x2, 0x2, 0x116a, 0x113f, 0x3, 0x2, 0x2, 0x2, 0x116a, 0x114e, + 0x3, 0x2, 0x2, 0x2, 0x116a, 0x1153, 0x3, 0x2, 0x2, 0x2, 0x116a, 0x115e, + 0x3, 0x2, 0x2, 0x2, 0x116b, 0x2e0, 0x3, 0x2, 0x2, 0x2, 0x116c, 0x116d, + 0x7, 0x55, 0x2, 0x2, 0x116d, 0x116e, 0x7, 0x58, 0x2, 0x2, 0x116e, + 0x116f, 0x7, 0x61, 0x2, 0x2, 0x116f, 0x1174, 0x3, 0x2, 0x2, 0x2, + 0x1170, 0x1173, 0x5, 0x2e5, 0x173, 0x2, 0x1171, 0x1173, 0x5, 0x2e7, + 0x174, 0x2, 0x1172, 0x1170, 0x3, 0x2, 0x2, 0x2, 0x1172, 0x1171, 0x3, + 0x2, 0x2, 0x2, 0x1173, 0x1176, 0x3, 0x2, 0x2, 0x2, 0x1174, 0x1172, + 0x3, 0x2, 0x2, 0x2, 0x1174, 0x1175, 0x3, 0x2, 0x2, 0x2, 0x1175, 0x1199, + 0x3, 0x2, 0x2, 0x2, 0x1176, 0x1174, 0x3, 0x2, 0x2, 0x2, 0x1177, 0x1178, + 0x7, 0x55, 0x2, 0x2, 0x1178, 0x1179, 0x7, 0x78, 0x2, 0x2, 0x1179, + 0x117a, 0x7, 0x61, 0x2, 0x2, 0x117a, 0x117f, 0x3, 0x2, 0x2, 0x2, + 0x117b, 0x117e, 0x5, 0x2e5, 0x173, 0x2, 0x117c, 0x117e, 0x5, 0x2e7, + 0x174, 0x2, 0x117d, 0x117b, 0x3, 0x2, 0x2, 0x2, 0x117d, 0x117c, 0x3, + 0x2, 0x2, 0x2, 0x117e, 0x1181, 0x3, 0x2, 0x2, 0x2, 0x117f, 0x117d, + 0x3, 0x2, 0x2, 0x2, 0x117f, 0x1180, 0x3, 0x2, 0x2, 0x2, 0x1180, 0x1199, + 0x3, 0x2, 0x2, 0x2, 0x1181, 0x117f, 0x3, 0x2, 0x2, 0x2, 0x1182, 0x1183, + 0x7, 0x75, 0x2, 0x2, 0x1183, 0x1184, 0x7, 0x58, 0x2, 0x2, 0x1184, + 0x1185, 0x7, 0x61, 0x2, 0x2, 0x1185, 0x118a, 0x3, 0x2, 0x2, 0x2, + 0x1186, 0x1189, 0x5, 0x2e5, 0x173, 0x2, 0x1187, 0x1189, 0x5, 0x2e7, + 0x174, 0x2, 0x1188, 0x1186, 0x3, 0x2, 0x2, 0x2, 0x1188, 0x1187, 0x3, + 0x2, 0x2, 0x2, 0x1189, 0x118c, 0x3, 0x2, 0x2, 0x2, 0x118a, 0x1188, + 0x3, 0x2, 0x2, 0x2, 0x118a, 0x118b, 0x3, 0x2, 0x2, 0x2, 0x118b, 0x1199, + 0x3, 0x2, 0x2, 0x2, 0x118c, 0x118a, 0x3, 0x2, 0x2, 0x2, 0x118d, 0x118e, + 0x7, 0x75, 0x2, 0x2, 0x118e, 0x118f, 0x7, 0x78, 0x2, 0x2, 0x118f, + 0x1190, 0x7, 0x61, 0x2, 0x2, 0x1190, 0x1195, 0x3, 0x2, 0x2, 0x2, + 0x1191, 0x1194, 0x5, 0x2e5, 0x173, 0x2, 0x1192, 0x1194, 0x5, 0x2e7, + 0x174, 0x2, 0x1193, 0x1191, 0x3, 0x2, 0x2, 0x2, 0x1193, 0x1192, 0x3, + 0x2, 0x2, 0x2, 0x1194, 0x1197, 0x3, 0x2, 0x2, 0x2, 0x1195, 0x1193, + 0x3, 0x2, 0x2, 0x2, 0x1195, 0x1196, 0x3, 0x2, 0x2, 0x2, 0x1196, 0x1199, + 0x3, 0x2, 0x2, 0x2, 0x1197, 0x1195, 0x3, 0x2, 0x2, 0x2, 0x1198, 0x116c, + 0x3, 0x2, 0x2, 0x2, 0x1198, 0x1177, 0x3, 0x2, 0x2, 0x2, 0x1198, 0x1182, + 0x3, 0x2, 0x2, 0x2, 0x1198, 0x118d, 0x3, 0x2, 0x2, 0x2, 0x1199, 0x2e2, + 0x3, 0x2, 0x2, 0x2, 0x119a, 0x119f, 0x5, 0x2e5, 0x173, 0x2, 0x119b, + 0x119e, 0x5, 0x2e5, 0x173, 0x2, 0x119c, 0x119e, 0x5, 0x2e7, 0x174, + 0x2, 0x119d, 0x119b, 0x3, 0x2, 0x2, 0x2, 0x119d, 0x119c, 0x3, 0x2, + 0x2, 0x2, 0x119e, 0x11a1, 0x3, 0x2, 0x2, 0x2, 0x119f, 0x119d, 0x3, + 0x2, 0x2, 0x2, 0x119f, 0x11a0, 0x3, 0x2, 0x2, 0x2, 0x11a0, 0x2e4, + 0x3, 0x2, 0x2, 0x2, 0x11a1, 0x119f, 0x3, 0x2, 0x2, 0x2, 0x11a2, 0x11a3, + 0x9, 0x2, 0x2, 0x2, 0x11a3, 0x2e6, 0x3, 0x2, 0x2, 0x2, 0x11a4, 0x11a5, + 0x9, 0x3, 0x2, 0x2, 0x11a5, 0x2e8, 0x3, 0x2, 0x2, 0x2, 0x11a6, 0x11a8, + 0x5, 0x2e7, 0x174, 0x2, 0x11a7, 0x11a6, 0x3, 0x2, 0x2, 0x2, 0x11a8, + 0x11a9, 0x3, 0x2, 0x2, 0x2, 0x11a9, 0x11a7, 0x3, 0x2, 0x2, 0x2, 0x11a9, + 0x11aa, 0x3, 0x2, 0x2, 0x2, 0x11aa, 0x2ea, 0x3, 0x2, 0x2, 0x2, 0x11ab, + 0x11ac, 0x7, 0x32, 0x2, 0x2, 0x11ac, 0x11b0, 0x7, 0x7a, 0x2, 0x2, + 0x11ad, 0x11ae, 0x7, 0x32, 0x2, 0x2, 0x11ae, 0x11b0, 0x7, 0x5a, 0x2, + 0x2, 0x11af, 0x11ab, 0x3, 0x2, 0x2, 0x2, 0x11af, 0x11ad, 0x3, 0x2, + 0x2, 0x2, 0x11b0, 0x11b2, 0x3, 0x2, 0x2, 0x2, 0x11b1, 0x11b3, 0x5, + 0x2ed, 0x177, 0x2, 0x11b2, 0x11b1, 0x3, 0x2, 0x2, 0x2, 0x11b3, 0x11b4, + 0x3, 0x2, 0x2, 0x2, 0x11b4, 0x11b2, 0x3, 0x2, 0x2, 0x2, 0x11b4, 0x11b5, + 0x3, 0x2, 0x2, 0x2, 0x11b5, 0x2ec, 0x3, 0x2, 0x2, 0x2, 0x11b6, 0x11b7, + 0x9, 0x4, 0x2, 0x2, 0x11b7, 0x2ee, 0x3, 0x2, 0x2, 0x2, 0x11b8, 0x11ba, + 0x5, 0x2f5, 0x17b, 0x2, 0x11b9, 0x11b8, 0x3, 0x2, 0x2, 0x2, 0x11b9, + 0x11ba, 0x3, 0x2, 0x2, 0x2, 0x11ba, 0x11bb, 0x3, 0x2, 0x2, 0x2, 0x11bb, + 0x11bc, 0x7, 0x30, 0x2, 0x2, 0x11bc, 0x11c1, 0x5, 0x2f5, 0x17b, 0x2, + 0x11bd, 0x11be, 0x5, 0x2f5, 0x17b, 0x2, 0x11be, 0x11bf, 0x7, 0x30, + 0x2, 0x2, 0x11bf, 0x11c1, 0x3, 0x2, 0x2, 0x2, 0x11c0, 0x11b9, 0x3, + 0x2, 0x2, 0x2, 0x11c0, 0x11bd, 0x3, 0x2, 0x2, 0x2, 0x11c1, 0x2f0, + 0x3, 0x2, 0x2, 0x2, 0x11c2, 0x11c4, 0x7, 0x67, 0x2, 0x2, 0x11c3, + 0x11c5, 0x5, 0x2f3, 0x17a, 0x2, 0x11c4, 0x11c3, 0x3, 0x2, 0x2, 0x2, 0x11c4, 0x11c5, 0x3, 0x2, 0x2, 0x2, 0x11c5, 0x11c6, 0x3, 0x2, 0x2, - 0x2, 0x11c6, 0x11c7, 0x7, 0x72, 0x2, 0x2, 0x11c7, 0x11c8, 0x7, 0x74, - 0x2, 0x2, 0x11c8, 0x11c9, 0x7, 0x63, 0x2, 0x2, 0x11c9, 0x11ca, 0x7, - 0x69, 0x2, 0x2, 0x11ca, 0x11cb, 0x7, 0x6f, 0x2, 0x2, 0x11cb, 0x11cc, - 0x7, 0x63, 0x2, 0x2, 0x11cc, 0x11cd, 0x3, 0x2, 0x2, 0x2, 0x11cd, - 0x11d1, 0x5, 0x2ff, 0x180, 0x2, 0x11ce, 0x11d0, 0xa, 0xb, 0x2, 0x2, - 0x11cf, 0x11ce, 0x3, 0x2, 0x2, 0x2, 0x11d0, 0x11d3, 0x3, 0x2, 0x2, - 0x2, 0x11d1, 0x11cf, 0x3, 0x2, 0x2, 0x2, 0x11d1, 0x11d2, 0x3, 0x2, - 0x2, 0x2, 0x11d2, 0x11d4, 0x3, 0x2, 0x2, 0x2, 0x11d3, 0x11d1, 0x3, - 0x2, 0x2, 0x2, 0x11d4, 0x11d5, 0x8, 0x17e, 0x2, 0x2, 0x11d5, 0x2fc, - 0x3, 0x2, 0x2, 0x2, 0x11d6, 0x11d8, 0x7, 0x25, 0x2, 0x2, 0x11d7, - 0x11d9, 0x5, 0x2ff, 0x180, 0x2, 0x11d8, 0x11d7, 0x3, 0x2, 0x2, 0x2, - 0x11d8, 0x11d9, 0x3, 0x2, 0x2, 0x2, 0x11d9, 0x11e0, 0x3, 0x2, 0x2, - 0x2, 0x11da, 0x11db, 0x7, 0x6e, 0x2, 0x2, 0x11db, 0x11dc, 0x7, 0x6b, - 0x2, 0x2, 0x11dc, 0x11dd, 0x7, 0x70, 0x2, 0x2, 0x11dd, 0x11de, 0x7, - 0x67, 0x2, 0x2, 0x11de, 0x11df, 0x3, 0x2, 0x2, 0x2, 0x11df, 0x11e1, - 0x5, 0x2ff, 0x180, 0x2, 0x11e0, 0x11da, 0x3, 0x2, 0x2, 0x2, 0x11e0, - 0x11e1, 0x3, 0x2, 0x2, 0x2, 0x11e1, 0x11e2, 0x3, 0x2, 0x2, 0x2, 0x11e2, - 0x11e4, 0x5, 0x2eb, 0x176, 0x2, 0x11e3, 0x11e5, 0x5, 0x2ff, 0x180, - 0x2, 0x11e4, 0x11e3, 0x3, 0x2, 0x2, 0x2, 0x11e4, 0x11e5, 0x3, 0x2, - 0x2, 0x2, 0x11e5, 0x11e7, 0x3, 0x2, 0x2, 0x2, 0x11e6, 0x11e8, 0x5, - 0x2f5, 0x17b, 0x2, 0x11e7, 0x11e6, 0x3, 0x2, 0x2, 0x2, 0x11e7, 0x11e8, - 0x3, 0x2, 0x2, 0x2, 0x11e8, 0x11e9, 0x3, 0x2, 0x2, 0x2, 0x11e9, 0x11ea, - 0x8, 0x17f, 0x2, 0x2, 0x11ea, 0x2fe, 0x3, 0x2, 0x2, 0x2, 0x11eb, - 0x11ed, 0x9, 0xc, 0x2, 0x2, 0x11ec, 0x11eb, 0x3, 0x2, 0x2, 0x2, 0x11ed, - 0x11ee, 0x3, 0x2, 0x2, 0x2, 0x11ee, 0x11ec, 0x3, 0x2, 0x2, 0x2, 0x11ee, - 0x11ef, 0x3, 0x2, 0x2, 0x2, 0x11ef, 0x11f0, 0x3, 0x2, 0x2, 0x2, 0x11f0, - 0x11f1, 0x8, 0x180, 0x3, 0x2, 0x11f1, 0x300, 0x3, 0x2, 0x2, 0x2, - 0x11f2, 0x11f4, 0x7, 0xf, 0x2, 0x2, 0x11f3, 0x11f5, 0x7, 0xc, 0x2, - 0x2, 0x11f4, 0x11f3, 0x3, 0x2, 0x2, 0x2, 0x11f4, 0x11f5, 0x3, 0x2, - 0x2, 0x2, 0x11f5, 0x11f8, 0x3, 0x2, 0x2, 0x2, 0x11f6, 0x11f8, 0x7, - 0xc, 0x2, 0x2, 0x11f7, 0x11f2, 0x3, 0x2, 0x2, 0x2, 0x11f7, 0x11f6, - 0x3, 0x2, 0x2, 0x2, 0x11f8, 0x11f9, 0x3, 0x2, 0x2, 0x2, 0x11f9, 0x11fa, - 0x8, 0x181, 0x3, 0x2, 0x11fa, 0x302, 0x3, 0x2, 0x2, 0x2, 0x11fb, - 0x11fc, 0x7, 0x31, 0x2, 0x2, 0x11fc, 0x11fd, 0x7, 0x2c, 0x2, 0x2, - 0x11fd, 0x1201, 0x3, 0x2, 0x2, 0x2, 0x11fe, 0x1200, 0xb, 0x2, 0x2, - 0x2, 0x11ff, 0x11fe, 0x3, 0x2, 0x2, 0x2, 0x1200, 0x1203, 0x3, 0x2, - 0x2, 0x2, 0x1201, 0x1202, 0x3, 0x2, 0x2, 0x2, 0x1201, 0x11ff, 0x3, - 0x2, 0x2, 0x2, 0x1202, 0x1204, 0x3, 0x2, 0x2, 0x2, 0x1203, 0x1201, - 0x3, 0x2, 0x2, 0x2, 0x1204, 0x1205, 0x7, 0x2c, 0x2, 0x2, 0x1205, - 0x1206, 0x7, 0x31, 0x2, 0x2, 0x1206, 0x1207, 0x3, 0x2, 0x2, 0x2, - 0x1207, 0x1208, 0x8, 0x182, 0x4, 0x2, 0x1208, 0x304, 0x3, 0x2, 0x2, - 0x2, 0x1209, 0x120a, 0x7, 0x31, 0x2, 0x2, 0x120a, 0x120b, 0x7, 0x31, - 0x2, 0x2, 0x120b, 0x120f, 0x3, 0x2, 0x2, 0x2, 0x120c, 0x120e, 0xa, - 0xb, 0x2, 0x2, 0x120d, 0x120c, 0x3, 0x2, 0x2, 0x2, 0x120e, 0x1211, - 0x3, 0x2, 0x2, 0x2, 0x120f, 0x120d, 0x3, 0x2, 0x2, 0x2, 0x120f, 0x1210, - 0x3, 0x2, 0x2, 0x2, 0x1210, 0x1212, 0x3, 0x2, 0x2, 0x2, 0x1211, 0x120f, - 0x3, 0x2, 0x2, 0x2, 0x1212, 0x1213, 0x8, 0x183, 0x4, 0x2, 0x1213, - 0x306, 0x3, 0x2, 0x2, 0x2, 0x42, 0x2, 0x70d, 0x1052, 0x1065, 0x1077, - 0x1083, 0x1090, 0x109f, 0x10b4, 0x10c2, 0x10d1, 0x10e5, 0x10f4, 0x1104, - 0x1110, 0x1113, 0x111b, 0x111d, 0x1126, 0x1128, 0x1131, 0x1133, 0x113c, - 0x113e, 0x1141, 0x1146, 0x1148, 0x1152, 0x1158, 0x115d, 0x1162, 0x1169, - 0x116d, 0x1172, 0x1175, 0x117c, 0x1181, 0x1184, 0x1187, 0x118a, 0x118d, - 0x1190, 0x1192, 0x1196, 0x119a, 0x119c, 0x11a2, 0x11a5, 0x11aa, 0x11ac, - 0x11b5, 0x11bc, 0x11c0, 0x11c4, 0x11d1, 0x11d8, 0x11e0, 0x11e4, 0x11e7, - 0x11ee, 0x11f4, 0x11f7, 0x1201, 0x120f, 0x5, 0x2, 0x4, 0x2, 0x8, - 0x2, 0x2, 0x2, 0x3, 0x2, + 0x2, 0x11c6, 0x11cd, 0x5, 0x2f5, 0x17b, 0x2, 0x11c7, 0x11c9, 0x7, + 0x47, 0x2, 0x2, 0x11c8, 0x11ca, 0x5, 0x2f3, 0x17a, 0x2, 0x11c9, 0x11c8, + 0x3, 0x2, 0x2, 0x2, 0x11c9, 0x11ca, 0x3, 0x2, 0x2, 0x2, 0x11ca, 0x11cb, + 0x3, 0x2, 0x2, 0x2, 0x11cb, 0x11cd, 0x5, 0x2f5, 0x17b, 0x2, 0x11cc, + 0x11c2, 0x3, 0x2, 0x2, 0x2, 0x11cc, 0x11c7, 0x3, 0x2, 0x2, 0x2, 0x11cd, + 0x2f2, 0x3, 0x2, 0x2, 0x2, 0x11ce, 0x11cf, 0x9, 0x5, 0x2, 0x2, 0x11cf, + 0x2f4, 0x3, 0x2, 0x2, 0x2, 0x11d0, 0x11d2, 0x5, 0x2e7, 0x174, 0x2, + 0x11d1, 0x11d0, 0x3, 0x2, 0x2, 0x2, 0x11d2, 0x11d3, 0x3, 0x2, 0x2, + 0x2, 0x11d3, 0x11d1, 0x3, 0x2, 0x2, 0x2, 0x11d3, 0x11d4, 0x3, 0x2, + 0x2, 0x2, 0x11d4, 0x2f6, 0x3, 0x2, 0x2, 0x2, 0x11d5, 0x11d7, 0x5, + 0x2ed, 0x177, 0x2, 0x11d6, 0x11d5, 0x3, 0x2, 0x2, 0x2, 0x11d7, 0x11d8, + 0x3, 0x2, 0x2, 0x2, 0x11d8, 0x11d6, 0x3, 0x2, 0x2, 0x2, 0x11d8, 0x11d9, + 0x3, 0x2, 0x2, 0x2, 0x11d9, 0x2f8, 0x3, 0x2, 0x2, 0x2, 0x11da, 0x11dc, + 0x9, 0x6, 0x2, 0x2, 0x11db, 0x11da, 0x3, 0x2, 0x2, 0x2, 0x11db, 0x11dc, + 0x3, 0x2, 0x2, 0x2, 0x11dc, 0x11de, 0x3, 0x2, 0x2, 0x2, 0x11dd, 0x11df, + 0x9, 0x7, 0x2, 0x2, 0x11de, 0x11dd, 0x3, 0x2, 0x2, 0x2, 0x11de, 0x11df, + 0x3, 0x2, 0x2, 0x2, 0x11df, 0x11e1, 0x3, 0x2, 0x2, 0x2, 0x11e0, 0x11e2, + 0x9, 0x7, 0x2, 0x2, 0x11e1, 0x11e0, 0x3, 0x2, 0x2, 0x2, 0x11e1, 0x11e2, + 0x3, 0x2, 0x2, 0x2, 0x11e2, 0x11ea, 0x3, 0x2, 0x2, 0x2, 0x11e3, 0x11e5, + 0x9, 0x7, 0x2, 0x2, 0x11e4, 0x11e3, 0x3, 0x2, 0x2, 0x2, 0x11e4, 0x11e5, + 0x3, 0x2, 0x2, 0x2, 0x11e5, 0x11e7, 0x3, 0x2, 0x2, 0x2, 0x11e6, 0x11e8, + 0x9, 0x6, 0x2, 0x2, 0x11e7, 0x11e6, 0x3, 0x2, 0x2, 0x2, 0x11e7, 0x11e8, + 0x3, 0x2, 0x2, 0x2, 0x11e8, 0x11ea, 0x3, 0x2, 0x2, 0x2, 0x11e9, 0x11db, + 0x3, 0x2, 0x2, 0x2, 0x11e9, 0x11e4, 0x3, 0x2, 0x2, 0x2, 0x11ea, 0x2fa, + 0x3, 0x2, 0x2, 0x2, 0x11eb, 0x11ed, 0x5, 0x2e9, 0x175, 0x2, 0x11ec, + 0x11ee, 0x5, 0x2f9, 0x17d, 0x2, 0x11ed, 0x11ec, 0x3, 0x2, 0x2, 0x2, + 0x11ed, 0x11ee, 0x3, 0x2, 0x2, 0x2, 0x11ee, 0x11f4, 0x3, 0x2, 0x2, + 0x2, 0x11ef, 0x11f1, 0x5, 0x2eb, 0x176, 0x2, 0x11f0, 0x11f2, 0x5, + 0x2f9, 0x17d, 0x2, 0x11f1, 0x11f0, 0x3, 0x2, 0x2, 0x2, 0x11f1, 0x11f2, + 0x3, 0x2, 0x2, 0x2, 0x11f2, 0x11f4, 0x3, 0x2, 0x2, 0x2, 0x11f3, 0x11eb, + 0x3, 0x2, 0x2, 0x2, 0x11f3, 0x11ef, 0x3, 0x2, 0x2, 0x2, 0x11f4, 0x2fc, + 0x3, 0x2, 0x2, 0x2, 0x11f5, 0x11f6, 0x9, 0x8, 0x2, 0x2, 0x11f6, 0x2fe, + 0x3, 0x2, 0x2, 0x2, 0x11f7, 0x11f9, 0x5, 0x2ef, 0x178, 0x2, 0x11f8, + 0x11fa, 0x5, 0x2f1, 0x179, 0x2, 0x11f9, 0x11f8, 0x3, 0x2, 0x2, 0x2, + 0x11f9, 0x11fa, 0x3, 0x2, 0x2, 0x2, 0x11fa, 0x11fc, 0x3, 0x2, 0x2, + 0x2, 0x11fb, 0x11fd, 0x5, 0x2fd, 0x17f, 0x2, 0x11fc, 0x11fb, 0x3, + 0x2, 0x2, 0x2, 0x11fc, 0x11fd, 0x3, 0x2, 0x2, 0x2, 0x11fd, 0x1204, + 0x3, 0x2, 0x2, 0x2, 0x11fe, 0x11ff, 0x5, 0x2f5, 0x17b, 0x2, 0x11ff, + 0x1201, 0x5, 0x2f1, 0x179, 0x2, 0x1200, 0x1202, 0x5, 0x2fd, 0x17f, + 0x2, 0x1201, 0x1200, 0x3, 0x2, 0x2, 0x2, 0x1201, 0x1202, 0x3, 0x2, + 0x2, 0x2, 0x1202, 0x1204, 0x3, 0x2, 0x2, 0x2, 0x1203, 0x11f7, 0x3, + 0x2, 0x2, 0x2, 0x1203, 0x11fe, 0x3, 0x2, 0x2, 0x2, 0x1204, 0x300, + 0x3, 0x2, 0x2, 0x2, 0x1205, 0x1206, 0x5, 0x303, 0x182, 0x2, 0x1206, + 0x302, 0x3, 0x2, 0x2, 0x2, 0x1207, 0x1208, 0x7, 0x5e, 0x2, 0x2, 0x1208, + 0x1209, 0x9, 0x9, 0x2, 0x2, 0x1209, 0x304, 0x3, 0x2, 0x2, 0x2, 0x120a, + 0x120c, 0x7, 0x24, 0x2, 0x2, 0x120b, 0x120d, 0x5, 0x307, 0x184, 0x2, + 0x120c, 0x120b, 0x3, 0x2, 0x2, 0x2, 0x120c, 0x120d, 0x3, 0x2, 0x2, + 0x2, 0x120d, 0x120e, 0x3, 0x2, 0x2, 0x2, 0x120e, 0x120f, 0x7, 0x24, + 0x2, 0x2, 0x120f, 0x306, 0x3, 0x2, 0x2, 0x2, 0x1210, 0x1212, 0x5, + 0x309, 0x185, 0x2, 0x1211, 0x1210, 0x3, 0x2, 0x2, 0x2, 0x1212, 0x1213, + 0x3, 0x2, 0x2, 0x2, 0x1213, 0x1211, 0x3, 0x2, 0x2, 0x2, 0x1213, 0x1214, + 0x3, 0x2, 0x2, 0x2, 0x1214, 0x308, 0x3, 0x2, 0x2, 0x2, 0x1215, 0x1218, + 0xa, 0xa, 0x2, 0x2, 0x1216, 0x1218, 0x5, 0x301, 0x181, 0x2, 0x1217, + 0x1215, 0x3, 0x2, 0x2, 0x2, 0x1217, 0x1216, 0x3, 0x2, 0x2, 0x2, 0x1218, + 0x30a, 0x3, 0x2, 0x2, 0x2, 0x1219, 0x121b, 0x7, 0x25, 0x2, 0x2, 0x121a, + 0x121c, 0x5, 0x30f, 0x188, 0x2, 0x121b, 0x121a, 0x3, 0x2, 0x2, 0x2, + 0x121b, 0x121c, 0x3, 0x2, 0x2, 0x2, 0x121c, 0x121d, 0x3, 0x2, 0x2, + 0x2, 0x121d, 0x121e, 0x7, 0x72, 0x2, 0x2, 0x121e, 0x121f, 0x7, 0x74, + 0x2, 0x2, 0x121f, 0x1220, 0x7, 0x63, 0x2, 0x2, 0x1220, 0x1221, 0x7, + 0x69, 0x2, 0x2, 0x1221, 0x1222, 0x7, 0x6f, 0x2, 0x2, 0x1222, 0x1223, + 0x7, 0x63, 0x2, 0x2, 0x1223, 0x1224, 0x3, 0x2, 0x2, 0x2, 0x1224, + 0x1228, 0x5, 0x30f, 0x188, 0x2, 0x1225, 0x1227, 0xa, 0xb, 0x2, 0x2, + 0x1226, 0x1225, 0x3, 0x2, 0x2, 0x2, 0x1227, 0x122a, 0x3, 0x2, 0x2, + 0x2, 0x1228, 0x1226, 0x3, 0x2, 0x2, 0x2, 0x1228, 0x1229, 0x3, 0x2, + 0x2, 0x2, 0x1229, 0x122b, 0x3, 0x2, 0x2, 0x2, 0x122a, 0x1228, 0x3, + 0x2, 0x2, 0x2, 0x122b, 0x122c, 0x8, 0x186, 0x2, 0x2, 0x122c, 0x30c, + 0x3, 0x2, 0x2, 0x2, 0x122d, 0x122f, 0x7, 0x25, 0x2, 0x2, 0x122e, + 0x1230, 0x5, 0x30f, 0x188, 0x2, 0x122f, 0x122e, 0x3, 0x2, 0x2, 0x2, + 0x122f, 0x1230, 0x3, 0x2, 0x2, 0x2, 0x1230, 0x1237, 0x3, 0x2, 0x2, + 0x2, 0x1231, 0x1232, 0x7, 0x6e, 0x2, 0x2, 0x1232, 0x1233, 0x7, 0x6b, + 0x2, 0x2, 0x1233, 0x1234, 0x7, 0x70, 0x2, 0x2, 0x1234, 0x1235, 0x7, + 0x67, 0x2, 0x2, 0x1235, 0x1236, 0x3, 0x2, 0x2, 0x2, 0x1236, 0x1238, + 0x5, 0x30f, 0x188, 0x2, 0x1237, 0x1231, 0x3, 0x2, 0x2, 0x2, 0x1237, + 0x1238, 0x3, 0x2, 0x2, 0x2, 0x1238, 0x1239, 0x3, 0x2, 0x2, 0x2, 0x1239, + 0x123b, 0x5, 0x2fb, 0x17e, 0x2, 0x123a, 0x123c, 0x5, 0x30f, 0x188, + 0x2, 0x123b, 0x123a, 0x3, 0x2, 0x2, 0x2, 0x123b, 0x123c, 0x3, 0x2, + 0x2, 0x2, 0x123c, 0x123e, 0x3, 0x2, 0x2, 0x2, 0x123d, 0x123f, 0x5, + 0x305, 0x183, 0x2, 0x123e, 0x123d, 0x3, 0x2, 0x2, 0x2, 0x123e, 0x123f, + 0x3, 0x2, 0x2, 0x2, 0x123f, 0x1240, 0x3, 0x2, 0x2, 0x2, 0x1240, 0x1241, + 0x8, 0x187, 0x2, 0x2, 0x1241, 0x30e, 0x3, 0x2, 0x2, 0x2, 0x1242, + 0x1244, 0x9, 0xc, 0x2, 0x2, 0x1243, 0x1242, 0x3, 0x2, 0x2, 0x2, 0x1244, + 0x1245, 0x3, 0x2, 0x2, 0x2, 0x1245, 0x1243, 0x3, 0x2, 0x2, 0x2, 0x1245, + 0x1246, 0x3, 0x2, 0x2, 0x2, 0x1246, 0x1247, 0x3, 0x2, 0x2, 0x2, 0x1247, + 0x1248, 0x8, 0x188, 0x3, 0x2, 0x1248, 0x310, 0x3, 0x2, 0x2, 0x2, + 0x1249, 0x124b, 0x7, 0xf, 0x2, 0x2, 0x124a, 0x124c, 0x7, 0xc, 0x2, + 0x2, 0x124b, 0x124a, 0x3, 0x2, 0x2, 0x2, 0x124b, 0x124c, 0x3, 0x2, + 0x2, 0x2, 0x124c, 0x124f, 0x3, 0x2, 0x2, 0x2, 0x124d, 0x124f, 0x7, + 0xc, 0x2, 0x2, 0x124e, 0x1249, 0x3, 0x2, 0x2, 0x2, 0x124e, 0x124d, + 0x3, 0x2, 0x2, 0x2, 0x124f, 0x1250, 0x3, 0x2, 0x2, 0x2, 0x1250, 0x1251, + 0x8, 0x189, 0x3, 0x2, 0x1251, 0x312, 0x3, 0x2, 0x2, 0x2, 0x1252, + 0x1253, 0x7, 0x31, 0x2, 0x2, 0x1253, 0x1254, 0x7, 0x2c, 0x2, 0x2, + 0x1254, 0x1258, 0x3, 0x2, 0x2, 0x2, 0x1255, 0x1257, 0xb, 0x2, 0x2, + 0x2, 0x1256, 0x1255, 0x3, 0x2, 0x2, 0x2, 0x1257, 0x125a, 0x3, 0x2, + 0x2, 0x2, 0x1258, 0x1259, 0x3, 0x2, 0x2, 0x2, 0x1258, 0x1256, 0x3, + 0x2, 0x2, 0x2, 0x1259, 0x125b, 0x3, 0x2, 0x2, 0x2, 0x125a, 0x1258, + 0x3, 0x2, 0x2, 0x2, 0x125b, 0x125c, 0x7, 0x2c, 0x2, 0x2, 0x125c, + 0x125d, 0x7, 0x31, 0x2, 0x2, 0x125d, 0x125e, 0x3, 0x2, 0x2, 0x2, + 0x125e, 0x125f, 0x8, 0x18a, 0x4, 0x2, 0x125f, 0x314, 0x3, 0x2, 0x2, + 0x2, 0x1260, 0x1261, 0x7, 0x31, 0x2, 0x2, 0x1261, 0x1262, 0x7, 0x31, + 0x2, 0x2, 0x1262, 0x1266, 0x3, 0x2, 0x2, 0x2, 0x1263, 0x1265, 0xa, + 0xb, 0x2, 0x2, 0x1264, 0x1263, 0x3, 0x2, 0x2, 0x2, 0x1265, 0x1268, + 0x3, 0x2, 0x2, 0x2, 0x1266, 0x1264, 0x3, 0x2, 0x2, 0x2, 0x1266, 0x1267, + 0x3, 0x2, 0x2, 0x2, 0x1267, 0x1269, 0x3, 0x2, 0x2, 0x2, 0x1268, 0x1266, + 0x3, 0x2, 0x2, 0x2, 0x1269, 0x126a, 0x8, 0x18b, 0x4, 0x2, 0x126a, + 0x316, 0x3, 0x2, 0x2, 0x2, 0x42, 0x2, 0x735, 0x10a9, 0x10bc, 0x10ce, + 0x10da, 0x10e7, 0x10f6, 0x110b, 0x1119, 0x1128, 0x113c, 0x114b, 0x115b, + 0x1167, 0x116a, 0x1172, 0x1174, 0x117d, 0x117f, 0x1188, 0x118a, 0x1193, + 0x1195, 0x1198, 0x119d, 0x119f, 0x11a9, 0x11af, 0x11b4, 0x11b9, 0x11c0, + 0x11c4, 0x11c9, 0x11cc, 0x11d3, 0x11d8, 0x11db, 0x11de, 0x11e1, 0x11e4, + 0x11e7, 0x11e9, 0x11ed, 0x11f1, 0x11f3, 0x11f9, 0x11fc, 0x1201, 0x1203, + 0x120c, 0x1213, 0x1217, 0x121b, 0x1228, 0x122f, 0x1237, 0x123b, 0x123e, + 0x1245, 0x124b, 0x124e, 0x1258, 0x1266, 0x5, 0x2, 0x4, 0x2, 0x2, + 0x3, 0x2, 0x2, 0x5, 0x2, }; _serializedATN.insert(_serializedATN.end(), serializedATNSegment0, diff --git a/src/generated/azslLexer.h b/src/generated/azslLexer.h index d1b53e5..fcea7f2 100644 --- a/src/generated/azslLexer.h +++ b/src/generated/azslLexer.h @@ -17,92 +17,94 @@ class azslLexer : public antlr4::Lexer { Bool2x2 = 12, Bool2x3 = 13, Bool2x4 = 14, Bool3x1 = 15, Bool3x2 = 16, Bool3x3 = 17, Bool3x4 = 18, Bool4x1 = 19, Bool4x2 = 20, Bool4x3 = 21, Bool4x4 = 22, Buffer = 23, BuiltInTriangleIntersectionAttributes = 24, - ByteAddressBuffer = 25, Break = 26, Case = 27, CBuffer = 28, ConstantBuffer = 29, - ConstantBufferCamel = 30, Centroid = 31, Class = 32, ColumnMajor = 33, + ByteAddressBuffer = 25, Break = 26, Case = 27, CBuffer = 28, Centroid = 29, + ConstantBuffer = 30, ConstantBufferCamel = 31, Class = 32, ColumnMajor = 33, Const = 34, ConsumeStructuredBuffer = 35, Continue = 36, Default = 37, Discard = 38, Do = 39, Double = 40, Double1 = 41, Double2 = 42, Double3 = 43, Double4 = 44, Double1x1 = 45, Double1x2 = 46, Double1x3 = 47, Double1x4 = 48, Double2x1 = 49, Double2x2 = 50, Double2x3 = 51, Double2x4 = 52, Double3x1 = 53, Double3x2 = 54, Double3x3 = 55, Double3x4 = 56, Double4x1 = 57, Double4x2 = 58, - Double4x3 = 59, Double4x4 = 60, Else = 61, Enum = 62, Extern = 63, FeedbackTexture2D = 64, - FeedbackTexture2DArray = 65, Float = 66, Float1 = 67, Float2 = 68, Float3 = 69, - Float4 = 70, Float1x1 = 71, Float1x2 = 72, Float1x3 = 73, Float1x4 = 74, - Float2x1 = 75, Float2x2 = 76, Float2x3 = 77, Float2x4 = 78, Float3x1 = 79, - Float3x2 = 80, Float3x3 = 81, Float3x4 = 82, Float4x1 = 83, Float4x2 = 84, - Float4x3 = 85, Float4x4 = 86, For = 87, Groupshared = 88, Global = 89, - Half = 90, Half1 = 91, Half2 = 92, Half3 = 93, Half4 = 94, Half1x1 = 95, - Half1x2 = 96, Half1x3 = 97, Half1x4 = 98, Half2x1 = 99, Half2x2 = 100, - Half2x3 = 101, Half2x4 = 102, Half3x1 = 103, Half3x2 = 104, Half3x3 = 105, - Half3x4 = 106, Half4x1 = 107, Half4x2 = 108, Half4x3 = 109, Half4x4 = 110, - If = 111, In = 112, Inline = 113, Rootconstant = 114, Inout = 115, InputPatch = 116, - Int = 117, Int32_t = 118, Int64_t = 119, Int1 = 120, Int2 = 121, Int3 = 122, - Int4 = 123, Int1x1 = 124, Int1x2 = 125, Int1x3 = 126, Int1x4 = 127, - Int2x1 = 128, Int2x2 = 129, Int2x3 = 130, Int2x4 = 131, Int3x1 = 132, - Int3x2 = 133, Int3x3 = 134, Int3x4 = 135, Int4x1 = 136, Int4x2 = 137, - Int4x3 = 138, Int4x4 = 139, Interface = 140, Line_ = 141, LineAdj = 142, - Linear = 143, LineStream = 144, Long = 145, Matrix = 146, Nointerpolation = 147, - Noperspective = 148, Option = 149, Out = 150, OutputPatch = 151, Override = 152, - Partial = 153, Packoffset = 154, Point = 155, PointStream = 156, Precise = 157, - RasterizerOrderedBuffer = 158, RasterizerOrderedByteAddressBuffer = 159, - RasterizerOrderedStructuredBuffer = 160, RasterizerOrderedTexture1D = 161, - RasterizerOrderedTexture1DArray = 162, RasterizerOrderedTexture2D = 163, - RasterizerOrderedTexture2DArray = 164, RasterizerOrderedTexture3D = 165, - RayDesc = 166, RaytracingAccelerationStructure = 167, Register = 168, - Return = 169, RowMajor = 170, RWBuffer = 171, RWByteAddressBuffer = 172, - RWStructuredBuffer = 173, RWTexture1D = 174, RWTexture1DArray = 175, - RWTexture2D = 176, RWTexture2DArray = 177, RWTexture3D = 178, Sample = 179, - Sampler = 180, SamplerCapitalS = 181, SamplerComparisonState = 182, - SamplerState = 183, Shared = 184, Static = 185, Struct = 186, StructuredBuffer = 187, - SubpassInput = 188, SubpassInputMS = 189, Switch = 190, Texture1D = 191, - Texture1DArray = 192, Texture2D = 193, Texture2DArray = 194, Texture2DMS = 195, - Texture2DMSArray = 196, Texture3D = 197, TextureCube = 198, TextureCubeArray = 199, - Triangle = 200, TriangleAdj = 201, TriangleStream = 202, Uniform = 203, - Uint = 204, Uint32_t = 205, Uint64_t = 206, UnsignedInt = 207, Uint1 = 208, - Uint2 = 209, Uint3 = 210, Uint4 = 211, Uint1x1 = 212, Uint1x2 = 213, - Uint1x3 = 214, Uint1x4 = 215, Uint2x1 = 216, Uint2x2 = 217, Uint2x3 = 218, - Uint2x4 = 219, Uint3x1 = 220, Uint3x2 = 221, Uint3x3 = 222, Uint3x4 = 223, - Uint4x1 = 224, Uint4x2 = 225, Uint4x3 = 226, Uint4x4 = 227, Dword = 228, - Dword1 = 229, Dword2 = 230, Dword3 = 231, Dword4 = 232, Dword1x1 = 233, - Dword1x2 = 234, Dword1x3 = 235, Dword1x4 = 236, Dword2x1 = 237, Dword2x2 = 238, - Dword2x3 = 239, Dword2x4 = 240, Dword3x1 = 241, Dword3x2 = 242, Dword3x3 = 243, - Dword3x4 = 244, Dword4x1 = 245, Dword4x2 = 246, Dword4x3 = 247, Dword4x4 = 248, - Vector = 249, Volatile = 250, Void = 251, While = 252, StateObjectConfig = 253, - LocalRootSignature = 254, GlobalRootSignature = 255, SubobjectToExportsAssociation = 256, - RaytracingShaderConfig = 257, RaytracingPipelineConfig = 258, RaytracingPipelineConfig1 = 259, - TriangleHitGroup = 260, ProceduralPrimitiveHitGroup = 261, ADDRESS_U = 262, - ADDRESS_V = 263, ADDRESS_W = 264, BORDER_COLOR = 265, MIN_FILTER = 266, - MAG_FILTER = 267, MIP_FILTER = 268, MAX_ANISOTROPY = 269, MAX_LOD = 270, - MIN_LOD = 271, MIP_LOD_BIAS = 272, COMPARISON_FUNC = 273, REDUCTION_TYPE = 274, - FILTER_MODE_POINT = 275, FILTER_MODE_LINEAR = 276, REDUCTION_TYPE_FILTER = 277, - REDUCTION_TYPE_COMPARISON = 278, REDUCTION_TYPE_MINIMUM = 279, REDUCTION_TYPE_MAXIMUM = 280, - ADDRESS_MODE_WRAP = 281, ADDRESS_MODE_MIRROR = 282, ADDRESS_MODE_CLAMP = 283, - ADDRESS_MODE_BORDER = 284, ADDRESS_MODE_MIRROR_ONCE = 285, COMPARISON_FUNCTION_NEVER = 286, - COMPARISON_FUNCTION_LESS = 287, COMPARISON_FUNCTION_EQUAL = 288, COMPARISON_FUNCTION_LESS_EQUAL = 289, - COMPARISON_FUNCTION_GREATER = 290, COMPARISON_FUNCTION_NOT_EQUAL = 291, - COMPARISON_FUNCTION_GREATER_EQUAL = 292, COMPARISON_FUNCTION_ALWAYS = 293, - BORDER_COLOR_OPAQUE_BLACK = 294, BORDER_COLOR_TRANSPARENT_BLACK = 295, - BORDER_COLOR_OPAQUE_WHITE = 296, LeftParen = 297, RightParen = 298, - LeftBracket = 299, RightBracket = 300, LeftBrace = 301, RightBrace = 302, - LeftDoubleBracket = 303, Less = 304, LessEqual = 305, Greater = 306, - GreaterEqual = 307, LeftShift = 308, RightShift = 309, Plus = 310, PlusPlus = 311, - Minus = 312, MinusMinus = 313, Star = 314, Div = 315, Mod = 316, And = 317, - Or = 318, AndAnd = 319, OrOr = 320, Caret = 321, Not = 322, Tilde = 323, - Question = 324, Colon = 325, ColonColon = 326, Semi = 327, Comma = 328, - Assign = 329, StarAssign = 330, DivAssign = 331, ModAssign = 332, PlusAssign = 333, - MinusAssign = 334, LeftShiftAssign = 335, RightShiftAssign = 336, AndAssign = 337, - XorAssign = 338, OrAssign = 339, Equal = 340, NotEqual = 341, Dot = 342, - True = 343, False = 344, KW_AssociatedType = 345, KW_TypeAlias = 346, - KW_Typedef = 347, KW_Fundamental = 348, KW_Typeof = 349, KW_ext_print_message = 350, - KW_ext_print_symbol = 351, KW_ext_prtsym_fully_qualified = 352, KW_ext_prtsym_least_qualified = 353, - KW_ext_prtsym_constint_value = 354, FrequencyId = 355, ShaderVariantFallback = 356, - ShaderResourceGroupSemantic = 357, ShaderResourceGroup = 358, HLSLSemanticStream = 359, - HLSLSemanticSystem = 360, Identifier = 361, IntegerLiteral = 362, FloatLiteral = 363, - StringLiteral = 364, PragmaDirective = 365, LineDirective = 366, Whitespace = 367, - Newline = 368, BlockComment = 369, LineComment = 370 + Double4x3 = 59, Double4x4 = 60, Else = 61, Enum = 62, Export = 63, Extern = 64, + FeedbackTexture2D = 65, FeedbackTexture2DArray = 66, Float = 67, Float1 = 68, + Float2 = 69, Float3 = 70, Float4 = 71, Float1x1 = 72, Float1x2 = 73, + Float1x3 = 74, Float1x4 = 75, Float2x1 = 76, Float2x2 = 77, Float2x3 = 78, + Float2x4 = 79, Float3x1 = 80, Float3x2 = 81, Float3x3 = 82, Float3x4 = 83, + Float4x1 = 84, Float4x2 = 85, Float4x3 = 86, Float4x4 = 87, For = 88, + Groupshared = 89, Globallycoherent = 90, Global = 91, Half = 92, Half1 = 93, + Half2 = 94, Half3 = 95, Half4 = 96, Half1x1 = 97, Half1x2 = 98, Half1x3 = 99, + Half1x4 = 100, Half2x1 = 101, Half2x2 = 102, Half2x3 = 103, Half2x4 = 104, + Half3x1 = 105, Half3x2 = 106, Half3x3 = 107, Half3x4 = 108, Half4x1 = 109, + Half4x2 = 110, Half4x3 = 111, Half4x4 = 112, If = 113, In = 114, Inline = 115, + Rootconstant = 116, Inout = 117, InputPatch = 118, Int = 119, Int16_t = 120, + Int32_t = 121, Int64_t = 122, Int1 = 123, Int2 = 124, Int3 = 125, Int4 = 126, + Int1x1 = 127, Int1x2 = 128, Int1x3 = 129, Int1x4 = 130, Int2x1 = 131, + Int2x2 = 132, Int2x3 = 133, Int2x4 = 134, Int3x1 = 135, Int3x2 = 136, + Int3x3 = 137, Int3x4 = 138, Int4x1 = 139, Int4x2 = 140, Int4x3 = 141, + Int4x4 = 142, Interface = 143, Line_ = 144, LineAdj = 145, Linear = 146, + LineStream = 147, Long = 148, Matrix = 149, Nointerpolation = 150, Noperspective = 151, + Option = 152, Out = 153, OutputPatch = 154, Override = 155, Partial = 156, + Packoffset = 157, Point = 158, PointStream = 159, Precise = 160, RasterizerOrderedBuffer = 161, + RasterizerOrderedByteAddressBuffer = 162, RasterizerOrderedStructuredBuffer = 163, + RasterizerOrderedTexture1D = 164, RasterizerOrderedTexture1DArray = 165, + RasterizerOrderedTexture2D = 166, RasterizerOrderedTexture2DArray = 167, + RasterizerOrderedTexture3D = 168, RayDesc = 169, RaytracingAccelerationStructure = 170, + Register = 171, Return = 172, RowMajor = 173, RWBuffer = 174, RWByteAddressBuffer = 175, + RWStructuredBuffer = 176, RWTexture1D = 177, RWTexture1DArray = 178, + RWTexture2D = 179, RWTexture2DArray = 180, RWTexture3D = 181, Sample = 182, + Sampler = 183, SamplerCapitalS = 184, SamplerComparisonState = 185, + SamplerStateCamel = 186, SamplerState = 187, Shared = 188, SNorm = 189, + Static = 190, Struct = 191, StructuredBuffer = 192, SubpassInput = 193, + SubpassInputMS = 194, Switch = 195, TBuffer = 196, Texture1D = 197, + Texture1DArray = 198, Texture2D = 199, Texture2DArray = 200, Texture2DMS = 201, + Texture2DMSArray = 202, Texture3D = 203, TextureCube = 204, TextureCubeArray = 205, + Triangle = 206, TriangleAdj = 207, TriangleStream = 208, Uniform = 209, + Uint = 210, Uint1 = 211, Uint2 = 212, Uint3 = 213, Uint4 = 214, Uint1x1 = 215, + Uint1x2 = 216, Uint1x3 = 217, Uint1x4 = 218, Uint2x1 = 219, Uint2x2 = 220, + Uint2x3 = 221, Uint2x4 = 222, Uint3x1 = 223, Uint3x2 = 224, Uint3x3 = 225, + Uint3x4 = 226, Uint4x1 = 227, Uint4x2 = 228, Uint4x3 = 229, Uint4x4 = 230, + Uint16_t = 231, Uint32_t = 232, Uint64_t = 233, UNorm = 234, Unsigned = 235, + Dword = 236, Dword1 = 237, Dword2 = 238, Dword3 = 239, Dword4 = 240, + Dword1x1 = 241, Dword1x2 = 242, Dword1x3 = 243, Dword1x4 = 244, Dword2x1 = 245, + Dword2x2 = 246, Dword2x3 = 247, Dword2x4 = 248, Dword3x1 = 249, Dword3x2 = 250, + Dword3x3 = 251, Dword3x4 = 252, Dword4x1 = 253, Dword4x2 = 254, Dword4x3 = 255, + Dword4x4 = 256, Vector = 257, Volatile = 258, Void = 259, While = 260, + StateObjectConfig = 261, LocalRootSignature = 262, GlobalRootSignature = 263, + SubobjectToExportsAssociation = 264, RaytracingShaderConfig = 265, RaytracingPipelineConfig = 266, + RaytracingPipelineConfig1 = 267, TriangleHitGroup = 268, ProceduralPrimitiveHitGroup = 269, + ADDRESS_U = 270, ADDRESS_V = 271, ADDRESS_W = 272, BORDER_COLOR = 273, + MIN_FILTER = 274, MAG_FILTER = 275, MIP_FILTER = 276, MAX_ANISOTROPY = 277, + MAX_LOD = 278, MIN_LOD = 279, MIP_LOD_BIAS = 280, COMPARISON_FUNC = 281, + REDUCTION_TYPE = 282, FILTER_MODE_POINT = 283, FILTER_MODE_LINEAR = 284, + REDUCTION_TYPE_FILTER = 285, REDUCTION_TYPE_COMPARISON = 286, REDUCTION_TYPE_MINIMUM = 287, + REDUCTION_TYPE_MAXIMUM = 288, ADDRESS_MODE_WRAP = 289, ADDRESS_MODE_MIRROR = 290, + ADDRESS_MODE_CLAMP = 291, ADDRESS_MODE_BORDER = 292, ADDRESS_MODE_MIRROR_ONCE = 293, + COMPARISON_FUNCTION_NEVER = 294, COMPARISON_FUNCTION_LESS = 295, COMPARISON_FUNCTION_EQUAL = 296, + COMPARISON_FUNCTION_LESS_EQUAL = 297, COMPARISON_FUNCTION_GREATER = 298, + COMPARISON_FUNCTION_NOT_EQUAL = 299, COMPARISON_FUNCTION_GREATER_EQUAL = 300, + COMPARISON_FUNCTION_ALWAYS = 301, BORDER_COLOR_OPAQUE_BLACK = 302, BORDER_COLOR_TRANSPARENT_BLACK = 303, + BORDER_COLOR_OPAQUE_WHITE = 304, LeftParen = 305, RightParen = 306, + LeftBracket = 307, RightBracket = 308, LeftBrace = 309, RightBrace = 310, + LeftDoubleBracket = 311, Less = 312, LessEqual = 313, Greater = 314, + GreaterEqual = 315, LeftShift = 316, RightShift = 317, Plus = 318, PlusPlus = 319, + Minus = 320, MinusMinus = 321, Star = 322, Div = 323, Mod = 324, And = 325, + Or = 326, AndAnd = 327, OrOr = 328, Caret = 329, Not = 330, Tilde = 331, + Question = 332, Colon = 333, ColonColon = 334, Semi = 335, Comma = 336, + Assign = 337, StarAssign = 338, DivAssign = 339, ModAssign = 340, PlusAssign = 341, + MinusAssign = 342, LeftShiftAssign = 343, RightShiftAssign = 344, AndAssign = 345, + XorAssign = 346, OrAssign = 347, Equal = 348, NotEqual = 349, Dot = 350, + True = 351, False = 352, KW_AssociatedType = 353, KW_TypeAlias = 354, + KW_Typedef = 355, KW_Fundamental = 356, KW_Typeof = 357, FrequencyId = 358, + ShaderVariantFallback = 359, ShaderResourceGroupSemantic = 360, ShaderResourceGroup = 361, + KW_ext_print_message = 362, KW_ext_print_symbol = 363, KW_ext_prtsym_fully_qualified = 364, + KW_ext_prtsym_least_qualified = 365, KW_ext_prtsym_constint_value = 366, + HLSLSemanticStream = 367, HLSLSemanticSystem = 368, Identifier = 369, + IntegerLiteral = 370, FloatLiteral = 371, StringLiteral = 372, PragmaDirective = 373, + LineDirective = 374, Whitespace = 375, Newline = 376, BlockComment = 377, + LineComment = 378 }; enum { - PREPROCESSOR = 2 + PREPROCESSOR = 2, COMMENTS = 3 }; explicit azslLexer(antlr4::CharStream *input); diff --git a/src/generated/azslParser.cpp b/src/generated/azslParser.cpp index 5d6d7c5..1a03ee6 100644 --- a/src/generated/azslParser.cpp +++ b/src/generated/azslParser.cpp @@ -80,7 +80,7 @@ azslParser::CompilationUnitContext* azslParser::compilationUnit() { }); try { enterOuterAlt(_localctx, 1); - setState(279); + setState(277); _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && @@ -109,9 +109,9 @@ azslParser::CompilationUnitContext* azslParser::compilationUnit() { | (1ULL << azslParser::Buffer) | (1ULL << azslParser::BuiltInTriangleIntersectionAttributes) | (1ULL << azslParser::ByteAddressBuffer) + | (1ULL << azslParser::Centroid) | (1ULL << azslParser::ConstantBuffer) | (1ULL << azslParser::ConstantBufferCamel) - | (1ULL << azslParser::Centroid) | (1ULL << azslParser::Class) | (1ULL << azslParser::ColumnMajor) | (1ULL << azslParser::Const) @@ -137,214 +137,220 @@ azslParser::CompilationUnitContext* azslParser::compilationUnit() { | (1ULL << azslParser::Double4x2) | (1ULL << azslParser::Double4x3) | (1ULL << azslParser::Double4x4) - | (1ULL << azslParser::Enum) - | (1ULL << azslParser::Extern))) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & ((1ULL << (azslParser::Float - 66)) - | (1ULL << (azslParser::Float1 - 66)) - | (1ULL << (azslParser::Float2 - 66)) - | (1ULL << (azslParser::Float3 - 66)) - | (1ULL << (azslParser::Float4 - 66)) - | (1ULL << (azslParser::Float1x1 - 66)) - | (1ULL << (azslParser::Float1x2 - 66)) - | (1ULL << (azslParser::Float1x3 - 66)) - | (1ULL << (azslParser::Float1x4 - 66)) - | (1ULL << (azslParser::Float2x1 - 66)) - | (1ULL << (azslParser::Float2x2 - 66)) - | (1ULL << (azslParser::Float2x3 - 66)) - | (1ULL << (azslParser::Float2x4 - 66)) - | (1ULL << (azslParser::Float3x1 - 66)) - | (1ULL << (azslParser::Float3x2 - 66)) - | (1ULL << (azslParser::Float3x3 - 66)) - | (1ULL << (azslParser::Float3x4 - 66)) - | (1ULL << (azslParser::Float4x1 - 66)) - | (1ULL << (azslParser::Float4x2 - 66)) - | (1ULL << (azslParser::Float4x3 - 66)) - | (1ULL << (azslParser::Float4x4 - 66)) - | (1ULL << (azslParser::Groupshared - 66)) - | (1ULL << (azslParser::Half - 66)) - | (1ULL << (azslParser::Half1 - 66)) - | (1ULL << (azslParser::Half2 - 66)) - | (1ULL << (azslParser::Half3 - 66)) - | (1ULL << (azslParser::Half4 - 66)) - | (1ULL << (azslParser::Half1x1 - 66)) - | (1ULL << (azslParser::Half1x2 - 66)) - | (1ULL << (azslParser::Half1x3 - 66)) - | (1ULL << (azslParser::Half1x4 - 66)) - | (1ULL << (azslParser::Half2x1 - 66)) - | (1ULL << (azslParser::Half2x2 - 66)) - | (1ULL << (azslParser::Half2x3 - 66)) - | (1ULL << (azslParser::Half2x4 - 66)) - | (1ULL << (azslParser::Half3x1 - 66)) - | (1ULL << (azslParser::Half3x2 - 66)) - | (1ULL << (azslParser::Half3x3 - 66)) - | (1ULL << (azslParser::Half3x4 - 66)) - | (1ULL << (azslParser::Half4x1 - 66)) - | (1ULL << (azslParser::Half4x2 - 66)) - | (1ULL << (azslParser::Half4x3 - 66)) - | (1ULL << (azslParser::Half4x4 - 66)) - | (1ULL << (azslParser::In - 66)) - | (1ULL << (azslParser::Inline - 66)) - | (1ULL << (azslParser::Rootconstant - 66)) - | (1ULL << (azslParser::Inout - 66)) - | (1ULL << (azslParser::InputPatch - 66)) - | (1ULL << (azslParser::Int - 66)) - | (1ULL << (azslParser::Int32_t - 66)) - | (1ULL << (azslParser::Int64_t - 66)) - | (1ULL << (azslParser::Int1 - 66)) - | (1ULL << (azslParser::Int2 - 66)) - | (1ULL << (azslParser::Int3 - 66)) - | (1ULL << (azslParser::Int4 - 66)) - | (1ULL << (azslParser::Int1x1 - 66)) - | (1ULL << (azslParser::Int1x2 - 66)) - | (1ULL << (azslParser::Int1x3 - 66)) - | (1ULL << (azslParser::Int1x4 - 66)) - | (1ULL << (azslParser::Int2x1 - 66)) - | (1ULL << (azslParser::Int2x2 - 66)))) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & ((1ULL << (azslParser::Int2x3 - 130)) - | (1ULL << (azslParser::Int2x4 - 130)) - | (1ULL << (azslParser::Int3x1 - 130)) - | (1ULL << (azslParser::Int3x2 - 130)) - | (1ULL << (azslParser::Int3x3 - 130)) - | (1ULL << (azslParser::Int3x4 - 130)) - | (1ULL << (azslParser::Int4x1 - 130)) - | (1ULL << (azslParser::Int4x2 - 130)) - | (1ULL << (azslParser::Int4x3 - 130)) - | (1ULL << (azslParser::Int4x4 - 130)) - | (1ULL << (azslParser::Interface - 130)) - | (1ULL << (azslParser::Line_ - 130)) - | (1ULL << (azslParser::LineAdj - 130)) - | (1ULL << (azslParser::Linear - 130)) - | (1ULL << (azslParser::LineStream - 130)) - | (1ULL << (azslParser::Matrix - 130)) - | (1ULL << (azslParser::Nointerpolation - 130)) - | (1ULL << (azslParser::Noperspective - 130)) - | (1ULL << (azslParser::Option - 130)) - | (1ULL << (azslParser::Out - 130)) - | (1ULL << (azslParser::OutputPatch - 130)) - | (1ULL << (azslParser::Partial - 130)) - | (1ULL << (azslParser::Point - 130)) - | (1ULL << (azslParser::PointStream - 130)) - | (1ULL << (azslParser::Precise - 130)) - | (1ULL << (azslParser::RasterizerOrderedBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture3D - 130)) - | (1ULL << (azslParser::RayDesc - 130)) - | (1ULL << (azslParser::RaytracingAccelerationStructure - 130)) - | (1ULL << (azslParser::RowMajor - 130)) - | (1ULL << (azslParser::RWBuffer - 130)) - | (1ULL << (azslParser::RWByteAddressBuffer - 130)) - | (1ULL << (azslParser::RWStructuredBuffer - 130)) - | (1ULL << (azslParser::RWTexture1D - 130)) - | (1ULL << (azslParser::RWTexture1DArray - 130)) - | (1ULL << (azslParser::RWTexture2D - 130)) - | (1ULL << (azslParser::RWTexture2DArray - 130)) - | (1ULL << (azslParser::RWTexture3D - 130)) - | (1ULL << (azslParser::Sample - 130)) - | (1ULL << (azslParser::Sampler - 130)) - | (1ULL << (azslParser::SamplerCapitalS - 130)) - | (1ULL << (azslParser::SamplerComparisonState - 130)) - | (1ULL << (azslParser::SamplerState - 130)) - | (1ULL << (azslParser::Shared - 130)) - | (1ULL << (azslParser::Static - 130)) - | (1ULL << (azslParser::Struct - 130)) - | (1ULL << (azslParser::StructuredBuffer - 130)) - | (1ULL << (azslParser::SubpassInput - 130)) - | (1ULL << (azslParser::SubpassInputMS - 130)) - | (1ULL << (azslParser::Texture1D - 130)) - | (1ULL << (azslParser::Texture1DArray - 130)) - | (1ULL << (azslParser::Texture2D - 130)))) != 0) || ((((_la - 194) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 194)) & ((1ULL << (azslParser::Texture2DArray - 194)) - | (1ULL << (azslParser::Texture2DMS - 194)) - | (1ULL << (azslParser::Texture2DMSArray - 194)) - | (1ULL << (azslParser::Texture3D - 194)) - | (1ULL << (azslParser::TextureCube - 194)) - | (1ULL << (azslParser::TextureCubeArray - 194)) - | (1ULL << (azslParser::Triangle - 194)) - | (1ULL << (azslParser::TriangleAdj - 194)) - | (1ULL << (azslParser::TriangleStream - 194)) - | (1ULL << (azslParser::Uniform - 194)) - | (1ULL << (azslParser::Uint - 194)) - | (1ULL << (azslParser::Uint32_t - 194)) - | (1ULL << (azslParser::Uint64_t - 194)) - | (1ULL << (azslParser::UnsignedInt - 194)) - | (1ULL << (azslParser::Uint1 - 194)) - | (1ULL << (azslParser::Uint2 - 194)) - | (1ULL << (azslParser::Uint3 - 194)) - | (1ULL << (azslParser::Uint4 - 194)) - | (1ULL << (azslParser::Uint1x1 - 194)) - | (1ULL << (azslParser::Uint1x2 - 194)) - | (1ULL << (azslParser::Uint1x3 - 194)) - | (1ULL << (azslParser::Uint1x4 - 194)) - | (1ULL << (azslParser::Uint2x1 - 194)) - | (1ULL << (azslParser::Uint2x2 - 194)) - | (1ULL << (azslParser::Uint2x3 - 194)) - | (1ULL << (azslParser::Uint2x4 - 194)) - | (1ULL << (azslParser::Uint3x1 - 194)) - | (1ULL << (azslParser::Uint3x2 - 194)) - | (1ULL << (azslParser::Uint3x3 - 194)) - | (1ULL << (azslParser::Uint3x4 - 194)) - | (1ULL << (azslParser::Uint4x1 - 194)) - | (1ULL << (azslParser::Uint4x2 - 194)) - | (1ULL << (azslParser::Uint4x3 - 194)) - | (1ULL << (azslParser::Uint4x4 - 194)) - | (1ULL << (azslParser::Dword - 194)) - | (1ULL << (azslParser::Dword1 - 194)) - | (1ULL << (azslParser::Dword2 - 194)) - | (1ULL << (azslParser::Dword3 - 194)) - | (1ULL << (azslParser::Dword4 - 194)) - | (1ULL << (azslParser::Dword1x1 - 194)) - | (1ULL << (azslParser::Dword1x2 - 194)) - | (1ULL << (azslParser::Dword1x3 - 194)) - | (1ULL << (azslParser::Dword1x4 - 194)) - | (1ULL << (azslParser::Dword2x1 - 194)) - | (1ULL << (azslParser::Dword2x2 - 194)) - | (1ULL << (azslParser::Dword2x3 - 194)) - | (1ULL << (azslParser::Dword2x4 - 194)) - | (1ULL << (azslParser::Dword3x1 - 194)) - | (1ULL << (azslParser::Dword3x2 - 194)) - | (1ULL << (azslParser::Dword3x3 - 194)) - | (1ULL << (azslParser::Dword3x4 - 194)) - | (1ULL << (azslParser::Dword4x1 - 194)) - | (1ULL << (azslParser::Dword4x2 - 194)) - | (1ULL << (azslParser::Dword4x3 - 194)) - | (1ULL << (azslParser::Dword4x4 - 194)) - | (1ULL << (azslParser::Vector - 194)) - | (1ULL << (azslParser::Volatile - 194)) - | (1ULL << (azslParser::Void - 194)) - | (1ULL << (azslParser::StateObjectConfig - 194)) - | (1ULL << (azslParser::LocalRootSignature - 194)) - | (1ULL << (azslParser::GlobalRootSignature - 194)) - | (1ULL << (azslParser::SubobjectToExportsAssociation - 194)) - | (1ULL << (azslParser::RaytracingShaderConfig - 194)))) != 0) || ((((_la - 258) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 258)) & ((1ULL << (azslParser::RaytracingPipelineConfig - 258)) - | (1ULL << (azslParser::RaytracingPipelineConfig1 - 258)) - | (1ULL << (azslParser::TriangleHitGroup - 258)) - | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 258)) - | (1ULL << (azslParser::LeftBracket - 258)) - | (1ULL << (azslParser::LeftDoubleBracket - 258)))) != 0) || ((((_la - 326) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 326)) & ((1ULL << (azslParser::ColonColon - 326)) - | (1ULL << (azslParser::Semi - 326)) - | (1ULL << (azslParser::KW_TypeAlias - 326)) - | (1ULL << (azslParser::KW_Typedef - 326)) - | (1ULL << (azslParser::KW_Typeof - 326)) - | (1ULL << (azslParser::KW_ext_print_message - 326)) - | (1ULL << (azslParser::KW_ext_print_symbol - 326)) - | (1ULL << (azslParser::ShaderResourceGroupSemantic - 326)) - | (1ULL << (azslParser::ShaderResourceGroup - 326)) - | (1ULL << (azslParser::Identifier - 326)))) != 0)) { - setState(276); + | (1ULL << azslParser::Enum))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (azslParser::Extern - 64)) + | (1ULL << (azslParser::Float - 64)) + | (1ULL << (azslParser::Float1 - 64)) + | (1ULL << (azslParser::Float2 - 64)) + | (1ULL << (azslParser::Float3 - 64)) + | (1ULL << (azslParser::Float4 - 64)) + | (1ULL << (azslParser::Float1x1 - 64)) + | (1ULL << (azslParser::Float1x2 - 64)) + | (1ULL << (azslParser::Float1x3 - 64)) + | (1ULL << (azslParser::Float1x4 - 64)) + | (1ULL << (azslParser::Float2x1 - 64)) + | (1ULL << (azslParser::Float2x2 - 64)) + | (1ULL << (azslParser::Float2x3 - 64)) + | (1ULL << (azslParser::Float2x4 - 64)) + | (1ULL << (azslParser::Float3x1 - 64)) + | (1ULL << (azslParser::Float3x2 - 64)) + | (1ULL << (azslParser::Float3x3 - 64)) + | (1ULL << (azslParser::Float3x4 - 64)) + | (1ULL << (azslParser::Float4x1 - 64)) + | (1ULL << (azslParser::Float4x2 - 64)) + | (1ULL << (azslParser::Float4x3 - 64)) + | (1ULL << (azslParser::Float4x4 - 64)) + | (1ULL << (azslParser::Groupshared - 64)) + | (1ULL << (azslParser::Globallycoherent - 64)) + | (1ULL << (azslParser::Half - 64)) + | (1ULL << (azslParser::Half1 - 64)) + | (1ULL << (azslParser::Half2 - 64)) + | (1ULL << (azslParser::Half3 - 64)) + | (1ULL << (azslParser::Half4 - 64)) + | (1ULL << (azslParser::Half1x1 - 64)) + | (1ULL << (azslParser::Half1x2 - 64)) + | (1ULL << (azslParser::Half1x3 - 64)) + | (1ULL << (azslParser::Half1x4 - 64)) + | (1ULL << (azslParser::Half2x1 - 64)) + | (1ULL << (azslParser::Half2x2 - 64)) + | (1ULL << (azslParser::Half2x3 - 64)) + | (1ULL << (azslParser::Half2x4 - 64)) + | (1ULL << (azslParser::Half3x1 - 64)) + | (1ULL << (azslParser::Half3x2 - 64)) + | (1ULL << (azslParser::Half3x3 - 64)) + | (1ULL << (azslParser::Half3x4 - 64)) + | (1ULL << (azslParser::Half4x1 - 64)) + | (1ULL << (azslParser::Half4x2 - 64)) + | (1ULL << (azslParser::Half4x3 - 64)) + | (1ULL << (azslParser::Half4x4 - 64)) + | (1ULL << (azslParser::In - 64)) + | (1ULL << (azslParser::Inline - 64)) + | (1ULL << (azslParser::Rootconstant - 64)) + | (1ULL << (azslParser::Inout - 64)) + | (1ULL << (azslParser::InputPatch - 64)) + | (1ULL << (azslParser::Int - 64)) + | (1ULL << (azslParser::Int16_t - 64)) + | (1ULL << (azslParser::Int32_t - 64)) + | (1ULL << (azslParser::Int64_t - 64)) + | (1ULL << (azslParser::Int1 - 64)) + | (1ULL << (azslParser::Int2 - 64)) + | (1ULL << (azslParser::Int3 - 64)) + | (1ULL << (azslParser::Int4 - 64)) + | (1ULL << (azslParser::Int1x1 - 64)))) != 0) || ((((_la - 128) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 128)) & ((1ULL << (azslParser::Int1x2 - 128)) + | (1ULL << (azslParser::Int1x3 - 128)) + | (1ULL << (azslParser::Int1x4 - 128)) + | (1ULL << (azslParser::Int2x1 - 128)) + | (1ULL << (azslParser::Int2x2 - 128)) + | (1ULL << (azslParser::Int2x3 - 128)) + | (1ULL << (azslParser::Int2x4 - 128)) + | (1ULL << (azslParser::Int3x1 - 128)) + | (1ULL << (azslParser::Int3x2 - 128)) + | (1ULL << (azslParser::Int3x3 - 128)) + | (1ULL << (azslParser::Int3x4 - 128)) + | (1ULL << (azslParser::Int4x1 - 128)) + | (1ULL << (azslParser::Int4x2 - 128)) + | (1ULL << (azslParser::Int4x3 - 128)) + | (1ULL << (azslParser::Int4x4 - 128)) + | (1ULL << (azslParser::Interface - 128)) + | (1ULL << (azslParser::Line_ - 128)) + | (1ULL << (azslParser::LineAdj - 128)) + | (1ULL << (azslParser::Linear - 128)) + | (1ULL << (azslParser::LineStream - 128)) + | (1ULL << (azslParser::Matrix - 128)) + | (1ULL << (azslParser::Nointerpolation - 128)) + | (1ULL << (azslParser::Noperspective - 128)) + | (1ULL << (azslParser::Option - 128)) + | (1ULL << (azslParser::Out - 128)) + | (1ULL << (azslParser::OutputPatch - 128)) + | (1ULL << (azslParser::Partial - 128)) + | (1ULL << (azslParser::Point - 128)) + | (1ULL << (azslParser::PointStream - 128)) + | (1ULL << (azslParser::Precise - 128)) + | (1ULL << (azslParser::RasterizerOrderedBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture3D - 128)) + | (1ULL << (azslParser::RayDesc - 128)) + | (1ULL << (azslParser::RaytracingAccelerationStructure - 128)) + | (1ULL << (azslParser::RowMajor - 128)) + | (1ULL << (azslParser::RWBuffer - 128)) + | (1ULL << (azslParser::RWByteAddressBuffer - 128)) + | (1ULL << (azslParser::RWStructuredBuffer - 128)) + | (1ULL << (azslParser::RWTexture1D - 128)) + | (1ULL << (azslParser::RWTexture1DArray - 128)) + | (1ULL << (azslParser::RWTexture2D - 128)) + | (1ULL << (azslParser::RWTexture2DArray - 128)) + | (1ULL << (azslParser::RWTexture3D - 128)) + | (1ULL << (azslParser::Sample - 128)) + | (1ULL << (azslParser::Sampler - 128)) + | (1ULL << (azslParser::SamplerCapitalS - 128)) + | (1ULL << (azslParser::SamplerComparisonState - 128)) + | (1ULL << (azslParser::SamplerStateCamel - 128)) + | (1ULL << (azslParser::SamplerState - 128)) + | (1ULL << (azslParser::Shared - 128)) + | (1ULL << (azslParser::SNorm - 128)) + | (1ULL << (azslParser::Static - 128)) + | (1ULL << (azslParser::Struct - 128)))) != 0) || ((((_la - 192) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 192)) & ((1ULL << (azslParser::StructuredBuffer - 192)) + | (1ULL << (azslParser::SubpassInput - 192)) + | (1ULL << (azslParser::SubpassInputMS - 192)) + | (1ULL << (azslParser::Texture1D - 192)) + | (1ULL << (azslParser::Texture1DArray - 192)) + | (1ULL << (azslParser::Texture2D - 192)) + | (1ULL << (azslParser::Texture2DArray - 192)) + | (1ULL << (azslParser::Texture2DMS - 192)) + | (1ULL << (azslParser::Texture2DMSArray - 192)) + | (1ULL << (azslParser::Texture3D - 192)) + | (1ULL << (azslParser::TextureCube - 192)) + | (1ULL << (azslParser::TextureCubeArray - 192)) + | (1ULL << (azslParser::Triangle - 192)) + | (1ULL << (azslParser::TriangleAdj - 192)) + | (1ULL << (azslParser::TriangleStream - 192)) + | (1ULL << (azslParser::Uniform - 192)) + | (1ULL << (azslParser::Uint - 192)) + | (1ULL << (azslParser::Uint1 - 192)) + | (1ULL << (azslParser::Uint2 - 192)) + | (1ULL << (azslParser::Uint3 - 192)) + | (1ULL << (azslParser::Uint4 - 192)) + | (1ULL << (azslParser::Uint1x1 - 192)) + | (1ULL << (azslParser::Uint1x2 - 192)) + | (1ULL << (azslParser::Uint1x3 - 192)) + | (1ULL << (azslParser::Uint1x4 - 192)) + | (1ULL << (azslParser::Uint2x1 - 192)) + | (1ULL << (azslParser::Uint2x2 - 192)) + | (1ULL << (azslParser::Uint2x3 - 192)) + | (1ULL << (azslParser::Uint2x4 - 192)) + | (1ULL << (azslParser::Uint3x1 - 192)) + | (1ULL << (azslParser::Uint3x2 - 192)) + | (1ULL << (azslParser::Uint3x3 - 192)) + | (1ULL << (azslParser::Uint3x4 - 192)) + | (1ULL << (azslParser::Uint4x1 - 192)) + | (1ULL << (azslParser::Uint4x2 - 192)) + | (1ULL << (azslParser::Uint4x3 - 192)) + | (1ULL << (azslParser::Uint4x4 - 192)) + | (1ULL << (azslParser::Uint16_t - 192)) + | (1ULL << (azslParser::Uint32_t - 192)) + | (1ULL << (azslParser::Uint64_t - 192)) + | (1ULL << (azslParser::UNorm - 192)) + | (1ULL << (azslParser::Unsigned - 192)) + | (1ULL << (azslParser::Dword - 192)) + | (1ULL << (azslParser::Dword1 - 192)) + | (1ULL << (azslParser::Dword2 - 192)) + | (1ULL << (azslParser::Dword3 - 192)) + | (1ULL << (azslParser::Dword4 - 192)) + | (1ULL << (azslParser::Dword1x1 - 192)) + | (1ULL << (azslParser::Dword1x2 - 192)) + | (1ULL << (azslParser::Dword1x3 - 192)) + | (1ULL << (azslParser::Dword1x4 - 192)) + | (1ULL << (azslParser::Dword2x1 - 192)) + | (1ULL << (azslParser::Dword2x2 - 192)) + | (1ULL << (azslParser::Dword2x3 - 192)) + | (1ULL << (azslParser::Dword2x4 - 192)) + | (1ULL << (azslParser::Dword3x1 - 192)) + | (1ULL << (azslParser::Dword3x2 - 192)) + | (1ULL << (azslParser::Dword3x3 - 192)) + | (1ULL << (azslParser::Dword3x4 - 192)) + | (1ULL << (azslParser::Dword4x1 - 192)) + | (1ULL << (azslParser::Dword4x2 - 192)) + | (1ULL << (azslParser::Dword4x3 - 192)))) != 0) || ((((_la - 256) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 256)) & ((1ULL << (azslParser::Dword4x4 - 256)) + | (1ULL << (azslParser::Vector - 256)) + | (1ULL << (azslParser::Volatile - 256)) + | (1ULL << (azslParser::Void - 256)) + | (1ULL << (azslParser::StateObjectConfig - 256)) + | (1ULL << (azslParser::LocalRootSignature - 256)) + | (1ULL << (azslParser::GlobalRootSignature - 256)) + | (1ULL << (azslParser::SubobjectToExportsAssociation - 256)) + | (1ULL << (azslParser::RaytracingShaderConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig1 - 256)) + | (1ULL << (azslParser::TriangleHitGroup - 256)) + | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 256)) + | (1ULL << (azslParser::LeftBracket - 256)) + | (1ULL << (azslParser::LeftDoubleBracket - 256)))) != 0) || ((((_la - 334) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 334)) & ((1ULL << (azslParser::ColonColon - 334)) + | (1ULL << (azslParser::Semi - 334)) + | (1ULL << (azslParser::KW_TypeAlias - 334)) + | (1ULL << (azslParser::KW_Typedef - 334)) + | (1ULL << (azslParser::KW_Typeof - 334)) + | (1ULL << (azslParser::ShaderResourceGroupSemantic - 334)) + | (1ULL << (azslParser::ShaderResourceGroup - 334)) + | (1ULL << (azslParser::KW_ext_print_message - 334)) + | (1ULL << (azslParser::KW_ext_print_symbol - 334)) + | (1ULL << (azslParser::Identifier - 334)))) != 0)) { + setState(274); antlrcpp::downCast(_localctx)->topLevelDeclarationContext = topLevelDeclaration(); antlrcpp::downCast(_localctx)->Declarations.push_back(antlrcpp::downCast(_localctx)->topLevelDeclarationContext); - setState(281); + setState(279); _errHandler->sync(this); _la = _input->LA(1); } - setState(282); + setState(280); match(azslParser::EOF); } @@ -432,75 +438,75 @@ azslParser::TopLevelDeclarationContext* azslParser::topLevelDeclaration() { exitRule(); }); try { - setState(294); + setState(292); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 1, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(284); + setState(282); anyStructuredTypeDefinitionStatement(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(285); + setState(283); variableDeclarationStatement(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(286); + setState(284); attributedFunctionDefinition(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(287); + setState(285); attributedFunctionDeclaration(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(288); + setState(286); attributeSpecifierSequence(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(289); + setState(287); compilerExtensionStatement(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(290); + setState(288); typeAliasingDefinitionStatement(); break; } case 8: { enterOuterAlt(_localctx, 8); - setState(291); + setState(289); attributedSrgDefinition(); break; } case 9: { enterOuterAlt(_localctx, 9); - setState(292); + setState(290); attributedSrgSemantic(); break; } case 10: { enterOuterAlt(_localctx, 10); - setState(293); + setState(291); match(azslParser::Semi); break; } @@ -562,19 +568,19 @@ azslParser::IdExpressionContext* azslParser::idExpression() { exitRule(); }); try { - setState(298); + setState(296); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 2, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(296); + setState(294); unqualifiedId(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(297); + setState(295); qualifiedId(); break; } @@ -633,7 +639,7 @@ azslParser::UnqualifiedIdContext* azslParser::unqualifiedId() { }); try { enterOuterAlt(_localctx, 1); - setState(300); + setState(298); match(azslParser::Identifier); } @@ -690,9 +696,9 @@ azslParser::QualifiedIdContext* azslParser::qualifiedId() { }); try { enterOuterAlt(_localctx, 1); - setState(302); + setState(300); nestedNameSpecifier(); - setState(303); + setState(301); unqualifiedId(); } @@ -759,25 +765,25 @@ azslParser::NestedNameSpecifierContext* azslParser::nestedNameSpecifier() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(306); + setState(304); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::ColonColon) { - setState(305); + setState(303); antlrcpp::downCast(_localctx)->GlobalSROToken = match(azslParser::ColonColon); } - setState(312); + setState(310); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 4, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(308); + setState(306); match(azslParser::Identifier); - setState(309); + setState(307); match(azslParser::ColonColon); } - setState(314); + setState(312); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 4, _ctx); } @@ -836,9 +842,9 @@ azslParser::ClassDefinitionStatementContext* azslParser::classDefinitionStatemen }); try { enterOuterAlt(_localctx, 1); - setState(315); + setState(313); classDefinition(); - setState(316); + setState(314); match(azslParser::Semi); } @@ -916,21 +922,21 @@ azslParser::ClassDefinitionContext* azslParser::classDefinition() { }); try { enterOuterAlt(_localctx, 1); - setState(318); + setState(316); match(azslParser::Class); - setState(319); + setState(317); antlrcpp::downCast(_localctx)->Name = match(azslParser::Identifier); - setState(321); + setState(319); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::Colon) { - setState(320); + setState(318); antlrcpp::downCast(_localctx)->BaseListOpt = baseList(); } - setState(323); + setState(321); match(azslParser::LeftBrace); - setState(327); + setState(325); _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && @@ -959,9 +965,9 @@ azslParser::ClassDefinitionContext* azslParser::classDefinition() { | (1ULL << azslParser::Buffer) | (1ULL << azslParser::BuiltInTriangleIntersectionAttributes) | (1ULL << azslParser::ByteAddressBuffer) + | (1ULL << azslParser::Centroid) | (1ULL << azslParser::ConstantBuffer) | (1ULL << azslParser::ConstantBufferCamel) - | (1ULL << azslParser::Centroid) | (1ULL << azslParser::Class) | (1ULL << azslParser::ColumnMajor) | (1ULL << azslParser::Const) @@ -987,207 +993,213 @@ azslParser::ClassDefinitionContext* azslParser::classDefinition() { | (1ULL << azslParser::Double4x2) | (1ULL << azslParser::Double4x3) | (1ULL << azslParser::Double4x4) - | (1ULL << azslParser::Enum) - | (1ULL << azslParser::Extern))) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & ((1ULL << (azslParser::Float - 66)) - | (1ULL << (azslParser::Float1 - 66)) - | (1ULL << (azslParser::Float2 - 66)) - | (1ULL << (azslParser::Float3 - 66)) - | (1ULL << (azslParser::Float4 - 66)) - | (1ULL << (azslParser::Float1x1 - 66)) - | (1ULL << (azslParser::Float1x2 - 66)) - | (1ULL << (azslParser::Float1x3 - 66)) - | (1ULL << (azslParser::Float1x4 - 66)) - | (1ULL << (azslParser::Float2x1 - 66)) - | (1ULL << (azslParser::Float2x2 - 66)) - | (1ULL << (azslParser::Float2x3 - 66)) - | (1ULL << (azslParser::Float2x4 - 66)) - | (1ULL << (azslParser::Float3x1 - 66)) - | (1ULL << (azslParser::Float3x2 - 66)) - | (1ULL << (azslParser::Float3x3 - 66)) - | (1ULL << (azslParser::Float3x4 - 66)) - | (1ULL << (azslParser::Float4x1 - 66)) - | (1ULL << (azslParser::Float4x2 - 66)) - | (1ULL << (azslParser::Float4x3 - 66)) - | (1ULL << (azslParser::Float4x4 - 66)) - | (1ULL << (azslParser::Groupshared - 66)) - | (1ULL << (azslParser::Half - 66)) - | (1ULL << (azslParser::Half1 - 66)) - | (1ULL << (azslParser::Half2 - 66)) - | (1ULL << (azslParser::Half3 - 66)) - | (1ULL << (azslParser::Half4 - 66)) - | (1ULL << (azslParser::Half1x1 - 66)) - | (1ULL << (azslParser::Half1x2 - 66)) - | (1ULL << (azslParser::Half1x3 - 66)) - | (1ULL << (azslParser::Half1x4 - 66)) - | (1ULL << (azslParser::Half2x1 - 66)) - | (1ULL << (azslParser::Half2x2 - 66)) - | (1ULL << (azslParser::Half2x3 - 66)) - | (1ULL << (azslParser::Half2x4 - 66)) - | (1ULL << (azslParser::Half3x1 - 66)) - | (1ULL << (azslParser::Half3x2 - 66)) - | (1ULL << (azslParser::Half3x3 - 66)) - | (1ULL << (azslParser::Half3x4 - 66)) - | (1ULL << (azslParser::Half4x1 - 66)) - | (1ULL << (azslParser::Half4x2 - 66)) - | (1ULL << (azslParser::Half4x3 - 66)) - | (1ULL << (azslParser::Half4x4 - 66)) - | (1ULL << (azslParser::In - 66)) - | (1ULL << (azslParser::Inline - 66)) - | (1ULL << (azslParser::Rootconstant - 66)) - | (1ULL << (azslParser::Inout - 66)) - | (1ULL << (azslParser::InputPatch - 66)) - | (1ULL << (azslParser::Int - 66)) - | (1ULL << (azslParser::Int32_t - 66)) - | (1ULL << (azslParser::Int64_t - 66)) - | (1ULL << (azslParser::Int1 - 66)) - | (1ULL << (azslParser::Int2 - 66)) - | (1ULL << (azslParser::Int3 - 66)) - | (1ULL << (azslParser::Int4 - 66)) - | (1ULL << (azslParser::Int1x1 - 66)) - | (1ULL << (azslParser::Int1x2 - 66)) - | (1ULL << (azslParser::Int1x3 - 66)) - | (1ULL << (azslParser::Int1x4 - 66)) - | (1ULL << (azslParser::Int2x1 - 66)) - | (1ULL << (azslParser::Int2x2 - 66)))) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & ((1ULL << (azslParser::Int2x3 - 130)) - | (1ULL << (azslParser::Int2x4 - 130)) - | (1ULL << (azslParser::Int3x1 - 130)) - | (1ULL << (azslParser::Int3x2 - 130)) - | (1ULL << (azslParser::Int3x3 - 130)) - | (1ULL << (azslParser::Int3x4 - 130)) - | (1ULL << (azslParser::Int4x1 - 130)) - | (1ULL << (azslParser::Int4x2 - 130)) - | (1ULL << (azslParser::Int4x3 - 130)) - | (1ULL << (azslParser::Int4x4 - 130)) - | (1ULL << (azslParser::Interface - 130)) - | (1ULL << (azslParser::Line_ - 130)) - | (1ULL << (azslParser::LineAdj - 130)) - | (1ULL << (azslParser::Linear - 130)) - | (1ULL << (azslParser::LineStream - 130)) - | (1ULL << (azslParser::Matrix - 130)) - | (1ULL << (azslParser::Nointerpolation - 130)) - | (1ULL << (azslParser::Noperspective - 130)) - | (1ULL << (azslParser::Option - 130)) - | (1ULL << (azslParser::Out - 130)) - | (1ULL << (azslParser::OutputPatch - 130)) - | (1ULL << (azslParser::Point - 130)) - | (1ULL << (azslParser::PointStream - 130)) - | (1ULL << (azslParser::Precise - 130)) - | (1ULL << (azslParser::RasterizerOrderedBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture3D - 130)) - | (1ULL << (azslParser::RayDesc - 130)) - | (1ULL << (azslParser::RaytracingAccelerationStructure - 130)) - | (1ULL << (azslParser::RowMajor - 130)) - | (1ULL << (azslParser::RWBuffer - 130)) - | (1ULL << (azslParser::RWByteAddressBuffer - 130)) - | (1ULL << (azslParser::RWStructuredBuffer - 130)) - | (1ULL << (azslParser::RWTexture1D - 130)) - | (1ULL << (azslParser::RWTexture1DArray - 130)) - | (1ULL << (azslParser::RWTexture2D - 130)) - | (1ULL << (azslParser::RWTexture2DArray - 130)) - | (1ULL << (azslParser::RWTexture3D - 130)) - | (1ULL << (azslParser::Sample - 130)) - | (1ULL << (azslParser::Sampler - 130)) - | (1ULL << (azslParser::SamplerCapitalS - 130)) - | (1ULL << (azslParser::SamplerComparisonState - 130)) - | (1ULL << (azslParser::SamplerState - 130)) - | (1ULL << (azslParser::Shared - 130)) - | (1ULL << (azslParser::Static - 130)) - | (1ULL << (azslParser::Struct - 130)) - | (1ULL << (azslParser::StructuredBuffer - 130)) - | (1ULL << (azslParser::SubpassInput - 130)) - | (1ULL << (azslParser::SubpassInputMS - 130)) - | (1ULL << (azslParser::Texture1D - 130)) - | (1ULL << (azslParser::Texture1DArray - 130)) - | (1ULL << (azslParser::Texture2D - 130)))) != 0) || ((((_la - 194) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 194)) & ((1ULL << (azslParser::Texture2DArray - 194)) - | (1ULL << (azslParser::Texture2DMS - 194)) - | (1ULL << (azslParser::Texture2DMSArray - 194)) - | (1ULL << (azslParser::Texture3D - 194)) - | (1ULL << (azslParser::TextureCube - 194)) - | (1ULL << (azslParser::TextureCubeArray - 194)) - | (1ULL << (azslParser::Triangle - 194)) - | (1ULL << (azslParser::TriangleAdj - 194)) - | (1ULL << (azslParser::TriangleStream - 194)) - | (1ULL << (azslParser::Uniform - 194)) - | (1ULL << (azslParser::Uint - 194)) - | (1ULL << (azslParser::Uint32_t - 194)) - | (1ULL << (azslParser::Uint64_t - 194)) - | (1ULL << (azslParser::UnsignedInt - 194)) - | (1ULL << (azslParser::Uint1 - 194)) - | (1ULL << (azslParser::Uint2 - 194)) - | (1ULL << (azslParser::Uint3 - 194)) - | (1ULL << (azslParser::Uint4 - 194)) - | (1ULL << (azslParser::Uint1x1 - 194)) - | (1ULL << (azslParser::Uint1x2 - 194)) - | (1ULL << (azslParser::Uint1x3 - 194)) - | (1ULL << (azslParser::Uint1x4 - 194)) - | (1ULL << (azslParser::Uint2x1 - 194)) - | (1ULL << (azslParser::Uint2x2 - 194)) - | (1ULL << (azslParser::Uint2x3 - 194)) - | (1ULL << (azslParser::Uint2x4 - 194)) - | (1ULL << (azslParser::Uint3x1 - 194)) - | (1ULL << (azslParser::Uint3x2 - 194)) - | (1ULL << (azslParser::Uint3x3 - 194)) - | (1ULL << (azslParser::Uint3x4 - 194)) - | (1ULL << (azslParser::Uint4x1 - 194)) - | (1ULL << (azslParser::Uint4x2 - 194)) - | (1ULL << (azslParser::Uint4x3 - 194)) - | (1ULL << (azslParser::Uint4x4 - 194)) - | (1ULL << (azslParser::Dword - 194)) - | (1ULL << (azslParser::Dword1 - 194)) - | (1ULL << (azslParser::Dword2 - 194)) - | (1ULL << (azslParser::Dword3 - 194)) - | (1ULL << (azslParser::Dword4 - 194)) - | (1ULL << (azslParser::Dword1x1 - 194)) - | (1ULL << (azslParser::Dword1x2 - 194)) - | (1ULL << (azslParser::Dword1x3 - 194)) - | (1ULL << (azslParser::Dword1x4 - 194)) - | (1ULL << (azslParser::Dword2x1 - 194)) - | (1ULL << (azslParser::Dword2x2 - 194)) - | (1ULL << (azslParser::Dword2x3 - 194)) - | (1ULL << (azslParser::Dword2x4 - 194)) - | (1ULL << (azslParser::Dword3x1 - 194)) - | (1ULL << (azslParser::Dword3x2 - 194)) - | (1ULL << (azslParser::Dword3x3 - 194)) - | (1ULL << (azslParser::Dword3x4 - 194)) - | (1ULL << (azslParser::Dword4x1 - 194)) - | (1ULL << (azslParser::Dword4x2 - 194)) - | (1ULL << (azslParser::Dword4x3 - 194)) - | (1ULL << (azslParser::Dword4x4 - 194)) - | (1ULL << (azslParser::Vector - 194)) - | (1ULL << (azslParser::Volatile - 194)) - | (1ULL << (azslParser::Void - 194)) - | (1ULL << (azslParser::StateObjectConfig - 194)) - | (1ULL << (azslParser::LocalRootSignature - 194)) - | (1ULL << (azslParser::GlobalRootSignature - 194)) - | (1ULL << (azslParser::SubobjectToExportsAssociation - 194)) - | (1ULL << (azslParser::RaytracingShaderConfig - 194)))) != 0) || ((((_la - 258) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 258)) & ((1ULL << (azslParser::RaytracingPipelineConfig - 258)) - | (1ULL << (azslParser::RaytracingPipelineConfig1 - 258)) - | (1ULL << (azslParser::TriangleHitGroup - 258)) - | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 258)) - | (1ULL << (azslParser::LeftBracket - 258)) - | (1ULL << (azslParser::LeftDoubleBracket - 258)))) != 0) || ((((_la - 326) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 326)) & ((1ULL << (azslParser::ColonColon - 326)) - | (1ULL << (azslParser::KW_TypeAlias - 326)) - | (1ULL << (azslParser::KW_Typedef - 326)) - | (1ULL << (azslParser::KW_Typeof - 326)) - | (1ULL << (azslParser::Identifier - 326)))) != 0)) { - setState(324); + | (1ULL << azslParser::Enum))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (azslParser::Extern - 64)) + | (1ULL << (azslParser::Float - 64)) + | (1ULL << (azslParser::Float1 - 64)) + | (1ULL << (azslParser::Float2 - 64)) + | (1ULL << (azslParser::Float3 - 64)) + | (1ULL << (azslParser::Float4 - 64)) + | (1ULL << (azslParser::Float1x1 - 64)) + | (1ULL << (azslParser::Float1x2 - 64)) + | (1ULL << (azslParser::Float1x3 - 64)) + | (1ULL << (azslParser::Float1x4 - 64)) + | (1ULL << (azslParser::Float2x1 - 64)) + | (1ULL << (azslParser::Float2x2 - 64)) + | (1ULL << (azslParser::Float2x3 - 64)) + | (1ULL << (azslParser::Float2x4 - 64)) + | (1ULL << (azslParser::Float3x1 - 64)) + | (1ULL << (azslParser::Float3x2 - 64)) + | (1ULL << (azslParser::Float3x3 - 64)) + | (1ULL << (azslParser::Float3x4 - 64)) + | (1ULL << (azslParser::Float4x1 - 64)) + | (1ULL << (azslParser::Float4x2 - 64)) + | (1ULL << (azslParser::Float4x3 - 64)) + | (1ULL << (azslParser::Float4x4 - 64)) + | (1ULL << (azslParser::Groupshared - 64)) + | (1ULL << (azslParser::Globallycoherent - 64)) + | (1ULL << (azslParser::Half - 64)) + | (1ULL << (azslParser::Half1 - 64)) + | (1ULL << (azslParser::Half2 - 64)) + | (1ULL << (azslParser::Half3 - 64)) + | (1ULL << (azslParser::Half4 - 64)) + | (1ULL << (azslParser::Half1x1 - 64)) + | (1ULL << (azslParser::Half1x2 - 64)) + | (1ULL << (azslParser::Half1x3 - 64)) + | (1ULL << (azslParser::Half1x4 - 64)) + | (1ULL << (azslParser::Half2x1 - 64)) + | (1ULL << (azslParser::Half2x2 - 64)) + | (1ULL << (azslParser::Half2x3 - 64)) + | (1ULL << (azslParser::Half2x4 - 64)) + | (1ULL << (azslParser::Half3x1 - 64)) + | (1ULL << (azslParser::Half3x2 - 64)) + | (1ULL << (azslParser::Half3x3 - 64)) + | (1ULL << (azslParser::Half3x4 - 64)) + | (1ULL << (azslParser::Half4x1 - 64)) + | (1ULL << (azslParser::Half4x2 - 64)) + | (1ULL << (azslParser::Half4x3 - 64)) + | (1ULL << (azslParser::Half4x4 - 64)) + | (1ULL << (azslParser::In - 64)) + | (1ULL << (azslParser::Inline - 64)) + | (1ULL << (azslParser::Rootconstant - 64)) + | (1ULL << (azslParser::Inout - 64)) + | (1ULL << (azslParser::InputPatch - 64)) + | (1ULL << (azslParser::Int - 64)) + | (1ULL << (azslParser::Int16_t - 64)) + | (1ULL << (azslParser::Int32_t - 64)) + | (1ULL << (azslParser::Int64_t - 64)) + | (1ULL << (azslParser::Int1 - 64)) + | (1ULL << (azslParser::Int2 - 64)) + | (1ULL << (azslParser::Int3 - 64)) + | (1ULL << (azslParser::Int4 - 64)) + | (1ULL << (azslParser::Int1x1 - 64)))) != 0) || ((((_la - 128) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 128)) & ((1ULL << (azslParser::Int1x2 - 128)) + | (1ULL << (azslParser::Int1x3 - 128)) + | (1ULL << (azslParser::Int1x4 - 128)) + | (1ULL << (azslParser::Int2x1 - 128)) + | (1ULL << (azslParser::Int2x2 - 128)) + | (1ULL << (azslParser::Int2x3 - 128)) + | (1ULL << (azslParser::Int2x4 - 128)) + | (1ULL << (azslParser::Int3x1 - 128)) + | (1ULL << (azslParser::Int3x2 - 128)) + | (1ULL << (azslParser::Int3x3 - 128)) + | (1ULL << (azslParser::Int3x4 - 128)) + | (1ULL << (azslParser::Int4x1 - 128)) + | (1ULL << (azslParser::Int4x2 - 128)) + | (1ULL << (azslParser::Int4x3 - 128)) + | (1ULL << (azslParser::Int4x4 - 128)) + | (1ULL << (azslParser::Interface - 128)) + | (1ULL << (azslParser::Line_ - 128)) + | (1ULL << (azslParser::LineAdj - 128)) + | (1ULL << (azslParser::Linear - 128)) + | (1ULL << (azslParser::LineStream - 128)) + | (1ULL << (azslParser::Matrix - 128)) + | (1ULL << (azslParser::Nointerpolation - 128)) + | (1ULL << (azslParser::Noperspective - 128)) + | (1ULL << (azslParser::Option - 128)) + | (1ULL << (azslParser::Out - 128)) + | (1ULL << (azslParser::OutputPatch - 128)) + | (1ULL << (azslParser::Point - 128)) + | (1ULL << (azslParser::PointStream - 128)) + | (1ULL << (azslParser::Precise - 128)) + | (1ULL << (azslParser::RasterizerOrderedBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture3D - 128)) + | (1ULL << (azslParser::RayDesc - 128)) + | (1ULL << (azslParser::RaytracingAccelerationStructure - 128)) + | (1ULL << (azslParser::RowMajor - 128)) + | (1ULL << (azslParser::RWBuffer - 128)) + | (1ULL << (azslParser::RWByteAddressBuffer - 128)) + | (1ULL << (azslParser::RWStructuredBuffer - 128)) + | (1ULL << (azslParser::RWTexture1D - 128)) + | (1ULL << (azslParser::RWTexture1DArray - 128)) + | (1ULL << (azslParser::RWTexture2D - 128)) + | (1ULL << (azslParser::RWTexture2DArray - 128)) + | (1ULL << (azslParser::RWTexture3D - 128)) + | (1ULL << (azslParser::Sample - 128)) + | (1ULL << (azslParser::Sampler - 128)) + | (1ULL << (azslParser::SamplerCapitalS - 128)) + | (1ULL << (azslParser::SamplerComparisonState - 128)) + | (1ULL << (azslParser::SamplerStateCamel - 128)) + | (1ULL << (azslParser::SamplerState - 128)) + | (1ULL << (azslParser::Shared - 128)) + | (1ULL << (azslParser::SNorm - 128)) + | (1ULL << (azslParser::Static - 128)) + | (1ULL << (azslParser::Struct - 128)))) != 0) || ((((_la - 192) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 192)) & ((1ULL << (azslParser::StructuredBuffer - 192)) + | (1ULL << (azslParser::SubpassInput - 192)) + | (1ULL << (azslParser::SubpassInputMS - 192)) + | (1ULL << (azslParser::Texture1D - 192)) + | (1ULL << (azslParser::Texture1DArray - 192)) + | (1ULL << (azslParser::Texture2D - 192)) + | (1ULL << (azslParser::Texture2DArray - 192)) + | (1ULL << (azslParser::Texture2DMS - 192)) + | (1ULL << (azslParser::Texture2DMSArray - 192)) + | (1ULL << (azslParser::Texture3D - 192)) + | (1ULL << (azslParser::TextureCube - 192)) + | (1ULL << (azslParser::TextureCubeArray - 192)) + | (1ULL << (azslParser::Triangle - 192)) + | (1ULL << (azslParser::TriangleAdj - 192)) + | (1ULL << (azslParser::TriangleStream - 192)) + | (1ULL << (azslParser::Uniform - 192)) + | (1ULL << (azslParser::Uint - 192)) + | (1ULL << (azslParser::Uint1 - 192)) + | (1ULL << (azslParser::Uint2 - 192)) + | (1ULL << (azslParser::Uint3 - 192)) + | (1ULL << (azslParser::Uint4 - 192)) + | (1ULL << (azslParser::Uint1x1 - 192)) + | (1ULL << (azslParser::Uint1x2 - 192)) + | (1ULL << (azslParser::Uint1x3 - 192)) + | (1ULL << (azslParser::Uint1x4 - 192)) + | (1ULL << (azslParser::Uint2x1 - 192)) + | (1ULL << (azslParser::Uint2x2 - 192)) + | (1ULL << (azslParser::Uint2x3 - 192)) + | (1ULL << (azslParser::Uint2x4 - 192)) + | (1ULL << (azslParser::Uint3x1 - 192)) + | (1ULL << (azslParser::Uint3x2 - 192)) + | (1ULL << (azslParser::Uint3x3 - 192)) + | (1ULL << (azslParser::Uint3x4 - 192)) + | (1ULL << (azslParser::Uint4x1 - 192)) + | (1ULL << (azslParser::Uint4x2 - 192)) + | (1ULL << (azslParser::Uint4x3 - 192)) + | (1ULL << (azslParser::Uint4x4 - 192)) + | (1ULL << (azslParser::Uint16_t - 192)) + | (1ULL << (azslParser::Uint32_t - 192)) + | (1ULL << (azslParser::Uint64_t - 192)) + | (1ULL << (azslParser::UNorm - 192)) + | (1ULL << (azslParser::Unsigned - 192)) + | (1ULL << (azslParser::Dword - 192)) + | (1ULL << (azslParser::Dword1 - 192)) + | (1ULL << (azslParser::Dword2 - 192)) + | (1ULL << (azslParser::Dword3 - 192)) + | (1ULL << (azslParser::Dword4 - 192)) + | (1ULL << (azslParser::Dword1x1 - 192)) + | (1ULL << (azslParser::Dword1x2 - 192)) + | (1ULL << (azslParser::Dword1x3 - 192)) + | (1ULL << (azslParser::Dword1x4 - 192)) + | (1ULL << (azslParser::Dword2x1 - 192)) + | (1ULL << (azslParser::Dword2x2 - 192)) + | (1ULL << (azslParser::Dword2x3 - 192)) + | (1ULL << (azslParser::Dword2x4 - 192)) + | (1ULL << (azslParser::Dword3x1 - 192)) + | (1ULL << (azslParser::Dword3x2 - 192)) + | (1ULL << (azslParser::Dword3x3 - 192)) + | (1ULL << (azslParser::Dword3x4 - 192)) + | (1ULL << (azslParser::Dword4x1 - 192)) + | (1ULL << (azslParser::Dword4x2 - 192)) + | (1ULL << (azslParser::Dword4x3 - 192)))) != 0) || ((((_la - 256) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 256)) & ((1ULL << (azslParser::Dword4x4 - 256)) + | (1ULL << (azslParser::Vector - 256)) + | (1ULL << (azslParser::Volatile - 256)) + | (1ULL << (azslParser::Void - 256)) + | (1ULL << (azslParser::StateObjectConfig - 256)) + | (1ULL << (azslParser::LocalRootSignature - 256)) + | (1ULL << (azslParser::GlobalRootSignature - 256)) + | (1ULL << (azslParser::SubobjectToExportsAssociation - 256)) + | (1ULL << (azslParser::RaytracingShaderConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig1 - 256)) + | (1ULL << (azslParser::TriangleHitGroup - 256)) + | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 256)) + | (1ULL << (azslParser::LeftBracket - 256)) + | (1ULL << (azslParser::LeftDoubleBracket - 256)))) != 0) || ((((_la - 334) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 334)) & ((1ULL << (azslParser::ColonColon - 334)) + | (1ULL << (azslParser::KW_TypeAlias - 334)) + | (1ULL << (azslParser::KW_Typedef - 334)) + | (1ULL << (azslParser::KW_Typeof - 334)) + | (1ULL << (azslParser::Identifier - 334)))) != 0)) { + setState(322); classMemberDeclaration(); - setState(329); + setState(327); _errHandler->sync(this); _la = _input->LA(1); } - setState(330); + setState(328); match(azslParser::RightBrace); } @@ -1257,19 +1269,19 @@ azslParser::BaseListContext* azslParser::baseList() { }); try { enterOuterAlt(_localctx, 1); - setState(332); + setState(330); match(azslParser::Colon); - setState(333); + setState(331); idExpression(); - setState(338); + setState(336); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::Comma) { - setState(334); + setState(332); match(azslParser::Comma); - setState(335); + setState(333); idExpression(); - setState(340); + setState(338); _errHandler->sync(this); _la = _input->LA(1); } @@ -1343,47 +1355,47 @@ azslParser::ClassMemberDeclarationContext* azslParser::classMemberDeclaration() exitRule(); }); try { - setState(347); + setState(345); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 8, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(341); + setState(339); variableDeclarationStatement(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(342); + setState(340); attributedFunctionDefinition(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(343); + setState(341); attributedFunctionDeclaration(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(344); + setState(342); typeAliasingDefinitionStatement(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(345); + setState(343); anyStructuredTypeDefinitionStatement(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(346); + setState(344); attributeSpecifierAny(); break; } @@ -1446,9 +1458,9 @@ azslParser::StructDefinitionStatementContext* azslParser::structDefinitionStatem }); try { enterOuterAlt(_localctx, 1); - setState(349); + setState(347); structDefinition(); - setState(350); + setState(348); match(azslParser::Semi); } @@ -1522,13 +1534,13 @@ azslParser::StructDefinitionContext* azslParser::structDefinition() { }); try { enterOuterAlt(_localctx, 1); - setState(352); + setState(350); match(azslParser::Struct); - setState(353); + setState(351); antlrcpp::downCast(_localctx)->Name = match(azslParser::Identifier); - setState(354); + setState(352); match(azslParser::LeftBrace); - setState(358); + setState(356); _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && @@ -1557,9 +1569,9 @@ azslParser::StructDefinitionContext* azslParser::structDefinition() { | (1ULL << azslParser::Buffer) | (1ULL << azslParser::BuiltInTriangleIntersectionAttributes) | (1ULL << azslParser::ByteAddressBuffer) + | (1ULL << azslParser::Centroid) | (1ULL << azslParser::ConstantBuffer) | (1ULL << azslParser::ConstantBufferCamel) - | (1ULL << azslParser::Centroid) | (1ULL << azslParser::Class) | (1ULL << azslParser::ColumnMajor) | (1ULL << azslParser::Const) @@ -1585,207 +1597,213 @@ azslParser::StructDefinitionContext* azslParser::structDefinition() { | (1ULL << azslParser::Double4x2) | (1ULL << azslParser::Double4x3) | (1ULL << azslParser::Double4x4) - | (1ULL << azslParser::Enum) - | (1ULL << azslParser::Extern))) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & ((1ULL << (azslParser::Float - 66)) - | (1ULL << (azslParser::Float1 - 66)) - | (1ULL << (azslParser::Float2 - 66)) - | (1ULL << (azslParser::Float3 - 66)) - | (1ULL << (azslParser::Float4 - 66)) - | (1ULL << (azslParser::Float1x1 - 66)) - | (1ULL << (azslParser::Float1x2 - 66)) - | (1ULL << (azslParser::Float1x3 - 66)) - | (1ULL << (azslParser::Float1x4 - 66)) - | (1ULL << (azslParser::Float2x1 - 66)) - | (1ULL << (azslParser::Float2x2 - 66)) - | (1ULL << (azslParser::Float2x3 - 66)) - | (1ULL << (azslParser::Float2x4 - 66)) - | (1ULL << (azslParser::Float3x1 - 66)) - | (1ULL << (azslParser::Float3x2 - 66)) - | (1ULL << (azslParser::Float3x3 - 66)) - | (1ULL << (azslParser::Float3x4 - 66)) - | (1ULL << (azslParser::Float4x1 - 66)) - | (1ULL << (azslParser::Float4x2 - 66)) - | (1ULL << (azslParser::Float4x3 - 66)) - | (1ULL << (azslParser::Float4x4 - 66)) - | (1ULL << (azslParser::Groupshared - 66)) - | (1ULL << (azslParser::Half - 66)) - | (1ULL << (azslParser::Half1 - 66)) - | (1ULL << (azslParser::Half2 - 66)) - | (1ULL << (azslParser::Half3 - 66)) - | (1ULL << (azslParser::Half4 - 66)) - | (1ULL << (azslParser::Half1x1 - 66)) - | (1ULL << (azslParser::Half1x2 - 66)) - | (1ULL << (azslParser::Half1x3 - 66)) - | (1ULL << (azslParser::Half1x4 - 66)) - | (1ULL << (azslParser::Half2x1 - 66)) - | (1ULL << (azslParser::Half2x2 - 66)) - | (1ULL << (azslParser::Half2x3 - 66)) - | (1ULL << (azslParser::Half2x4 - 66)) - | (1ULL << (azslParser::Half3x1 - 66)) - | (1ULL << (azslParser::Half3x2 - 66)) - | (1ULL << (azslParser::Half3x3 - 66)) - | (1ULL << (azslParser::Half3x4 - 66)) - | (1ULL << (azslParser::Half4x1 - 66)) - | (1ULL << (azslParser::Half4x2 - 66)) - | (1ULL << (azslParser::Half4x3 - 66)) - | (1ULL << (azslParser::Half4x4 - 66)) - | (1ULL << (azslParser::In - 66)) - | (1ULL << (azslParser::Inline - 66)) - | (1ULL << (azslParser::Rootconstant - 66)) - | (1ULL << (azslParser::Inout - 66)) - | (1ULL << (azslParser::InputPatch - 66)) - | (1ULL << (azslParser::Int - 66)) - | (1ULL << (azslParser::Int32_t - 66)) - | (1ULL << (azslParser::Int64_t - 66)) - | (1ULL << (azslParser::Int1 - 66)) - | (1ULL << (azslParser::Int2 - 66)) - | (1ULL << (azslParser::Int3 - 66)) - | (1ULL << (azslParser::Int4 - 66)) - | (1ULL << (azslParser::Int1x1 - 66)) - | (1ULL << (azslParser::Int1x2 - 66)) - | (1ULL << (azslParser::Int1x3 - 66)) - | (1ULL << (azslParser::Int1x4 - 66)) - | (1ULL << (azslParser::Int2x1 - 66)) - | (1ULL << (azslParser::Int2x2 - 66)))) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & ((1ULL << (azslParser::Int2x3 - 130)) - | (1ULL << (azslParser::Int2x4 - 130)) - | (1ULL << (azslParser::Int3x1 - 130)) - | (1ULL << (azslParser::Int3x2 - 130)) - | (1ULL << (azslParser::Int3x3 - 130)) - | (1ULL << (azslParser::Int3x4 - 130)) - | (1ULL << (azslParser::Int4x1 - 130)) - | (1ULL << (azslParser::Int4x2 - 130)) - | (1ULL << (azslParser::Int4x3 - 130)) - | (1ULL << (azslParser::Int4x4 - 130)) - | (1ULL << (azslParser::Interface - 130)) - | (1ULL << (azslParser::Line_ - 130)) - | (1ULL << (azslParser::LineAdj - 130)) - | (1ULL << (azslParser::Linear - 130)) - | (1ULL << (azslParser::LineStream - 130)) - | (1ULL << (azslParser::Matrix - 130)) - | (1ULL << (azslParser::Nointerpolation - 130)) - | (1ULL << (azslParser::Noperspective - 130)) - | (1ULL << (azslParser::Option - 130)) - | (1ULL << (azslParser::Out - 130)) - | (1ULL << (azslParser::OutputPatch - 130)) - | (1ULL << (azslParser::Point - 130)) - | (1ULL << (azslParser::PointStream - 130)) - | (1ULL << (azslParser::Precise - 130)) - | (1ULL << (azslParser::RasterizerOrderedBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture3D - 130)) - | (1ULL << (azslParser::RayDesc - 130)) - | (1ULL << (azslParser::RaytracingAccelerationStructure - 130)) - | (1ULL << (azslParser::RowMajor - 130)) - | (1ULL << (azslParser::RWBuffer - 130)) - | (1ULL << (azslParser::RWByteAddressBuffer - 130)) - | (1ULL << (azslParser::RWStructuredBuffer - 130)) - | (1ULL << (azslParser::RWTexture1D - 130)) - | (1ULL << (azslParser::RWTexture1DArray - 130)) - | (1ULL << (azslParser::RWTexture2D - 130)) - | (1ULL << (azslParser::RWTexture2DArray - 130)) - | (1ULL << (azslParser::RWTexture3D - 130)) - | (1ULL << (azslParser::Sample - 130)) - | (1ULL << (azslParser::Sampler - 130)) - | (1ULL << (azslParser::SamplerCapitalS - 130)) - | (1ULL << (azslParser::SamplerComparisonState - 130)) - | (1ULL << (azslParser::SamplerState - 130)) - | (1ULL << (azslParser::Shared - 130)) - | (1ULL << (azslParser::Static - 130)) - | (1ULL << (azslParser::Struct - 130)) - | (1ULL << (azslParser::StructuredBuffer - 130)) - | (1ULL << (azslParser::SubpassInput - 130)) - | (1ULL << (azslParser::SubpassInputMS - 130)) - | (1ULL << (azslParser::Texture1D - 130)) - | (1ULL << (azslParser::Texture1DArray - 130)) - | (1ULL << (azslParser::Texture2D - 130)))) != 0) || ((((_la - 194) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 194)) & ((1ULL << (azslParser::Texture2DArray - 194)) - | (1ULL << (azslParser::Texture2DMS - 194)) - | (1ULL << (azslParser::Texture2DMSArray - 194)) - | (1ULL << (azslParser::Texture3D - 194)) - | (1ULL << (azslParser::TextureCube - 194)) - | (1ULL << (azslParser::TextureCubeArray - 194)) - | (1ULL << (azslParser::Triangle - 194)) - | (1ULL << (azslParser::TriangleAdj - 194)) - | (1ULL << (azslParser::TriangleStream - 194)) - | (1ULL << (azslParser::Uniform - 194)) - | (1ULL << (azslParser::Uint - 194)) - | (1ULL << (azslParser::Uint32_t - 194)) - | (1ULL << (azslParser::Uint64_t - 194)) - | (1ULL << (azslParser::UnsignedInt - 194)) - | (1ULL << (azslParser::Uint1 - 194)) - | (1ULL << (azslParser::Uint2 - 194)) - | (1ULL << (azslParser::Uint3 - 194)) - | (1ULL << (azslParser::Uint4 - 194)) - | (1ULL << (azslParser::Uint1x1 - 194)) - | (1ULL << (azslParser::Uint1x2 - 194)) - | (1ULL << (azslParser::Uint1x3 - 194)) - | (1ULL << (azslParser::Uint1x4 - 194)) - | (1ULL << (azslParser::Uint2x1 - 194)) - | (1ULL << (azslParser::Uint2x2 - 194)) - | (1ULL << (azslParser::Uint2x3 - 194)) - | (1ULL << (azslParser::Uint2x4 - 194)) - | (1ULL << (azslParser::Uint3x1 - 194)) - | (1ULL << (azslParser::Uint3x2 - 194)) - | (1ULL << (azslParser::Uint3x3 - 194)) - | (1ULL << (azslParser::Uint3x4 - 194)) - | (1ULL << (azslParser::Uint4x1 - 194)) - | (1ULL << (azslParser::Uint4x2 - 194)) - | (1ULL << (azslParser::Uint4x3 - 194)) - | (1ULL << (azslParser::Uint4x4 - 194)) - | (1ULL << (azslParser::Dword - 194)) - | (1ULL << (azslParser::Dword1 - 194)) - | (1ULL << (azslParser::Dword2 - 194)) - | (1ULL << (azslParser::Dword3 - 194)) - | (1ULL << (azslParser::Dword4 - 194)) - | (1ULL << (azslParser::Dword1x1 - 194)) - | (1ULL << (azslParser::Dword1x2 - 194)) - | (1ULL << (azslParser::Dword1x3 - 194)) - | (1ULL << (azslParser::Dword1x4 - 194)) - | (1ULL << (azslParser::Dword2x1 - 194)) - | (1ULL << (azslParser::Dword2x2 - 194)) - | (1ULL << (azslParser::Dword2x3 - 194)) - | (1ULL << (azslParser::Dword2x4 - 194)) - | (1ULL << (azslParser::Dword3x1 - 194)) - | (1ULL << (azslParser::Dword3x2 - 194)) - | (1ULL << (azslParser::Dword3x3 - 194)) - | (1ULL << (azslParser::Dword3x4 - 194)) - | (1ULL << (azslParser::Dword4x1 - 194)) - | (1ULL << (azslParser::Dword4x2 - 194)) - | (1ULL << (azslParser::Dword4x3 - 194)) - | (1ULL << (azslParser::Dword4x4 - 194)) - | (1ULL << (azslParser::Vector - 194)) - | (1ULL << (azslParser::Volatile - 194)) - | (1ULL << (azslParser::Void - 194)) - | (1ULL << (azslParser::StateObjectConfig - 194)) - | (1ULL << (azslParser::LocalRootSignature - 194)) - | (1ULL << (azslParser::GlobalRootSignature - 194)) - | (1ULL << (azslParser::SubobjectToExportsAssociation - 194)) - | (1ULL << (azslParser::RaytracingShaderConfig - 194)))) != 0) || ((((_la - 258) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 258)) & ((1ULL << (azslParser::RaytracingPipelineConfig - 258)) - | (1ULL << (azslParser::RaytracingPipelineConfig1 - 258)) - | (1ULL << (azslParser::TriangleHitGroup - 258)) - | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 258)) - | (1ULL << (azslParser::LeftBracket - 258)) - | (1ULL << (azslParser::LeftDoubleBracket - 258)))) != 0) || ((((_la - 326) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 326)) & ((1ULL << (azslParser::ColonColon - 326)) - | (1ULL << (azslParser::KW_TypeAlias - 326)) - | (1ULL << (azslParser::KW_Typedef - 326)) - | (1ULL << (azslParser::KW_Typeof - 326)) - | (1ULL << (azslParser::Identifier - 326)))) != 0)) { - setState(355); + | (1ULL << azslParser::Enum))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (azslParser::Extern - 64)) + | (1ULL << (azslParser::Float - 64)) + | (1ULL << (azslParser::Float1 - 64)) + | (1ULL << (azslParser::Float2 - 64)) + | (1ULL << (azslParser::Float3 - 64)) + | (1ULL << (azslParser::Float4 - 64)) + | (1ULL << (azslParser::Float1x1 - 64)) + | (1ULL << (azslParser::Float1x2 - 64)) + | (1ULL << (azslParser::Float1x3 - 64)) + | (1ULL << (azslParser::Float1x4 - 64)) + | (1ULL << (azslParser::Float2x1 - 64)) + | (1ULL << (azslParser::Float2x2 - 64)) + | (1ULL << (azslParser::Float2x3 - 64)) + | (1ULL << (azslParser::Float2x4 - 64)) + | (1ULL << (azslParser::Float3x1 - 64)) + | (1ULL << (azslParser::Float3x2 - 64)) + | (1ULL << (azslParser::Float3x3 - 64)) + | (1ULL << (azslParser::Float3x4 - 64)) + | (1ULL << (azslParser::Float4x1 - 64)) + | (1ULL << (azslParser::Float4x2 - 64)) + | (1ULL << (azslParser::Float4x3 - 64)) + | (1ULL << (azslParser::Float4x4 - 64)) + | (1ULL << (azslParser::Groupshared - 64)) + | (1ULL << (azslParser::Globallycoherent - 64)) + | (1ULL << (azslParser::Half - 64)) + | (1ULL << (azslParser::Half1 - 64)) + | (1ULL << (azslParser::Half2 - 64)) + | (1ULL << (azslParser::Half3 - 64)) + | (1ULL << (azslParser::Half4 - 64)) + | (1ULL << (azslParser::Half1x1 - 64)) + | (1ULL << (azslParser::Half1x2 - 64)) + | (1ULL << (azslParser::Half1x3 - 64)) + | (1ULL << (azslParser::Half1x4 - 64)) + | (1ULL << (azslParser::Half2x1 - 64)) + | (1ULL << (azslParser::Half2x2 - 64)) + | (1ULL << (azslParser::Half2x3 - 64)) + | (1ULL << (azslParser::Half2x4 - 64)) + | (1ULL << (azslParser::Half3x1 - 64)) + | (1ULL << (azslParser::Half3x2 - 64)) + | (1ULL << (azslParser::Half3x3 - 64)) + | (1ULL << (azslParser::Half3x4 - 64)) + | (1ULL << (azslParser::Half4x1 - 64)) + | (1ULL << (azslParser::Half4x2 - 64)) + | (1ULL << (azslParser::Half4x3 - 64)) + | (1ULL << (azslParser::Half4x4 - 64)) + | (1ULL << (azslParser::In - 64)) + | (1ULL << (azslParser::Inline - 64)) + | (1ULL << (azslParser::Rootconstant - 64)) + | (1ULL << (azslParser::Inout - 64)) + | (1ULL << (azslParser::InputPatch - 64)) + | (1ULL << (azslParser::Int - 64)) + | (1ULL << (azslParser::Int16_t - 64)) + | (1ULL << (azslParser::Int32_t - 64)) + | (1ULL << (azslParser::Int64_t - 64)) + | (1ULL << (azslParser::Int1 - 64)) + | (1ULL << (azslParser::Int2 - 64)) + | (1ULL << (azslParser::Int3 - 64)) + | (1ULL << (azslParser::Int4 - 64)) + | (1ULL << (azslParser::Int1x1 - 64)))) != 0) || ((((_la - 128) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 128)) & ((1ULL << (azslParser::Int1x2 - 128)) + | (1ULL << (azslParser::Int1x3 - 128)) + | (1ULL << (azslParser::Int1x4 - 128)) + | (1ULL << (azslParser::Int2x1 - 128)) + | (1ULL << (azslParser::Int2x2 - 128)) + | (1ULL << (azslParser::Int2x3 - 128)) + | (1ULL << (azslParser::Int2x4 - 128)) + | (1ULL << (azslParser::Int3x1 - 128)) + | (1ULL << (azslParser::Int3x2 - 128)) + | (1ULL << (azslParser::Int3x3 - 128)) + | (1ULL << (azslParser::Int3x4 - 128)) + | (1ULL << (azslParser::Int4x1 - 128)) + | (1ULL << (azslParser::Int4x2 - 128)) + | (1ULL << (azslParser::Int4x3 - 128)) + | (1ULL << (azslParser::Int4x4 - 128)) + | (1ULL << (azslParser::Interface - 128)) + | (1ULL << (azslParser::Line_ - 128)) + | (1ULL << (azslParser::LineAdj - 128)) + | (1ULL << (azslParser::Linear - 128)) + | (1ULL << (azslParser::LineStream - 128)) + | (1ULL << (azslParser::Matrix - 128)) + | (1ULL << (azslParser::Nointerpolation - 128)) + | (1ULL << (azslParser::Noperspective - 128)) + | (1ULL << (azslParser::Option - 128)) + | (1ULL << (azslParser::Out - 128)) + | (1ULL << (azslParser::OutputPatch - 128)) + | (1ULL << (azslParser::Point - 128)) + | (1ULL << (azslParser::PointStream - 128)) + | (1ULL << (azslParser::Precise - 128)) + | (1ULL << (azslParser::RasterizerOrderedBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture3D - 128)) + | (1ULL << (azslParser::RayDesc - 128)) + | (1ULL << (azslParser::RaytracingAccelerationStructure - 128)) + | (1ULL << (azslParser::RowMajor - 128)) + | (1ULL << (azslParser::RWBuffer - 128)) + | (1ULL << (azslParser::RWByteAddressBuffer - 128)) + | (1ULL << (azslParser::RWStructuredBuffer - 128)) + | (1ULL << (azslParser::RWTexture1D - 128)) + | (1ULL << (azslParser::RWTexture1DArray - 128)) + | (1ULL << (azslParser::RWTexture2D - 128)) + | (1ULL << (azslParser::RWTexture2DArray - 128)) + | (1ULL << (azslParser::RWTexture3D - 128)) + | (1ULL << (azslParser::Sample - 128)) + | (1ULL << (azslParser::Sampler - 128)) + | (1ULL << (azslParser::SamplerCapitalS - 128)) + | (1ULL << (azslParser::SamplerComparisonState - 128)) + | (1ULL << (azslParser::SamplerStateCamel - 128)) + | (1ULL << (azslParser::SamplerState - 128)) + | (1ULL << (azslParser::Shared - 128)) + | (1ULL << (azslParser::SNorm - 128)) + | (1ULL << (azslParser::Static - 128)) + | (1ULL << (azslParser::Struct - 128)))) != 0) || ((((_la - 192) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 192)) & ((1ULL << (azslParser::StructuredBuffer - 192)) + | (1ULL << (azslParser::SubpassInput - 192)) + | (1ULL << (azslParser::SubpassInputMS - 192)) + | (1ULL << (azslParser::Texture1D - 192)) + | (1ULL << (azslParser::Texture1DArray - 192)) + | (1ULL << (azslParser::Texture2D - 192)) + | (1ULL << (azslParser::Texture2DArray - 192)) + | (1ULL << (azslParser::Texture2DMS - 192)) + | (1ULL << (azslParser::Texture2DMSArray - 192)) + | (1ULL << (azslParser::Texture3D - 192)) + | (1ULL << (azslParser::TextureCube - 192)) + | (1ULL << (azslParser::TextureCubeArray - 192)) + | (1ULL << (azslParser::Triangle - 192)) + | (1ULL << (azslParser::TriangleAdj - 192)) + | (1ULL << (azslParser::TriangleStream - 192)) + | (1ULL << (azslParser::Uniform - 192)) + | (1ULL << (azslParser::Uint - 192)) + | (1ULL << (azslParser::Uint1 - 192)) + | (1ULL << (azslParser::Uint2 - 192)) + | (1ULL << (azslParser::Uint3 - 192)) + | (1ULL << (azslParser::Uint4 - 192)) + | (1ULL << (azslParser::Uint1x1 - 192)) + | (1ULL << (azslParser::Uint1x2 - 192)) + | (1ULL << (azslParser::Uint1x3 - 192)) + | (1ULL << (azslParser::Uint1x4 - 192)) + | (1ULL << (azslParser::Uint2x1 - 192)) + | (1ULL << (azslParser::Uint2x2 - 192)) + | (1ULL << (azslParser::Uint2x3 - 192)) + | (1ULL << (azslParser::Uint2x4 - 192)) + | (1ULL << (azslParser::Uint3x1 - 192)) + | (1ULL << (azslParser::Uint3x2 - 192)) + | (1ULL << (azslParser::Uint3x3 - 192)) + | (1ULL << (azslParser::Uint3x4 - 192)) + | (1ULL << (azslParser::Uint4x1 - 192)) + | (1ULL << (azslParser::Uint4x2 - 192)) + | (1ULL << (azslParser::Uint4x3 - 192)) + | (1ULL << (azslParser::Uint4x4 - 192)) + | (1ULL << (azslParser::Uint16_t - 192)) + | (1ULL << (azslParser::Uint32_t - 192)) + | (1ULL << (azslParser::Uint64_t - 192)) + | (1ULL << (azslParser::UNorm - 192)) + | (1ULL << (azslParser::Unsigned - 192)) + | (1ULL << (azslParser::Dword - 192)) + | (1ULL << (azslParser::Dword1 - 192)) + | (1ULL << (azslParser::Dword2 - 192)) + | (1ULL << (azslParser::Dword3 - 192)) + | (1ULL << (azslParser::Dword4 - 192)) + | (1ULL << (azslParser::Dword1x1 - 192)) + | (1ULL << (azslParser::Dword1x2 - 192)) + | (1ULL << (azslParser::Dword1x3 - 192)) + | (1ULL << (azslParser::Dword1x4 - 192)) + | (1ULL << (azslParser::Dword2x1 - 192)) + | (1ULL << (azslParser::Dword2x2 - 192)) + | (1ULL << (azslParser::Dword2x3 - 192)) + | (1ULL << (azslParser::Dword2x4 - 192)) + | (1ULL << (azslParser::Dword3x1 - 192)) + | (1ULL << (azslParser::Dword3x2 - 192)) + | (1ULL << (azslParser::Dword3x3 - 192)) + | (1ULL << (azslParser::Dword3x4 - 192)) + | (1ULL << (azslParser::Dword4x1 - 192)) + | (1ULL << (azslParser::Dword4x2 - 192)) + | (1ULL << (azslParser::Dword4x3 - 192)))) != 0) || ((((_la - 256) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 256)) & ((1ULL << (azslParser::Dword4x4 - 256)) + | (1ULL << (azslParser::Vector - 256)) + | (1ULL << (azslParser::Volatile - 256)) + | (1ULL << (azslParser::Void - 256)) + | (1ULL << (azslParser::StateObjectConfig - 256)) + | (1ULL << (azslParser::LocalRootSignature - 256)) + | (1ULL << (azslParser::GlobalRootSignature - 256)) + | (1ULL << (azslParser::SubobjectToExportsAssociation - 256)) + | (1ULL << (azslParser::RaytracingShaderConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig1 - 256)) + | (1ULL << (azslParser::TriangleHitGroup - 256)) + | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 256)) + | (1ULL << (azslParser::LeftBracket - 256)) + | (1ULL << (azslParser::LeftDoubleBracket - 256)))) != 0) || ((((_la - 334) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 334)) & ((1ULL << (azslParser::ColonColon - 334)) + | (1ULL << (azslParser::KW_TypeAlias - 334)) + | (1ULL << (azslParser::KW_Typedef - 334)) + | (1ULL << (azslParser::KW_Typeof - 334)) + | (1ULL << (azslParser::Identifier - 334)))) != 0)) { + setState(353); structMemberDeclaration(); - setState(360); + setState(358); _errHandler->sync(this); _la = _input->LA(1); } - setState(361); + setState(359); match(azslParser::RightBrace); } @@ -1857,47 +1875,47 @@ azslParser::StructMemberDeclarationContext* azslParser::structMemberDeclaration( exitRule(); }); try { - setState(369); + setState(367); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 10, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(363); + setState(361); variableDeclarationStatement(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(364); + setState(362); attributedFunctionDefinition(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(365); + setState(363); attributedFunctionDeclaration(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(366); + setState(364); anyStructuredTypeDefinitionStatement(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(367); + setState(365); typeAliasingDefinitionStatement(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(368); + setState(366); attributeSpecifierAny(); break; } @@ -1969,21 +1987,21 @@ azslParser::AnyStructuredTypeDefinitionStatementContext* azslParser::anyStructur }); try { enterOuterAlt(_localctx, 1); - setState(374); + setState(372); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::LeftBracket || _la == azslParser::LeftDoubleBracket) { - setState(371); + setState(369); attributeSpecifierAny(); - setState(376); + setState(374); _errHandler->sync(this); _la = _input->LA(1); } - setState(377); + setState(375); anyStructuredTypeDefinition(); - setState(378); + setState(376); match(azslParser::Semi); } @@ -2040,9 +2058,9 @@ azslParser::EnumDefinitionStatementContext* azslParser::enumDefinitionStatement( }); try { enterOuterAlt(_localctx, 1); - setState(380); + setState(378); enumDefinition(); - setState(381); + setState(379); match(azslParser::Semi); } @@ -2112,21 +2130,21 @@ azslParser::EnumDefinitionContext* azslParser::enumDefinition() { }); try { enterOuterAlt(_localctx, 1); - setState(383); + setState(381); enumKey(); - setState(384); + setState(382); antlrcpp::downCast(_localctx)->Name = match(azslParser::Identifier); - setState(385); + setState(383); match(azslParser::LeftBrace); - setState(387); + setState(385); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::Identifier) { - setState(386); + setState(384); antlrcpp::downCast(_localctx)->List = enumeratorListDefinition(); } - setState(389); + setState(387); match(azslParser::RightBrace); } @@ -2211,13 +2229,13 @@ azslParser::EnumKeyContext* azslParser::enumKey() { exitRule(); }); try { - setState(394); + setState(392); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 13, _ctx)) { case 1: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 1); - setState(391); + setState(389); match(azslParser::Enum); break; } @@ -2225,9 +2243,9 @@ azslParser::EnumKeyContext* azslParser::enumKey() { case 2: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 2); - setState(392); + setState(390); match(azslParser::Enum); - setState(393); + setState(391); _la = _input->LA(1); if (!(_la == azslParser::Class || _la == azslParser::Struct)) { _errHandler->recoverInline(this); @@ -2307,30 +2325,30 @@ azslParser::EnumeratorListDefinitionContext* azslParser::enumeratorListDefinitio try { size_t alt; enterOuterAlt(_localctx, 1); - setState(396); + setState(394); antlrcpp::downCast(_localctx)->enumeratorDeclaratorContext = enumeratorDeclarator(); antlrcpp::downCast(_localctx)->Enumerators.push_back(antlrcpp::downCast(_localctx)->enumeratorDeclaratorContext); - setState(401); + setState(399); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 14, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(397); + setState(395); match(azslParser::Comma); - setState(398); + setState(396); antlrcpp::downCast(_localctx)->enumeratorDeclaratorContext = enumeratorDeclarator(); antlrcpp::downCast(_localctx)->Enumerators.push_back(antlrcpp::downCast(_localctx)->enumeratorDeclaratorContext); } - setState(403); + setState(401); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 14, _ctx); } - setState(405); + setState(403); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::Comma) { - setState(404); + setState(402); match(azslParser::Comma); } @@ -2393,16 +2411,16 @@ azslParser::EnumeratorDeclaratorContext* azslParser::enumeratorDeclarator() { }); try { enterOuterAlt(_localctx, 1); - setState(407); + setState(405); antlrcpp::downCast(_localctx)->Name = match(azslParser::Identifier); - setState(410); + setState(408); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::Assign) { - setState(408); + setState(406); match(azslParser::Assign); - setState(409); + setState(407); antlrcpp::downCast(_localctx)->Value = expression(0); } @@ -2467,33 +2485,33 @@ azslParser::AnyStructuredTypeDefinitionContext* azslParser::anyStructuredTypeDef exitRule(); }); try { - setState(416); + setState(414); _errHandler->sync(this); switch (_input->LA(1)) { case azslParser::Class: { enterOuterAlt(_localctx, 1); - setState(412); + setState(410); classDefinition(); break; } case azslParser::Interface: { enterOuterAlt(_localctx, 2); - setState(413); + setState(411); interfaceDefinition(); break; } case azslParser::Struct: { enterOuterAlt(_localctx, 3); - setState(414); + setState(412); structDefinition(); break; } case azslParser::Enum: { enterOuterAlt(_localctx, 4); - setState(415); + setState(413); enumDefinition(); break; } @@ -2556,9 +2574,9 @@ azslParser::InterfaceDefinitionStatementContext* azslParser::interfaceDefinition }); try { enterOuterAlt(_localctx, 1); - setState(418); + setState(416); interfaceDefinition(); - setState(419); + setState(417); match(azslParser::Semi); } @@ -2632,13 +2650,13 @@ azslParser::InterfaceDefinitionContext* azslParser::interfaceDefinition() { }); try { enterOuterAlt(_localctx, 1); - setState(421); + setState(419); match(azslParser::Interface); - setState(422); + setState(420); antlrcpp::downCast(_localctx)->Name = match(azslParser::Identifier); - setState(423); + setState(421); match(azslParser::LeftBrace); - setState(427); + setState(425); _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && @@ -2667,9 +2685,9 @@ azslParser::InterfaceDefinitionContext* azslParser::interfaceDefinition() { | (1ULL << azslParser::Buffer) | (1ULL << azslParser::BuiltInTriangleIntersectionAttributes) | (1ULL << azslParser::ByteAddressBuffer) + | (1ULL << azslParser::Centroid) | (1ULL << azslParser::ConstantBuffer) | (1ULL << azslParser::ConstantBufferCamel) - | (1ULL << azslParser::Centroid) | (1ULL << azslParser::Class) | (1ULL << azslParser::ColumnMajor) | (1ULL << azslParser::Const) @@ -2695,206 +2713,212 @@ azslParser::InterfaceDefinitionContext* azslParser::interfaceDefinition() { | (1ULL << azslParser::Double4x2) | (1ULL << azslParser::Double4x3) | (1ULL << azslParser::Double4x4) - | (1ULL << azslParser::Enum) - | (1ULL << azslParser::Extern))) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & ((1ULL << (azslParser::Float - 66)) - | (1ULL << (azslParser::Float1 - 66)) - | (1ULL << (azslParser::Float2 - 66)) - | (1ULL << (azslParser::Float3 - 66)) - | (1ULL << (azslParser::Float4 - 66)) - | (1ULL << (azslParser::Float1x1 - 66)) - | (1ULL << (azslParser::Float1x2 - 66)) - | (1ULL << (azslParser::Float1x3 - 66)) - | (1ULL << (azslParser::Float1x4 - 66)) - | (1ULL << (azslParser::Float2x1 - 66)) - | (1ULL << (azslParser::Float2x2 - 66)) - | (1ULL << (azslParser::Float2x3 - 66)) - | (1ULL << (azslParser::Float2x4 - 66)) - | (1ULL << (azslParser::Float3x1 - 66)) - | (1ULL << (azslParser::Float3x2 - 66)) - | (1ULL << (azslParser::Float3x3 - 66)) - | (1ULL << (azslParser::Float3x4 - 66)) - | (1ULL << (azslParser::Float4x1 - 66)) - | (1ULL << (azslParser::Float4x2 - 66)) - | (1ULL << (azslParser::Float4x3 - 66)) - | (1ULL << (azslParser::Float4x4 - 66)) - | (1ULL << (azslParser::Groupshared - 66)) - | (1ULL << (azslParser::Half - 66)) - | (1ULL << (azslParser::Half1 - 66)) - | (1ULL << (azslParser::Half2 - 66)) - | (1ULL << (azslParser::Half3 - 66)) - | (1ULL << (azslParser::Half4 - 66)) - | (1ULL << (azslParser::Half1x1 - 66)) - | (1ULL << (azslParser::Half1x2 - 66)) - | (1ULL << (azslParser::Half1x3 - 66)) - | (1ULL << (azslParser::Half1x4 - 66)) - | (1ULL << (azslParser::Half2x1 - 66)) - | (1ULL << (azslParser::Half2x2 - 66)) - | (1ULL << (azslParser::Half2x3 - 66)) - | (1ULL << (azslParser::Half2x4 - 66)) - | (1ULL << (azslParser::Half3x1 - 66)) - | (1ULL << (azslParser::Half3x2 - 66)) - | (1ULL << (azslParser::Half3x3 - 66)) - | (1ULL << (azslParser::Half3x4 - 66)) - | (1ULL << (azslParser::Half4x1 - 66)) - | (1ULL << (azslParser::Half4x2 - 66)) - | (1ULL << (azslParser::Half4x3 - 66)) - | (1ULL << (azslParser::Half4x4 - 66)) - | (1ULL << (azslParser::In - 66)) - | (1ULL << (azslParser::Inline - 66)) - | (1ULL << (azslParser::Rootconstant - 66)) - | (1ULL << (azslParser::Inout - 66)) - | (1ULL << (azslParser::InputPatch - 66)) - | (1ULL << (azslParser::Int - 66)) - | (1ULL << (azslParser::Int32_t - 66)) - | (1ULL << (azslParser::Int64_t - 66)) - | (1ULL << (azslParser::Int1 - 66)) - | (1ULL << (azslParser::Int2 - 66)) - | (1ULL << (azslParser::Int3 - 66)) - | (1ULL << (azslParser::Int4 - 66)) - | (1ULL << (azslParser::Int1x1 - 66)) - | (1ULL << (azslParser::Int1x2 - 66)) - | (1ULL << (azslParser::Int1x3 - 66)) - | (1ULL << (azslParser::Int1x4 - 66)) - | (1ULL << (azslParser::Int2x1 - 66)) - | (1ULL << (azslParser::Int2x2 - 66)))) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & ((1ULL << (azslParser::Int2x3 - 130)) - | (1ULL << (azslParser::Int2x4 - 130)) - | (1ULL << (azslParser::Int3x1 - 130)) - | (1ULL << (azslParser::Int3x2 - 130)) - | (1ULL << (azslParser::Int3x3 - 130)) - | (1ULL << (azslParser::Int3x4 - 130)) - | (1ULL << (azslParser::Int4x1 - 130)) - | (1ULL << (azslParser::Int4x2 - 130)) - | (1ULL << (azslParser::Int4x3 - 130)) - | (1ULL << (azslParser::Int4x4 - 130)) - | (1ULL << (azslParser::Interface - 130)) - | (1ULL << (azslParser::Line_ - 130)) - | (1ULL << (azslParser::LineAdj - 130)) - | (1ULL << (azslParser::Linear - 130)) - | (1ULL << (azslParser::LineStream - 130)) - | (1ULL << (azslParser::Matrix - 130)) - | (1ULL << (azslParser::Nointerpolation - 130)) - | (1ULL << (azslParser::Noperspective - 130)) - | (1ULL << (azslParser::Option - 130)) - | (1ULL << (azslParser::Out - 130)) - | (1ULL << (azslParser::OutputPatch - 130)) - | (1ULL << (azslParser::Point - 130)) - | (1ULL << (azslParser::PointStream - 130)) - | (1ULL << (azslParser::Precise - 130)) - | (1ULL << (azslParser::RasterizerOrderedBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture3D - 130)) - | (1ULL << (azslParser::RayDesc - 130)) - | (1ULL << (azslParser::RaytracingAccelerationStructure - 130)) - | (1ULL << (azslParser::RowMajor - 130)) - | (1ULL << (azslParser::RWBuffer - 130)) - | (1ULL << (azslParser::RWByteAddressBuffer - 130)) - | (1ULL << (azslParser::RWStructuredBuffer - 130)) - | (1ULL << (azslParser::RWTexture1D - 130)) - | (1ULL << (azslParser::RWTexture1DArray - 130)) - | (1ULL << (azslParser::RWTexture2D - 130)) - | (1ULL << (azslParser::RWTexture2DArray - 130)) - | (1ULL << (azslParser::RWTexture3D - 130)) - | (1ULL << (azslParser::Sample - 130)) - | (1ULL << (azslParser::Sampler - 130)) - | (1ULL << (azslParser::SamplerCapitalS - 130)) - | (1ULL << (azslParser::SamplerComparisonState - 130)) - | (1ULL << (azslParser::SamplerState - 130)) - | (1ULL << (azslParser::Shared - 130)) - | (1ULL << (azslParser::Static - 130)) - | (1ULL << (azslParser::Struct - 130)) - | (1ULL << (azslParser::StructuredBuffer - 130)) - | (1ULL << (azslParser::SubpassInput - 130)) - | (1ULL << (azslParser::SubpassInputMS - 130)) - | (1ULL << (azslParser::Texture1D - 130)) - | (1ULL << (azslParser::Texture1DArray - 130)) - | (1ULL << (azslParser::Texture2D - 130)))) != 0) || ((((_la - 194) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 194)) & ((1ULL << (azslParser::Texture2DArray - 194)) - | (1ULL << (azslParser::Texture2DMS - 194)) - | (1ULL << (azslParser::Texture2DMSArray - 194)) - | (1ULL << (azslParser::Texture3D - 194)) - | (1ULL << (azslParser::TextureCube - 194)) - | (1ULL << (azslParser::TextureCubeArray - 194)) - | (1ULL << (azslParser::Triangle - 194)) - | (1ULL << (azslParser::TriangleAdj - 194)) - | (1ULL << (azslParser::TriangleStream - 194)) - | (1ULL << (azslParser::Uniform - 194)) - | (1ULL << (azslParser::Uint - 194)) - | (1ULL << (azslParser::Uint32_t - 194)) - | (1ULL << (azslParser::Uint64_t - 194)) - | (1ULL << (azslParser::UnsignedInt - 194)) - | (1ULL << (azslParser::Uint1 - 194)) - | (1ULL << (azslParser::Uint2 - 194)) - | (1ULL << (azslParser::Uint3 - 194)) - | (1ULL << (azslParser::Uint4 - 194)) - | (1ULL << (azslParser::Uint1x1 - 194)) - | (1ULL << (azslParser::Uint1x2 - 194)) - | (1ULL << (azslParser::Uint1x3 - 194)) - | (1ULL << (azslParser::Uint1x4 - 194)) - | (1ULL << (azslParser::Uint2x1 - 194)) - | (1ULL << (azslParser::Uint2x2 - 194)) - | (1ULL << (azslParser::Uint2x3 - 194)) - | (1ULL << (azslParser::Uint2x4 - 194)) - | (1ULL << (azslParser::Uint3x1 - 194)) - | (1ULL << (azslParser::Uint3x2 - 194)) - | (1ULL << (azslParser::Uint3x3 - 194)) - | (1ULL << (azslParser::Uint3x4 - 194)) - | (1ULL << (azslParser::Uint4x1 - 194)) - | (1ULL << (azslParser::Uint4x2 - 194)) - | (1ULL << (azslParser::Uint4x3 - 194)) - | (1ULL << (azslParser::Uint4x4 - 194)) - | (1ULL << (azslParser::Dword - 194)) - | (1ULL << (azslParser::Dword1 - 194)) - | (1ULL << (azslParser::Dword2 - 194)) - | (1ULL << (azslParser::Dword3 - 194)) - | (1ULL << (azslParser::Dword4 - 194)) - | (1ULL << (azslParser::Dword1x1 - 194)) - | (1ULL << (azslParser::Dword1x2 - 194)) - | (1ULL << (azslParser::Dword1x3 - 194)) - | (1ULL << (azslParser::Dword1x4 - 194)) - | (1ULL << (azslParser::Dword2x1 - 194)) - | (1ULL << (azslParser::Dword2x2 - 194)) - | (1ULL << (azslParser::Dword2x3 - 194)) - | (1ULL << (azslParser::Dword2x4 - 194)) - | (1ULL << (azslParser::Dword3x1 - 194)) - | (1ULL << (azslParser::Dword3x2 - 194)) - | (1ULL << (azslParser::Dword3x3 - 194)) - | (1ULL << (azslParser::Dword3x4 - 194)) - | (1ULL << (azslParser::Dword4x1 - 194)) - | (1ULL << (azslParser::Dword4x2 - 194)) - | (1ULL << (azslParser::Dword4x3 - 194)) - | (1ULL << (azslParser::Dword4x4 - 194)) - | (1ULL << (azslParser::Vector - 194)) - | (1ULL << (azslParser::Volatile - 194)) - | (1ULL << (azslParser::Void - 194)) - | (1ULL << (azslParser::StateObjectConfig - 194)) - | (1ULL << (azslParser::LocalRootSignature - 194)) - | (1ULL << (azslParser::GlobalRootSignature - 194)) - | (1ULL << (azslParser::SubobjectToExportsAssociation - 194)) - | (1ULL << (azslParser::RaytracingShaderConfig - 194)))) != 0) || ((((_la - 258) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 258)) & ((1ULL << (azslParser::RaytracingPipelineConfig - 258)) - | (1ULL << (azslParser::RaytracingPipelineConfig1 - 258)) - | (1ULL << (azslParser::TriangleHitGroup - 258)) - | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 258)) - | (1ULL << (azslParser::LeftBracket - 258)) - | (1ULL << (azslParser::LeftDoubleBracket - 258)))) != 0) || ((((_la - 326) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 326)) & ((1ULL << (azslParser::ColonColon - 326)) - | (1ULL << (azslParser::KW_AssociatedType - 326)) - | (1ULL << (azslParser::KW_Typeof - 326)) - | (1ULL << (azslParser::Identifier - 326)))) != 0)) { - setState(424); + | (1ULL << azslParser::Enum))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (azslParser::Extern - 64)) + | (1ULL << (azslParser::Float - 64)) + | (1ULL << (azslParser::Float1 - 64)) + | (1ULL << (azslParser::Float2 - 64)) + | (1ULL << (azslParser::Float3 - 64)) + | (1ULL << (azslParser::Float4 - 64)) + | (1ULL << (azslParser::Float1x1 - 64)) + | (1ULL << (azslParser::Float1x2 - 64)) + | (1ULL << (azslParser::Float1x3 - 64)) + | (1ULL << (azslParser::Float1x4 - 64)) + | (1ULL << (azslParser::Float2x1 - 64)) + | (1ULL << (azslParser::Float2x2 - 64)) + | (1ULL << (azslParser::Float2x3 - 64)) + | (1ULL << (azslParser::Float2x4 - 64)) + | (1ULL << (azslParser::Float3x1 - 64)) + | (1ULL << (azslParser::Float3x2 - 64)) + | (1ULL << (azslParser::Float3x3 - 64)) + | (1ULL << (azslParser::Float3x4 - 64)) + | (1ULL << (azslParser::Float4x1 - 64)) + | (1ULL << (azslParser::Float4x2 - 64)) + | (1ULL << (azslParser::Float4x3 - 64)) + | (1ULL << (azslParser::Float4x4 - 64)) + | (1ULL << (azslParser::Groupshared - 64)) + | (1ULL << (azslParser::Globallycoherent - 64)) + | (1ULL << (azslParser::Half - 64)) + | (1ULL << (azslParser::Half1 - 64)) + | (1ULL << (azslParser::Half2 - 64)) + | (1ULL << (azslParser::Half3 - 64)) + | (1ULL << (azslParser::Half4 - 64)) + | (1ULL << (azslParser::Half1x1 - 64)) + | (1ULL << (azslParser::Half1x2 - 64)) + | (1ULL << (azslParser::Half1x3 - 64)) + | (1ULL << (azslParser::Half1x4 - 64)) + | (1ULL << (azslParser::Half2x1 - 64)) + | (1ULL << (azslParser::Half2x2 - 64)) + | (1ULL << (azslParser::Half2x3 - 64)) + | (1ULL << (azslParser::Half2x4 - 64)) + | (1ULL << (azslParser::Half3x1 - 64)) + | (1ULL << (azslParser::Half3x2 - 64)) + | (1ULL << (azslParser::Half3x3 - 64)) + | (1ULL << (azslParser::Half3x4 - 64)) + | (1ULL << (azslParser::Half4x1 - 64)) + | (1ULL << (azslParser::Half4x2 - 64)) + | (1ULL << (azslParser::Half4x3 - 64)) + | (1ULL << (azslParser::Half4x4 - 64)) + | (1ULL << (azslParser::In - 64)) + | (1ULL << (azslParser::Inline - 64)) + | (1ULL << (azslParser::Rootconstant - 64)) + | (1ULL << (azslParser::Inout - 64)) + | (1ULL << (azslParser::InputPatch - 64)) + | (1ULL << (azslParser::Int - 64)) + | (1ULL << (azslParser::Int16_t - 64)) + | (1ULL << (azslParser::Int32_t - 64)) + | (1ULL << (azslParser::Int64_t - 64)) + | (1ULL << (azslParser::Int1 - 64)) + | (1ULL << (azslParser::Int2 - 64)) + | (1ULL << (azslParser::Int3 - 64)) + | (1ULL << (azslParser::Int4 - 64)) + | (1ULL << (azslParser::Int1x1 - 64)))) != 0) || ((((_la - 128) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 128)) & ((1ULL << (azslParser::Int1x2 - 128)) + | (1ULL << (azslParser::Int1x3 - 128)) + | (1ULL << (azslParser::Int1x4 - 128)) + | (1ULL << (azslParser::Int2x1 - 128)) + | (1ULL << (azslParser::Int2x2 - 128)) + | (1ULL << (azslParser::Int2x3 - 128)) + | (1ULL << (azslParser::Int2x4 - 128)) + | (1ULL << (azslParser::Int3x1 - 128)) + | (1ULL << (azslParser::Int3x2 - 128)) + | (1ULL << (azslParser::Int3x3 - 128)) + | (1ULL << (azslParser::Int3x4 - 128)) + | (1ULL << (azslParser::Int4x1 - 128)) + | (1ULL << (azslParser::Int4x2 - 128)) + | (1ULL << (azslParser::Int4x3 - 128)) + | (1ULL << (azslParser::Int4x4 - 128)) + | (1ULL << (azslParser::Interface - 128)) + | (1ULL << (azslParser::Line_ - 128)) + | (1ULL << (azslParser::LineAdj - 128)) + | (1ULL << (azslParser::Linear - 128)) + | (1ULL << (azslParser::LineStream - 128)) + | (1ULL << (azslParser::Matrix - 128)) + | (1ULL << (azslParser::Nointerpolation - 128)) + | (1ULL << (azslParser::Noperspective - 128)) + | (1ULL << (azslParser::Option - 128)) + | (1ULL << (azslParser::Out - 128)) + | (1ULL << (azslParser::OutputPatch - 128)) + | (1ULL << (azslParser::Point - 128)) + | (1ULL << (azslParser::PointStream - 128)) + | (1ULL << (azslParser::Precise - 128)) + | (1ULL << (azslParser::RasterizerOrderedBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture3D - 128)) + | (1ULL << (azslParser::RayDesc - 128)) + | (1ULL << (azslParser::RaytracingAccelerationStructure - 128)) + | (1ULL << (azslParser::RowMajor - 128)) + | (1ULL << (azslParser::RWBuffer - 128)) + | (1ULL << (azslParser::RWByteAddressBuffer - 128)) + | (1ULL << (azslParser::RWStructuredBuffer - 128)) + | (1ULL << (azslParser::RWTexture1D - 128)) + | (1ULL << (azslParser::RWTexture1DArray - 128)) + | (1ULL << (azslParser::RWTexture2D - 128)) + | (1ULL << (azslParser::RWTexture2DArray - 128)) + | (1ULL << (azslParser::RWTexture3D - 128)) + | (1ULL << (azslParser::Sample - 128)) + | (1ULL << (azslParser::Sampler - 128)) + | (1ULL << (azslParser::SamplerCapitalS - 128)) + | (1ULL << (azslParser::SamplerComparisonState - 128)) + | (1ULL << (azslParser::SamplerStateCamel - 128)) + | (1ULL << (azslParser::SamplerState - 128)) + | (1ULL << (azslParser::Shared - 128)) + | (1ULL << (azslParser::SNorm - 128)) + | (1ULL << (azslParser::Static - 128)) + | (1ULL << (azslParser::Struct - 128)))) != 0) || ((((_la - 192) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 192)) & ((1ULL << (azslParser::StructuredBuffer - 192)) + | (1ULL << (azslParser::SubpassInput - 192)) + | (1ULL << (azslParser::SubpassInputMS - 192)) + | (1ULL << (azslParser::Texture1D - 192)) + | (1ULL << (azslParser::Texture1DArray - 192)) + | (1ULL << (azslParser::Texture2D - 192)) + | (1ULL << (azslParser::Texture2DArray - 192)) + | (1ULL << (azslParser::Texture2DMS - 192)) + | (1ULL << (azslParser::Texture2DMSArray - 192)) + | (1ULL << (azslParser::Texture3D - 192)) + | (1ULL << (azslParser::TextureCube - 192)) + | (1ULL << (azslParser::TextureCubeArray - 192)) + | (1ULL << (azslParser::Triangle - 192)) + | (1ULL << (azslParser::TriangleAdj - 192)) + | (1ULL << (azslParser::TriangleStream - 192)) + | (1ULL << (azslParser::Uniform - 192)) + | (1ULL << (azslParser::Uint - 192)) + | (1ULL << (azslParser::Uint1 - 192)) + | (1ULL << (azslParser::Uint2 - 192)) + | (1ULL << (azslParser::Uint3 - 192)) + | (1ULL << (azslParser::Uint4 - 192)) + | (1ULL << (azslParser::Uint1x1 - 192)) + | (1ULL << (azslParser::Uint1x2 - 192)) + | (1ULL << (azslParser::Uint1x3 - 192)) + | (1ULL << (azslParser::Uint1x4 - 192)) + | (1ULL << (azslParser::Uint2x1 - 192)) + | (1ULL << (azslParser::Uint2x2 - 192)) + | (1ULL << (azslParser::Uint2x3 - 192)) + | (1ULL << (azslParser::Uint2x4 - 192)) + | (1ULL << (azslParser::Uint3x1 - 192)) + | (1ULL << (azslParser::Uint3x2 - 192)) + | (1ULL << (azslParser::Uint3x3 - 192)) + | (1ULL << (azslParser::Uint3x4 - 192)) + | (1ULL << (azslParser::Uint4x1 - 192)) + | (1ULL << (azslParser::Uint4x2 - 192)) + | (1ULL << (azslParser::Uint4x3 - 192)) + | (1ULL << (azslParser::Uint4x4 - 192)) + | (1ULL << (azslParser::Uint16_t - 192)) + | (1ULL << (azslParser::Uint32_t - 192)) + | (1ULL << (azslParser::Uint64_t - 192)) + | (1ULL << (azslParser::UNorm - 192)) + | (1ULL << (azslParser::Unsigned - 192)) + | (1ULL << (azslParser::Dword - 192)) + | (1ULL << (azslParser::Dword1 - 192)) + | (1ULL << (azslParser::Dword2 - 192)) + | (1ULL << (azslParser::Dword3 - 192)) + | (1ULL << (azslParser::Dword4 - 192)) + | (1ULL << (azslParser::Dword1x1 - 192)) + | (1ULL << (azslParser::Dword1x2 - 192)) + | (1ULL << (azslParser::Dword1x3 - 192)) + | (1ULL << (azslParser::Dword1x4 - 192)) + | (1ULL << (azslParser::Dword2x1 - 192)) + | (1ULL << (azslParser::Dword2x2 - 192)) + | (1ULL << (azslParser::Dword2x3 - 192)) + | (1ULL << (azslParser::Dword2x4 - 192)) + | (1ULL << (azslParser::Dword3x1 - 192)) + | (1ULL << (azslParser::Dword3x2 - 192)) + | (1ULL << (azslParser::Dword3x3 - 192)) + | (1ULL << (azslParser::Dword3x4 - 192)) + | (1ULL << (azslParser::Dword4x1 - 192)) + | (1ULL << (azslParser::Dword4x2 - 192)) + | (1ULL << (azslParser::Dword4x3 - 192)))) != 0) || ((((_la - 256) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 256)) & ((1ULL << (azslParser::Dword4x4 - 256)) + | (1ULL << (azslParser::Vector - 256)) + | (1ULL << (azslParser::Volatile - 256)) + | (1ULL << (azslParser::Void - 256)) + | (1ULL << (azslParser::StateObjectConfig - 256)) + | (1ULL << (azslParser::LocalRootSignature - 256)) + | (1ULL << (azslParser::GlobalRootSignature - 256)) + | (1ULL << (azslParser::SubobjectToExportsAssociation - 256)) + | (1ULL << (azslParser::RaytracingShaderConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig1 - 256)) + | (1ULL << (azslParser::TriangleHitGroup - 256)) + | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 256)) + | (1ULL << (azslParser::LeftBracket - 256)) + | (1ULL << (azslParser::LeftDoubleBracket - 256)))) != 0) || ((((_la - 334) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 334)) & ((1ULL << (azslParser::ColonColon - 334)) + | (1ULL << (azslParser::KW_AssociatedType - 334)) + | (1ULL << (azslParser::KW_Typeof - 334)) + | (1ULL << (azslParser::Identifier - 334)))) != 0)) { + setState(422); interfaceMemberDeclaration(); - setState(429); + setState(427); _errHandler->sync(this); _la = _input->LA(1); } - setState(430); + setState(428); match(azslParser::RightBrace); } @@ -2954,26 +2978,26 @@ azslParser::InterfaceMemberDeclarationContext* azslParser::interfaceMemberDeclar exitRule(); }); try { - setState(435); + setState(433); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 19, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(432); + setState(430); attributedFunctionDeclaration(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(433); + setState(431); associatedTypeDeclaration(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(434); + setState(432); anyStructuredTypeDefinitionStatement(); break; } @@ -3049,7 +3073,7 @@ azslParser::ConstantBufferTemplatedContext* azslParser::constantBufferTemplated( }); try { enterOuterAlt(_localctx, 1); - setState(437); + setState(435); antlrcpp::downCast(_localctx)->CBCoreType = _input->LT(1); _la = _input->LA(1); if (!(_la == azslParser::ConstantBuffer @@ -3061,11 +3085,11 @@ azslParser::ConstantBufferTemplatedContext* azslParser::constantBufferTemplated( _errHandler->reportMatch(this); consume(); } - setState(438); + setState(436); match(azslParser::Less); - setState(439); + setState(437); antlrcpp::downCast(_localctx)->GenericTypeName = type(); - setState(440); + setState(438); match(azslParser::Greater); } @@ -3122,9 +3146,9 @@ azslParser::VariableDeclarationStatementContext* azslParser::variableDeclaration }); try { enterOuterAlt(_localctx, 1); - setState(442); + setState(440); variableDeclaration(); - setState(443); + setState(441); match(azslParser::Semi); } @@ -3193,280 +3217,37 @@ azslParser::FunctionParamsContext* azslParser::functionParams() { exitRule(); }); try { - setState(454); + setState(452); _errHandler->sync(this); - switch (_input->LA(1)) { - case azslParser::Void: { - enterOuterAlt(_localctx, 1); + switch (getInterpreter()->adaptivePredict(_input, 21, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(443); + match(azslParser::Void); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(444); + functionParam(); + setState(449); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == azslParser::Comma) { setState(445); - match(azslParser::Void); - break; - } - - case azslParser::AppendStructuredBuffer: - case azslParser::Bool: - case azslParser::Bool1: - case azslParser::Bool2: - case azslParser::Bool3: - case azslParser::Bool4: - case azslParser::Bool1x1: - case azslParser::Bool1x2: - case azslParser::Bool1x3: - case azslParser::Bool1x4: - case azslParser::Bool2x1: - case azslParser::Bool2x2: - case azslParser::Bool2x3: - case azslParser::Bool2x4: - case azslParser::Bool3x1: - case azslParser::Bool3x2: - case azslParser::Bool3x3: - case azslParser::Bool3x4: - case azslParser::Bool4x1: - case azslParser::Bool4x2: - case azslParser::Bool4x3: - case azslParser::Bool4x4: - case azslParser::Buffer: - case azslParser::BuiltInTriangleIntersectionAttributes: - case azslParser::ByteAddressBuffer: - case azslParser::ConstantBuffer: - case azslParser::ConstantBufferCamel: - case azslParser::Centroid: - case azslParser::Class: - case azslParser::ColumnMajor: - case azslParser::Const: - case azslParser::ConsumeStructuredBuffer: - case azslParser::Double: - case azslParser::Double1: - case azslParser::Double2: - case azslParser::Double3: - case azslParser::Double4: - case azslParser::Double1x1: - case azslParser::Double1x2: - case azslParser::Double1x3: - case azslParser::Double1x4: - case azslParser::Double2x1: - case azslParser::Double2x2: - case azslParser::Double2x3: - case azslParser::Double2x4: - case azslParser::Double3x1: - case azslParser::Double3x2: - case azslParser::Double3x3: - case azslParser::Double3x4: - case azslParser::Double4x1: - case azslParser::Double4x2: - case azslParser::Double4x3: - case azslParser::Double4x4: - case azslParser::Enum: - case azslParser::Extern: - case azslParser::Float: - case azslParser::Float1: - case azslParser::Float2: - case azslParser::Float3: - case azslParser::Float4: - case azslParser::Float1x1: - case azslParser::Float1x2: - case azslParser::Float1x3: - case azslParser::Float1x4: - case azslParser::Float2x1: - case azslParser::Float2x2: - case azslParser::Float2x3: - case azslParser::Float2x4: - case azslParser::Float3x1: - case azslParser::Float3x2: - case azslParser::Float3x3: - case azslParser::Float3x4: - case azslParser::Float4x1: - case azslParser::Float4x2: - case azslParser::Float4x3: - case azslParser::Float4x4: - case azslParser::Groupshared: - case azslParser::Half: - case azslParser::Half1: - case azslParser::Half2: - case azslParser::Half3: - case azslParser::Half4: - case azslParser::Half1x1: - case azslParser::Half1x2: - case azslParser::Half1x3: - case azslParser::Half1x4: - case azslParser::Half2x1: - case azslParser::Half2x2: - case azslParser::Half2x3: - case azslParser::Half2x4: - case azslParser::Half3x1: - case azslParser::Half3x2: - case azslParser::Half3x3: - case azslParser::Half3x4: - case azslParser::Half4x1: - case azslParser::Half4x2: - case azslParser::Half4x3: - case azslParser::Half4x4: - case azslParser::In: - case azslParser::Inline: - case azslParser::Rootconstant: - case azslParser::Inout: - case azslParser::InputPatch: - case azslParser::Int: - case azslParser::Int32_t: - case azslParser::Int64_t: - case azslParser::Int1: - case azslParser::Int2: - case azslParser::Int3: - case azslParser::Int4: - case azslParser::Int1x1: - case azslParser::Int1x2: - case azslParser::Int1x3: - case azslParser::Int1x4: - case azslParser::Int2x1: - case azslParser::Int2x2: - case azslParser::Int2x3: - case azslParser::Int2x4: - case azslParser::Int3x1: - case azslParser::Int3x2: - case azslParser::Int3x3: - case azslParser::Int3x4: - case azslParser::Int4x1: - case azslParser::Int4x2: - case azslParser::Int4x3: - case azslParser::Int4x4: - case azslParser::Interface: - case azslParser::Line_: - case azslParser::LineAdj: - case azslParser::Linear: - case azslParser::LineStream: - case azslParser::Matrix: - case azslParser::Nointerpolation: - case azslParser::Noperspective: - case azslParser::Option: - case azslParser::Out: - case azslParser::OutputPatch: - case azslParser::Point: - case azslParser::PointStream: - case azslParser::Precise: - case azslParser::RasterizerOrderedBuffer: - case azslParser::RasterizerOrderedByteAddressBuffer: - case azslParser::RasterizerOrderedStructuredBuffer: - case azslParser::RasterizerOrderedTexture1D: - case azslParser::RasterizerOrderedTexture1DArray: - case azslParser::RasterizerOrderedTexture2D: - case azslParser::RasterizerOrderedTexture2DArray: - case azslParser::RasterizerOrderedTexture3D: - case azslParser::RayDesc: - case azslParser::RaytracingAccelerationStructure: - case azslParser::RowMajor: - case azslParser::RWBuffer: - case azslParser::RWByteAddressBuffer: - case azslParser::RWStructuredBuffer: - case azslParser::RWTexture1D: - case azslParser::RWTexture1DArray: - case azslParser::RWTexture2D: - case azslParser::RWTexture2DArray: - case azslParser::RWTexture3D: - case azslParser::Sample: - case azslParser::Sampler: - case azslParser::SamplerCapitalS: - case azslParser::SamplerComparisonState: - case azslParser::SamplerState: - case azslParser::Shared: - case azslParser::Static: - case azslParser::Struct: - case azslParser::StructuredBuffer: - case azslParser::SubpassInput: - case azslParser::SubpassInputMS: - case azslParser::Texture1D: - case azslParser::Texture1DArray: - case azslParser::Texture2D: - case azslParser::Texture2DArray: - case azslParser::Texture2DMS: - case azslParser::Texture2DMSArray: - case azslParser::Texture3D: - case azslParser::TextureCube: - case azslParser::TextureCubeArray: - case azslParser::Triangle: - case azslParser::TriangleAdj: - case azslParser::TriangleStream: - case azslParser::Uniform: - case azslParser::Uint: - case azslParser::Uint32_t: - case azslParser::Uint64_t: - case azslParser::UnsignedInt: - case azslParser::Uint1: - case azslParser::Uint2: - case azslParser::Uint3: - case azslParser::Uint4: - case azslParser::Uint1x1: - case azslParser::Uint1x2: - case azslParser::Uint1x3: - case azslParser::Uint1x4: - case azslParser::Uint2x1: - case azslParser::Uint2x2: - case azslParser::Uint2x3: - case azslParser::Uint2x4: - case azslParser::Uint3x1: - case azslParser::Uint3x2: - case azslParser::Uint3x3: - case azslParser::Uint3x4: - case azslParser::Uint4x1: - case azslParser::Uint4x2: - case azslParser::Uint4x3: - case azslParser::Uint4x4: - case azslParser::Dword: - case azslParser::Dword1: - case azslParser::Dword2: - case azslParser::Dword3: - case azslParser::Dword4: - case azslParser::Dword1x1: - case azslParser::Dword1x2: - case azslParser::Dword1x3: - case azslParser::Dword1x4: - case azslParser::Dword2x1: - case azslParser::Dword2x2: - case azslParser::Dword2x3: - case azslParser::Dword2x4: - case azslParser::Dword3x1: - case azslParser::Dword3x2: - case azslParser::Dword3x3: - case azslParser::Dword3x4: - case azslParser::Dword4x1: - case azslParser::Dword4x2: - case azslParser::Dword4x3: - case azslParser::Dword4x4: - case azslParser::Vector: - case azslParser::Volatile: - case azslParser::StateObjectConfig: - case azslParser::LocalRootSignature: - case azslParser::GlobalRootSignature: - case azslParser::SubobjectToExportsAssociation: - case azslParser::RaytracingShaderConfig: - case azslParser::RaytracingPipelineConfig: - case azslParser::RaytracingPipelineConfig1: - case azslParser::TriangleHitGroup: - case azslParser::ProceduralPrimitiveHitGroup: - case azslParser::LeftBracket: - case azslParser::LeftDoubleBracket: - case azslParser::ColonColon: - case azslParser::KW_Typeof: - case azslParser::Identifier: { - enterOuterAlt(_localctx, 2); - setState(446); - functionParam(); - setState(451); - _errHandler->sync(this); - _la = _input->LA(1); - while (_la == azslParser::Comma) { - setState(447); - match(azslParser::Comma); - setState(448); - functionParam(); - setState(453); - _errHandler->sync(this); - _la = _input->LA(1); - } - break; + match(azslParser::Comma); + setState(446); + functionParam(); + setState(451); + _errHandler->sync(this); + _la = _input->LA(1); } + break; + } default: - throw NoViableAltException(this); + break; } } @@ -3485,10 +3266,6 @@ azslParser::FunctionParamContext::FunctionParamContext(ParserRuleContext *parent : ParserRuleContext(parent, invokingState) { } -azslParser::StorageFlagsContext* azslParser::FunctionParamContext::storageFlags() { - return getRuleContext(0); -} - azslParser::TypeContext* azslParser::FunctionParamContext::type() { return getRuleContext(0); } @@ -3540,31 +3317,29 @@ azslParser::FunctionParamContext* azslParser::functionParam() { }); try { enterOuterAlt(_localctx, 1); - setState(459); + setState(457); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::LeftBracket || _la == azslParser::LeftDoubleBracket) { - setState(456); + setState(454); attributeSpecifierAny(); - setState(461); + setState(459); _errHandler->sync(this); _la = _input->LA(1); } - setState(462); - storageFlags(); - setState(463); + setState(460); type(); - setState(465); + setState(462); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::Identifier) { - setState(464); + setState(461); antlrcpp::downCast(_localctx)->Name = match(azslParser::Identifier); } - setState(467); + setState(464); unnamedVariableDeclarator(); } @@ -3621,9 +3396,9 @@ azslParser::HlslSemanticContext* azslParser::hlslSemantic() { }); try { enterOuterAlt(_localctx, 1); - setState(469); + setState(466); match(azslParser::Colon); - setState(470); + setState(467); antlrcpp::downCast(_localctx)->Name = hlslSemanticName(); } @@ -3685,12 +3460,12 @@ azslParser::HlslSemanticNameContext* azslParser::hlslSemanticName() { }); try { enterOuterAlt(_localctx, 1); - setState(472); + setState(469); _la = _input->LA(1); - if (!(((((_la - 359) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 359)) & ((1ULL << (azslParser::HLSLSemanticStream - 359)) - | (1ULL << (azslParser::HLSLSemanticSystem - 359)) - | (1ULL << (azslParser::Identifier - 359)))) != 0))) { + if (!(((((_la - 367) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 367)) & ((1ULL << (azslParser::HLSLSemanticStream - 367)) + | (1ULL << (azslParser::HLSLSemanticSystem - 367)) + | (1ULL << (azslParser::Identifier - 367)))) != 0))) { _errHandler->recoverInline(this); } else { @@ -3761,17 +3536,17 @@ azslParser::AttributeArgumentsContext* azslParser::attributeArguments() { }); try { enterOuterAlt(_localctx, 1); - setState(474); + setState(471); literal(); - setState(479); + setState(476); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::Comma) { - setState(475); + setState(472); match(azslParser::Comma); - setState(476); + setState(473); literal(); - setState(481); + setState(478); _errHandler->sync(this); _la = _input->LA(1); } @@ -3834,11 +3609,11 @@ azslParser::AttributeArgumentListContext* azslParser::attributeArgumentList() { }); try { enterOuterAlt(_localctx, 1); - setState(482); + setState(479); match(azslParser::LeftParen); - setState(483); + setState(480); attributeArguments(); - setState(484); + setState(481); match(azslParser::RightParen); } @@ -3947,24 +3722,24 @@ azslParser::AttributeContext* azslParser::attribute() { exitRule(); }); try { - setState(504); + setState(501); _errHandler->sync(this); switch (_input->LA(1)) { case azslParser::Global: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 1); - setState(486); + setState(483); match(azslParser::Global); - setState(487); + setState(484); match(azslParser::ColonColon); - setState(490); + setState(487); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 25, _ctx)) { case 1: { - setState(488); + setState(485); antlrcpp::downCast(_localctx)->Namespace = match(azslParser::Identifier); - setState(489); + setState(486); match(azslParser::ColonColon); break; } @@ -3972,14 +3747,14 @@ azslParser::AttributeContext* azslParser::attribute() { default: break; } - setState(492); + setState(489); antlrcpp::downCast(_localctx)->Name = match(azslParser::Identifier); - setState(494); + setState(491); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::LeftParen) { - setState(493); + setState(490); attributeArgumentList(); } break; @@ -3988,14 +3763,14 @@ azslParser::AttributeContext* azslParser::attribute() { case azslParser::Identifier: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 2); - setState(498); + setState(495); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 27, _ctx)) { case 1: { - setState(496); + setState(493); antlrcpp::downCast(_localctx)->Namespace = match(azslParser::Identifier); - setState(497); + setState(494); match(azslParser::ColonColon); break; } @@ -4003,14 +3778,14 @@ azslParser::AttributeContext* azslParser::attribute() { default: break; } - setState(500); + setState(497); antlrcpp::downCast(_localctx)->Name = match(azslParser::Identifier); - setState(502); + setState(499); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::LeftParen) { - setState(501); + setState(498); attributeArgumentList(); } break; @@ -4078,11 +3853,11 @@ azslParser::AttributeSpecifierContext* azslParser::attributeSpecifier() { }); try { enterOuterAlt(_localctx, 1); - setState(506); + setState(503); match(azslParser::LeftBracket); - setState(507); + setState(504); attribute(); - setState(508); + setState(505); match(azslParser::RightBracket); } @@ -4160,27 +3935,27 @@ azslParser::AttributeSpecifierSequenceContext* azslParser::attributeSpecifierSeq }); try { enterOuterAlt(_localctx, 1); - setState(510); + setState(507); match(azslParser::LeftDoubleBracket); - setState(511); + setState(508); antlrcpp::downCast(_localctx)->attributeContext = attribute(); antlrcpp::downCast(_localctx)->Attributes.push_back(antlrcpp::downCast(_localctx)->attributeContext); - setState(516); + setState(513); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::Comma) { - setState(512); + setState(509); match(azslParser::Comma); - setState(513); + setState(510); antlrcpp::downCast(_localctx)->attributeContext = attribute(); antlrcpp::downCast(_localctx)->Attributes.push_back(antlrcpp::downCast(_localctx)->attributeContext); - setState(518); + setState(515); _errHandler->sync(this); _la = _input->LA(1); } - setState(519); + setState(516); match(azslParser::RightBracket); - setState(520); + setState(517); match(azslParser::RightBracket); } @@ -4236,19 +4011,19 @@ azslParser::AttributeSpecifierAnyContext* azslParser::attributeSpecifierAny() { exitRule(); }); try { - setState(524); + setState(521); _errHandler->sync(this); switch (_input->LA(1)) { case azslParser::LeftBracket: { enterOuterAlt(_localctx, 1); - setState(522); + setState(519); attributeSpecifier(); break; } case azslParser::LeftDoubleBracket: { enterOuterAlt(_localctx, 2); - setState(523); + setState(520); attributeSpecifierSequence(); break; } @@ -4320,9 +4095,9 @@ azslParser::BlockContext* azslParser::block() { }); try { enterOuterAlt(_localctx, 1); - setState(526); + setState(523); match(azslParser::LeftBrace); - setState(530); + setState(527); _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && @@ -4352,9 +4127,9 @@ azslParser::BlockContext* azslParser::block() { | (1ULL << azslParser::BuiltInTriangleIntersectionAttributes) | (1ULL << azslParser::ByteAddressBuffer) | (1ULL << azslParser::Break) + | (1ULL << azslParser::Centroid) | (1ULL << azslParser::ConstantBuffer) | (1ULL << azslParser::ConstantBufferCamel) - | (1ULL << azslParser::Centroid) | (1ULL << azslParser::Class) | (1ULL << azslParser::ColumnMajor) | (1ULL << azslParser::Const) @@ -4383,228 +4158,235 @@ azslParser::BlockContext* azslParser::block() { | (1ULL << azslParser::Double4x2) | (1ULL << azslParser::Double4x3) | (1ULL << azslParser::Double4x4) - | (1ULL << azslParser::Enum) - | (1ULL << azslParser::Extern))) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & ((1ULL << (azslParser::Float - 66)) - | (1ULL << (azslParser::Float1 - 66)) - | (1ULL << (azslParser::Float2 - 66)) - | (1ULL << (azslParser::Float3 - 66)) - | (1ULL << (azslParser::Float4 - 66)) - | (1ULL << (azslParser::Float1x1 - 66)) - | (1ULL << (azslParser::Float1x2 - 66)) - | (1ULL << (azslParser::Float1x3 - 66)) - | (1ULL << (azslParser::Float1x4 - 66)) - | (1ULL << (azslParser::Float2x1 - 66)) - | (1ULL << (azslParser::Float2x2 - 66)) - | (1ULL << (azslParser::Float2x3 - 66)) - | (1ULL << (azslParser::Float2x4 - 66)) - | (1ULL << (azslParser::Float3x1 - 66)) - | (1ULL << (azslParser::Float3x2 - 66)) - | (1ULL << (azslParser::Float3x3 - 66)) - | (1ULL << (azslParser::Float3x4 - 66)) - | (1ULL << (azslParser::Float4x1 - 66)) - | (1ULL << (azslParser::Float4x2 - 66)) - | (1ULL << (azslParser::Float4x3 - 66)) - | (1ULL << (azslParser::Float4x4 - 66)) - | (1ULL << (azslParser::For - 66)) - | (1ULL << (azslParser::Groupshared - 66)) - | (1ULL << (azslParser::Half - 66)) - | (1ULL << (azslParser::Half1 - 66)) - | (1ULL << (azslParser::Half2 - 66)) - | (1ULL << (azslParser::Half3 - 66)) - | (1ULL << (azslParser::Half4 - 66)) - | (1ULL << (azslParser::Half1x1 - 66)) - | (1ULL << (azslParser::Half1x2 - 66)) - | (1ULL << (azslParser::Half1x3 - 66)) - | (1ULL << (azslParser::Half1x4 - 66)) - | (1ULL << (azslParser::Half2x1 - 66)) - | (1ULL << (azslParser::Half2x2 - 66)) - | (1ULL << (azslParser::Half2x3 - 66)) - | (1ULL << (azslParser::Half2x4 - 66)) - | (1ULL << (azslParser::Half3x1 - 66)) - | (1ULL << (azslParser::Half3x2 - 66)) - | (1ULL << (azslParser::Half3x3 - 66)) - | (1ULL << (azslParser::Half3x4 - 66)) - | (1ULL << (azslParser::Half4x1 - 66)) - | (1ULL << (azslParser::Half4x2 - 66)) - | (1ULL << (azslParser::Half4x3 - 66)) - | (1ULL << (azslParser::Half4x4 - 66)) - | (1ULL << (azslParser::If - 66)) - | (1ULL << (azslParser::In - 66)) - | (1ULL << (azslParser::Inline - 66)) - | (1ULL << (azslParser::Rootconstant - 66)) - | (1ULL << (azslParser::Inout - 66)) - | (1ULL << (azslParser::InputPatch - 66)) - | (1ULL << (azslParser::Int - 66)) - | (1ULL << (azslParser::Int32_t - 66)) - | (1ULL << (azslParser::Int64_t - 66)) - | (1ULL << (azslParser::Int1 - 66)) - | (1ULL << (azslParser::Int2 - 66)) - | (1ULL << (azslParser::Int3 - 66)) - | (1ULL << (azslParser::Int4 - 66)) - | (1ULL << (azslParser::Int1x1 - 66)) - | (1ULL << (azslParser::Int1x2 - 66)) - | (1ULL << (azslParser::Int1x3 - 66)) - | (1ULL << (azslParser::Int1x4 - 66)) - | (1ULL << (azslParser::Int2x1 - 66)) - | (1ULL << (azslParser::Int2x2 - 66)))) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & ((1ULL << (azslParser::Int2x3 - 130)) - | (1ULL << (azslParser::Int2x4 - 130)) - | (1ULL << (azslParser::Int3x1 - 130)) - | (1ULL << (azslParser::Int3x2 - 130)) - | (1ULL << (azslParser::Int3x3 - 130)) - | (1ULL << (azslParser::Int3x4 - 130)) - | (1ULL << (azslParser::Int4x1 - 130)) - | (1ULL << (azslParser::Int4x2 - 130)) - | (1ULL << (azslParser::Int4x3 - 130)) - | (1ULL << (azslParser::Int4x4 - 130)) - | (1ULL << (azslParser::Interface - 130)) - | (1ULL << (azslParser::Line_ - 130)) - | (1ULL << (azslParser::LineAdj - 130)) - | (1ULL << (azslParser::Linear - 130)) - | (1ULL << (azslParser::LineStream - 130)) - | (1ULL << (azslParser::Matrix - 130)) - | (1ULL << (azslParser::Nointerpolation - 130)) - | (1ULL << (azslParser::Noperspective - 130)) - | (1ULL << (azslParser::Option - 130)) - | (1ULL << (azslParser::Out - 130)) - | (1ULL << (azslParser::OutputPatch - 130)) - | (1ULL << (azslParser::Point - 130)) - | (1ULL << (azslParser::PointStream - 130)) - | (1ULL << (azslParser::Precise - 130)) - | (1ULL << (azslParser::RasterizerOrderedBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture3D - 130)) - | (1ULL << (azslParser::RayDesc - 130)) - | (1ULL << (azslParser::RaytracingAccelerationStructure - 130)) - | (1ULL << (azslParser::Return - 130)) - | (1ULL << (azslParser::RowMajor - 130)) - | (1ULL << (azslParser::RWBuffer - 130)) - | (1ULL << (azslParser::RWByteAddressBuffer - 130)) - | (1ULL << (azslParser::RWStructuredBuffer - 130)) - | (1ULL << (azslParser::RWTexture1D - 130)) - | (1ULL << (azslParser::RWTexture1DArray - 130)) - | (1ULL << (azslParser::RWTexture2D - 130)) - | (1ULL << (azslParser::RWTexture2DArray - 130)) - | (1ULL << (azslParser::RWTexture3D - 130)) - | (1ULL << (azslParser::Sample - 130)) - | (1ULL << (azslParser::Sampler - 130)) - | (1ULL << (azslParser::SamplerCapitalS - 130)) - | (1ULL << (azslParser::SamplerComparisonState - 130)) - | (1ULL << (azslParser::SamplerState - 130)) - | (1ULL << (azslParser::Shared - 130)) - | (1ULL << (azslParser::Static - 130)) - | (1ULL << (azslParser::Struct - 130)) - | (1ULL << (azslParser::StructuredBuffer - 130)) - | (1ULL << (azslParser::SubpassInput - 130)) - | (1ULL << (azslParser::SubpassInputMS - 130)) - | (1ULL << (azslParser::Switch - 130)) - | (1ULL << (azslParser::Texture1D - 130)) - | (1ULL << (azslParser::Texture1DArray - 130)) - | (1ULL << (azslParser::Texture2D - 130)))) != 0) || ((((_la - 194) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 194)) & ((1ULL << (azslParser::Texture2DArray - 194)) - | (1ULL << (azslParser::Texture2DMS - 194)) - | (1ULL << (azslParser::Texture2DMSArray - 194)) - | (1ULL << (azslParser::Texture3D - 194)) - | (1ULL << (azslParser::TextureCube - 194)) - | (1ULL << (azslParser::TextureCubeArray - 194)) - | (1ULL << (azslParser::Triangle - 194)) - | (1ULL << (azslParser::TriangleAdj - 194)) - | (1ULL << (azslParser::TriangleStream - 194)) - | (1ULL << (azslParser::Uniform - 194)) - | (1ULL << (azslParser::Uint - 194)) - | (1ULL << (azslParser::Uint32_t - 194)) - | (1ULL << (azslParser::Uint64_t - 194)) - | (1ULL << (azslParser::UnsignedInt - 194)) - | (1ULL << (azslParser::Uint1 - 194)) - | (1ULL << (azslParser::Uint2 - 194)) - | (1ULL << (azslParser::Uint3 - 194)) - | (1ULL << (azslParser::Uint4 - 194)) - | (1ULL << (azslParser::Uint1x1 - 194)) - | (1ULL << (azslParser::Uint1x2 - 194)) - | (1ULL << (azslParser::Uint1x3 - 194)) - | (1ULL << (azslParser::Uint1x4 - 194)) - | (1ULL << (azslParser::Uint2x1 - 194)) - | (1ULL << (azslParser::Uint2x2 - 194)) - | (1ULL << (azslParser::Uint2x3 - 194)) - | (1ULL << (azslParser::Uint2x4 - 194)) - | (1ULL << (azslParser::Uint3x1 - 194)) - | (1ULL << (azslParser::Uint3x2 - 194)) - | (1ULL << (azslParser::Uint3x3 - 194)) - | (1ULL << (azslParser::Uint3x4 - 194)) - | (1ULL << (azslParser::Uint4x1 - 194)) - | (1ULL << (azslParser::Uint4x2 - 194)) - | (1ULL << (azslParser::Uint4x3 - 194)) - | (1ULL << (azslParser::Uint4x4 - 194)) - | (1ULL << (azslParser::Dword - 194)) - | (1ULL << (azslParser::Dword1 - 194)) - | (1ULL << (azslParser::Dword2 - 194)) - | (1ULL << (azslParser::Dword3 - 194)) - | (1ULL << (azslParser::Dword4 - 194)) - | (1ULL << (azslParser::Dword1x1 - 194)) - | (1ULL << (azslParser::Dword1x2 - 194)) - | (1ULL << (azslParser::Dword1x3 - 194)) - | (1ULL << (azslParser::Dword1x4 - 194)) - | (1ULL << (azslParser::Dword2x1 - 194)) - | (1ULL << (azslParser::Dword2x2 - 194)) - | (1ULL << (azslParser::Dword2x3 - 194)) - | (1ULL << (azslParser::Dword2x4 - 194)) - | (1ULL << (azslParser::Dword3x1 - 194)) - | (1ULL << (azslParser::Dword3x2 - 194)) - | (1ULL << (azslParser::Dword3x3 - 194)) - | (1ULL << (azslParser::Dword3x4 - 194)) - | (1ULL << (azslParser::Dword4x1 - 194)) - | (1ULL << (azslParser::Dword4x2 - 194)) - | (1ULL << (azslParser::Dword4x3 - 194)) - | (1ULL << (azslParser::Dword4x4 - 194)) - | (1ULL << (azslParser::Vector - 194)) - | (1ULL << (azslParser::Volatile - 194)) - | (1ULL << (azslParser::While - 194)) - | (1ULL << (azslParser::StateObjectConfig - 194)) - | (1ULL << (azslParser::LocalRootSignature - 194)) - | (1ULL << (azslParser::GlobalRootSignature - 194)) - | (1ULL << (azslParser::SubobjectToExportsAssociation - 194)) - | (1ULL << (azslParser::RaytracingShaderConfig - 194)))) != 0) || ((((_la - 258) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 258)) & ((1ULL << (azslParser::RaytracingPipelineConfig - 258)) - | (1ULL << (azslParser::RaytracingPipelineConfig1 - 258)) - | (1ULL << (azslParser::TriangleHitGroup - 258)) - | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 258)) - | (1ULL << (azslParser::LeftParen - 258)) - | (1ULL << (azslParser::LeftBracket - 258)) - | (1ULL << (azslParser::LeftBrace - 258)) - | (1ULL << (azslParser::LeftDoubleBracket - 258)) - | (1ULL << (azslParser::Plus - 258)) - | (1ULL << (azslParser::PlusPlus - 258)) - | (1ULL << (azslParser::Minus - 258)) - | (1ULL << (azslParser::MinusMinus - 258)))) != 0) || ((((_la - 322) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 322)) & ((1ULL << (azslParser::Not - 322)) - | (1ULL << (azslParser::Tilde - 322)) - | (1ULL << (azslParser::ColonColon - 322)) - | (1ULL << (azslParser::Semi - 322)) - | (1ULL << (azslParser::True - 322)) - | (1ULL << (azslParser::False - 322)) - | (1ULL << (azslParser::KW_TypeAlias - 322)) - | (1ULL << (azslParser::KW_Typedef - 322)) - | (1ULL << (azslParser::KW_Typeof - 322)) - | (1ULL << (azslParser::KW_ext_print_message - 322)) - | (1ULL << (azslParser::KW_ext_print_symbol - 322)) - | (1ULL << (azslParser::Identifier - 322)) - | (1ULL << (azslParser::IntegerLiteral - 322)) - | (1ULL << (azslParser::FloatLiteral - 322)) - | (1ULL << (azslParser::StringLiteral - 322)))) != 0)) { - setState(527); + | (1ULL << azslParser::Enum))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (azslParser::Extern - 64)) + | (1ULL << (azslParser::Float - 64)) + | (1ULL << (azslParser::Float1 - 64)) + | (1ULL << (azslParser::Float2 - 64)) + | (1ULL << (azslParser::Float3 - 64)) + | (1ULL << (azslParser::Float4 - 64)) + | (1ULL << (azslParser::Float1x1 - 64)) + | (1ULL << (azslParser::Float1x2 - 64)) + | (1ULL << (azslParser::Float1x3 - 64)) + | (1ULL << (azslParser::Float1x4 - 64)) + | (1ULL << (azslParser::Float2x1 - 64)) + | (1ULL << (azslParser::Float2x2 - 64)) + | (1ULL << (azslParser::Float2x3 - 64)) + | (1ULL << (azslParser::Float2x4 - 64)) + | (1ULL << (azslParser::Float3x1 - 64)) + | (1ULL << (azslParser::Float3x2 - 64)) + | (1ULL << (azslParser::Float3x3 - 64)) + | (1ULL << (azslParser::Float3x4 - 64)) + | (1ULL << (azslParser::Float4x1 - 64)) + | (1ULL << (azslParser::Float4x2 - 64)) + | (1ULL << (azslParser::Float4x3 - 64)) + | (1ULL << (azslParser::Float4x4 - 64)) + | (1ULL << (azslParser::For - 64)) + | (1ULL << (azslParser::Groupshared - 64)) + | (1ULL << (azslParser::Globallycoherent - 64)) + | (1ULL << (azslParser::Half - 64)) + | (1ULL << (azslParser::Half1 - 64)) + | (1ULL << (azslParser::Half2 - 64)) + | (1ULL << (azslParser::Half3 - 64)) + | (1ULL << (azslParser::Half4 - 64)) + | (1ULL << (azslParser::Half1x1 - 64)) + | (1ULL << (azslParser::Half1x2 - 64)) + | (1ULL << (azslParser::Half1x3 - 64)) + | (1ULL << (azslParser::Half1x4 - 64)) + | (1ULL << (azslParser::Half2x1 - 64)) + | (1ULL << (azslParser::Half2x2 - 64)) + | (1ULL << (azslParser::Half2x3 - 64)) + | (1ULL << (azslParser::Half2x4 - 64)) + | (1ULL << (azslParser::Half3x1 - 64)) + | (1ULL << (azslParser::Half3x2 - 64)) + | (1ULL << (azslParser::Half3x3 - 64)) + | (1ULL << (azslParser::Half3x4 - 64)) + | (1ULL << (azslParser::Half4x1 - 64)) + | (1ULL << (azslParser::Half4x2 - 64)) + | (1ULL << (azslParser::Half4x3 - 64)) + | (1ULL << (azslParser::Half4x4 - 64)) + | (1ULL << (azslParser::If - 64)) + | (1ULL << (azslParser::In - 64)) + | (1ULL << (azslParser::Inline - 64)) + | (1ULL << (azslParser::Rootconstant - 64)) + | (1ULL << (azslParser::Inout - 64)) + | (1ULL << (azslParser::InputPatch - 64)) + | (1ULL << (azslParser::Int - 64)) + | (1ULL << (azslParser::Int16_t - 64)) + | (1ULL << (azslParser::Int32_t - 64)) + | (1ULL << (azslParser::Int64_t - 64)) + | (1ULL << (azslParser::Int1 - 64)) + | (1ULL << (azslParser::Int2 - 64)) + | (1ULL << (azslParser::Int3 - 64)) + | (1ULL << (azslParser::Int4 - 64)) + | (1ULL << (azslParser::Int1x1 - 64)))) != 0) || ((((_la - 128) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 128)) & ((1ULL << (azslParser::Int1x2 - 128)) + | (1ULL << (azslParser::Int1x3 - 128)) + | (1ULL << (azslParser::Int1x4 - 128)) + | (1ULL << (azslParser::Int2x1 - 128)) + | (1ULL << (azslParser::Int2x2 - 128)) + | (1ULL << (azslParser::Int2x3 - 128)) + | (1ULL << (azslParser::Int2x4 - 128)) + | (1ULL << (azslParser::Int3x1 - 128)) + | (1ULL << (azslParser::Int3x2 - 128)) + | (1ULL << (azslParser::Int3x3 - 128)) + | (1ULL << (azslParser::Int3x4 - 128)) + | (1ULL << (azslParser::Int4x1 - 128)) + | (1ULL << (azslParser::Int4x2 - 128)) + | (1ULL << (azslParser::Int4x3 - 128)) + | (1ULL << (azslParser::Int4x4 - 128)) + | (1ULL << (azslParser::Interface - 128)) + | (1ULL << (azslParser::Line_ - 128)) + | (1ULL << (azslParser::LineAdj - 128)) + | (1ULL << (azslParser::Linear - 128)) + | (1ULL << (azslParser::LineStream - 128)) + | (1ULL << (azslParser::Matrix - 128)) + | (1ULL << (azslParser::Nointerpolation - 128)) + | (1ULL << (azslParser::Noperspective - 128)) + | (1ULL << (azslParser::Option - 128)) + | (1ULL << (azslParser::Out - 128)) + | (1ULL << (azslParser::OutputPatch - 128)) + | (1ULL << (azslParser::Point - 128)) + | (1ULL << (azslParser::PointStream - 128)) + | (1ULL << (azslParser::Precise - 128)) + | (1ULL << (azslParser::RasterizerOrderedBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture3D - 128)) + | (1ULL << (azslParser::RayDesc - 128)) + | (1ULL << (azslParser::RaytracingAccelerationStructure - 128)) + | (1ULL << (azslParser::Return - 128)) + | (1ULL << (azslParser::RowMajor - 128)) + | (1ULL << (azslParser::RWBuffer - 128)) + | (1ULL << (azslParser::RWByteAddressBuffer - 128)) + | (1ULL << (azslParser::RWStructuredBuffer - 128)) + | (1ULL << (azslParser::RWTexture1D - 128)) + | (1ULL << (azslParser::RWTexture1DArray - 128)) + | (1ULL << (azslParser::RWTexture2D - 128)) + | (1ULL << (azslParser::RWTexture2DArray - 128)) + | (1ULL << (azslParser::RWTexture3D - 128)) + | (1ULL << (azslParser::Sample - 128)) + | (1ULL << (azslParser::Sampler - 128)) + | (1ULL << (azslParser::SamplerCapitalS - 128)) + | (1ULL << (azslParser::SamplerComparisonState - 128)) + | (1ULL << (azslParser::SamplerStateCamel - 128)) + | (1ULL << (azslParser::SamplerState - 128)) + | (1ULL << (azslParser::Shared - 128)) + | (1ULL << (azslParser::SNorm - 128)) + | (1ULL << (azslParser::Static - 128)) + | (1ULL << (azslParser::Struct - 128)))) != 0) || ((((_la - 192) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 192)) & ((1ULL << (azslParser::StructuredBuffer - 192)) + | (1ULL << (azslParser::SubpassInput - 192)) + | (1ULL << (azslParser::SubpassInputMS - 192)) + | (1ULL << (azslParser::Switch - 192)) + | (1ULL << (azslParser::Texture1D - 192)) + | (1ULL << (azslParser::Texture1DArray - 192)) + | (1ULL << (azslParser::Texture2D - 192)) + | (1ULL << (azslParser::Texture2DArray - 192)) + | (1ULL << (azslParser::Texture2DMS - 192)) + | (1ULL << (azslParser::Texture2DMSArray - 192)) + | (1ULL << (azslParser::Texture3D - 192)) + | (1ULL << (azslParser::TextureCube - 192)) + | (1ULL << (azslParser::TextureCubeArray - 192)) + | (1ULL << (azslParser::Triangle - 192)) + | (1ULL << (azslParser::TriangleAdj - 192)) + | (1ULL << (azslParser::TriangleStream - 192)) + | (1ULL << (azslParser::Uniform - 192)) + | (1ULL << (azslParser::Uint - 192)) + | (1ULL << (azslParser::Uint1 - 192)) + | (1ULL << (azslParser::Uint2 - 192)) + | (1ULL << (azslParser::Uint3 - 192)) + | (1ULL << (azslParser::Uint4 - 192)) + | (1ULL << (azslParser::Uint1x1 - 192)) + | (1ULL << (azslParser::Uint1x2 - 192)) + | (1ULL << (azslParser::Uint1x3 - 192)) + | (1ULL << (azslParser::Uint1x4 - 192)) + | (1ULL << (azslParser::Uint2x1 - 192)) + | (1ULL << (azslParser::Uint2x2 - 192)) + | (1ULL << (azslParser::Uint2x3 - 192)) + | (1ULL << (azslParser::Uint2x4 - 192)) + | (1ULL << (azslParser::Uint3x1 - 192)) + | (1ULL << (azslParser::Uint3x2 - 192)) + | (1ULL << (azslParser::Uint3x3 - 192)) + | (1ULL << (azslParser::Uint3x4 - 192)) + | (1ULL << (azslParser::Uint4x1 - 192)) + | (1ULL << (azslParser::Uint4x2 - 192)) + | (1ULL << (azslParser::Uint4x3 - 192)) + | (1ULL << (azslParser::Uint4x4 - 192)) + | (1ULL << (azslParser::Uint16_t - 192)) + | (1ULL << (azslParser::Uint32_t - 192)) + | (1ULL << (azslParser::Uint64_t - 192)) + | (1ULL << (azslParser::UNorm - 192)) + | (1ULL << (azslParser::Unsigned - 192)) + | (1ULL << (azslParser::Dword - 192)) + | (1ULL << (azslParser::Dword1 - 192)) + | (1ULL << (azslParser::Dword2 - 192)) + | (1ULL << (azslParser::Dword3 - 192)) + | (1ULL << (azslParser::Dword4 - 192)) + | (1ULL << (azslParser::Dword1x1 - 192)) + | (1ULL << (azslParser::Dword1x2 - 192)) + | (1ULL << (azslParser::Dword1x3 - 192)) + | (1ULL << (azslParser::Dword1x4 - 192)) + | (1ULL << (azslParser::Dword2x1 - 192)) + | (1ULL << (azslParser::Dword2x2 - 192)) + | (1ULL << (azslParser::Dword2x3 - 192)) + | (1ULL << (azslParser::Dword2x4 - 192)) + | (1ULL << (azslParser::Dword3x1 - 192)) + | (1ULL << (azslParser::Dword3x2 - 192)) + | (1ULL << (azslParser::Dword3x3 - 192)) + | (1ULL << (azslParser::Dword3x4 - 192)) + | (1ULL << (azslParser::Dword4x1 - 192)) + | (1ULL << (azslParser::Dword4x2 - 192)) + | (1ULL << (azslParser::Dword4x3 - 192)))) != 0) || ((((_la - 256) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 256)) & ((1ULL << (azslParser::Dword4x4 - 256)) + | (1ULL << (azslParser::Vector - 256)) + | (1ULL << (azslParser::Volatile - 256)) + | (1ULL << (azslParser::Void - 256)) + | (1ULL << (azslParser::While - 256)) + | (1ULL << (azslParser::StateObjectConfig - 256)) + | (1ULL << (azslParser::LocalRootSignature - 256)) + | (1ULL << (azslParser::GlobalRootSignature - 256)) + | (1ULL << (azslParser::SubobjectToExportsAssociation - 256)) + | (1ULL << (azslParser::RaytracingShaderConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig1 - 256)) + | (1ULL << (azslParser::TriangleHitGroup - 256)) + | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 256)) + | (1ULL << (azslParser::LeftParen - 256)) + | (1ULL << (azslParser::LeftBracket - 256)) + | (1ULL << (azslParser::LeftBrace - 256)) + | (1ULL << (azslParser::LeftDoubleBracket - 256)) + | (1ULL << (azslParser::Plus - 256)) + | (1ULL << (azslParser::PlusPlus - 256)))) != 0) || ((((_la - 320) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 320)) & ((1ULL << (azslParser::Minus - 320)) + | (1ULL << (azslParser::MinusMinus - 320)) + | (1ULL << (azslParser::Not - 320)) + | (1ULL << (azslParser::Tilde - 320)) + | (1ULL << (azslParser::ColonColon - 320)) + | (1ULL << (azslParser::Semi - 320)) + | (1ULL << (azslParser::True - 320)) + | (1ULL << (azslParser::False - 320)) + | (1ULL << (azslParser::KW_TypeAlias - 320)) + | (1ULL << (azslParser::KW_Typedef - 320)) + | (1ULL << (azslParser::KW_Typeof - 320)) + | (1ULL << (azslParser::KW_ext_print_message - 320)) + | (1ULL << (azslParser::KW_ext_print_symbol - 320)) + | (1ULL << (azslParser::Identifier - 320)) + | (1ULL << (azslParser::IntegerLiteral - 320)) + | (1ULL << (azslParser::FloatLiteral - 320)) + | (1ULL << (azslParser::StringLiteral - 320)))) != 0)) { + setState(524); antlrcpp::downCast(_localctx)->statementContext = statement(); antlrcpp::downCast(_localctx)->Stmts.push_back(antlrcpp::downCast(_localctx)->statementContext); - setState(532); + setState(529); _errHandler->sync(this); _la = _input->LA(1); } - setState(533); + setState(530); match(azslParser::RightBrace); } @@ -4664,26 +4446,26 @@ azslParser::StatementContext* azslParser::statement() { exitRule(); }); try { - setState(538); + setState(535); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 33, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(535); + setState(532); variableDeclarationStatement(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(536); + setState(533); embeddedStatement(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(537); + setState(534); anyStructuredTypeDefinitionStatement(); break; } @@ -4745,19 +4527,19 @@ azslParser::ForInitializerContext* azslParser::forInitializer() { exitRule(); }); try { - setState(542); + setState(539); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 34, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(540); + setState(537); variableDeclaration(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(541); + setState(538); expressionExt(0); break; } @@ -4851,17 +4633,17 @@ azslParser::SwitchLabelContext* azslParser::switchLabel() { exitRule(); }); try { - setState(550); + setState(547); _errHandler->sync(this); switch (_input->LA(1)) { case azslParser::Case: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 1); - setState(544); + setState(541); match(azslParser::Case); - setState(545); + setState(542); antlrcpp::downCast(_localctx)->Expr = expression(0); - setState(546); + setState(543); match(azslParser::Colon); break; } @@ -4869,9 +4651,9 @@ azslParser::SwitchLabelContext* azslParser::switchLabel() { case azslParser::Default: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 2); - setState(548); + setState(545); match(azslParser::Default); - setState(549); + setState(546); match(azslParser::Colon); break; } @@ -4943,25 +4725,25 @@ azslParser::SwitchSectionContext* azslParser::switchSection() { }); try { enterOuterAlt(_localctx, 1); - setState(553); + setState(550); _errHandler->sync(this); _la = _input->LA(1); do { - setState(552); + setState(549); switchLabel(); - setState(555); + setState(552); _errHandler->sync(this); _la = _input->LA(1); } while (_la == azslParser::Case || _la == azslParser::Default); - setState(558); + setState(555); _errHandler->sync(this); _la = _input->LA(1); do { - setState(557); + setState(554); statement(); - setState(560); + setState(557); _errHandler->sync(this); _la = _input->LA(1); } while ((((_la & ~ 0x3fULL) == 0) && @@ -4991,9 +4773,9 @@ azslParser::SwitchSectionContext* azslParser::switchSection() { | (1ULL << azslParser::BuiltInTriangleIntersectionAttributes) | (1ULL << azslParser::ByteAddressBuffer) | (1ULL << azslParser::Break) + | (1ULL << azslParser::Centroid) | (1ULL << azslParser::ConstantBuffer) | (1ULL << azslParser::ConstantBufferCamel) - | (1ULL << azslParser::Centroid) | (1ULL << azslParser::Class) | (1ULL << azslParser::ColumnMajor) | (1ULL << azslParser::Const) @@ -5022,220 +4804,227 @@ azslParser::SwitchSectionContext* azslParser::switchSection() { | (1ULL << azslParser::Double4x2) | (1ULL << azslParser::Double4x3) | (1ULL << azslParser::Double4x4) - | (1ULL << azslParser::Enum) - | (1ULL << azslParser::Extern))) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & ((1ULL << (azslParser::Float - 66)) - | (1ULL << (azslParser::Float1 - 66)) - | (1ULL << (azslParser::Float2 - 66)) - | (1ULL << (azslParser::Float3 - 66)) - | (1ULL << (azslParser::Float4 - 66)) - | (1ULL << (azslParser::Float1x1 - 66)) - | (1ULL << (azslParser::Float1x2 - 66)) - | (1ULL << (azslParser::Float1x3 - 66)) - | (1ULL << (azslParser::Float1x4 - 66)) - | (1ULL << (azslParser::Float2x1 - 66)) - | (1ULL << (azslParser::Float2x2 - 66)) - | (1ULL << (azslParser::Float2x3 - 66)) - | (1ULL << (azslParser::Float2x4 - 66)) - | (1ULL << (azslParser::Float3x1 - 66)) - | (1ULL << (azslParser::Float3x2 - 66)) - | (1ULL << (azslParser::Float3x3 - 66)) - | (1ULL << (azslParser::Float3x4 - 66)) - | (1ULL << (azslParser::Float4x1 - 66)) - | (1ULL << (azslParser::Float4x2 - 66)) - | (1ULL << (azslParser::Float4x3 - 66)) - | (1ULL << (azslParser::Float4x4 - 66)) - | (1ULL << (azslParser::For - 66)) - | (1ULL << (azslParser::Groupshared - 66)) - | (1ULL << (azslParser::Half - 66)) - | (1ULL << (azslParser::Half1 - 66)) - | (1ULL << (azslParser::Half2 - 66)) - | (1ULL << (azslParser::Half3 - 66)) - | (1ULL << (azslParser::Half4 - 66)) - | (1ULL << (azslParser::Half1x1 - 66)) - | (1ULL << (azslParser::Half1x2 - 66)) - | (1ULL << (azslParser::Half1x3 - 66)) - | (1ULL << (azslParser::Half1x4 - 66)) - | (1ULL << (azslParser::Half2x1 - 66)) - | (1ULL << (azslParser::Half2x2 - 66)) - | (1ULL << (azslParser::Half2x3 - 66)) - | (1ULL << (azslParser::Half2x4 - 66)) - | (1ULL << (azslParser::Half3x1 - 66)) - | (1ULL << (azslParser::Half3x2 - 66)) - | (1ULL << (azslParser::Half3x3 - 66)) - | (1ULL << (azslParser::Half3x4 - 66)) - | (1ULL << (azslParser::Half4x1 - 66)) - | (1ULL << (azslParser::Half4x2 - 66)) - | (1ULL << (azslParser::Half4x3 - 66)) - | (1ULL << (azslParser::Half4x4 - 66)) - | (1ULL << (azslParser::If - 66)) - | (1ULL << (azslParser::In - 66)) - | (1ULL << (azslParser::Inline - 66)) - | (1ULL << (azslParser::Rootconstant - 66)) - | (1ULL << (azslParser::Inout - 66)) - | (1ULL << (azslParser::InputPatch - 66)) - | (1ULL << (azslParser::Int - 66)) - | (1ULL << (azslParser::Int32_t - 66)) - | (1ULL << (azslParser::Int64_t - 66)) - | (1ULL << (azslParser::Int1 - 66)) - | (1ULL << (azslParser::Int2 - 66)) - | (1ULL << (azslParser::Int3 - 66)) - | (1ULL << (azslParser::Int4 - 66)) - | (1ULL << (azslParser::Int1x1 - 66)) - | (1ULL << (azslParser::Int1x2 - 66)) - | (1ULL << (azslParser::Int1x3 - 66)) - | (1ULL << (azslParser::Int1x4 - 66)) - | (1ULL << (azslParser::Int2x1 - 66)) - | (1ULL << (azslParser::Int2x2 - 66)))) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & ((1ULL << (azslParser::Int2x3 - 130)) - | (1ULL << (azslParser::Int2x4 - 130)) - | (1ULL << (azslParser::Int3x1 - 130)) - | (1ULL << (azslParser::Int3x2 - 130)) - | (1ULL << (azslParser::Int3x3 - 130)) - | (1ULL << (azslParser::Int3x4 - 130)) - | (1ULL << (azslParser::Int4x1 - 130)) - | (1ULL << (azslParser::Int4x2 - 130)) - | (1ULL << (azslParser::Int4x3 - 130)) - | (1ULL << (azslParser::Int4x4 - 130)) - | (1ULL << (azslParser::Interface - 130)) - | (1ULL << (azslParser::Line_ - 130)) - | (1ULL << (azslParser::LineAdj - 130)) - | (1ULL << (azslParser::Linear - 130)) - | (1ULL << (azslParser::LineStream - 130)) - | (1ULL << (azslParser::Matrix - 130)) - | (1ULL << (azslParser::Nointerpolation - 130)) - | (1ULL << (azslParser::Noperspective - 130)) - | (1ULL << (azslParser::Option - 130)) - | (1ULL << (azslParser::Out - 130)) - | (1ULL << (azslParser::OutputPatch - 130)) - | (1ULL << (azslParser::Point - 130)) - | (1ULL << (azslParser::PointStream - 130)) - | (1ULL << (azslParser::Precise - 130)) - | (1ULL << (azslParser::RasterizerOrderedBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture3D - 130)) - | (1ULL << (azslParser::RayDesc - 130)) - | (1ULL << (azslParser::RaytracingAccelerationStructure - 130)) - | (1ULL << (azslParser::Return - 130)) - | (1ULL << (azslParser::RowMajor - 130)) - | (1ULL << (azslParser::RWBuffer - 130)) - | (1ULL << (azslParser::RWByteAddressBuffer - 130)) - | (1ULL << (azslParser::RWStructuredBuffer - 130)) - | (1ULL << (azslParser::RWTexture1D - 130)) - | (1ULL << (azslParser::RWTexture1DArray - 130)) - | (1ULL << (azslParser::RWTexture2D - 130)) - | (1ULL << (azslParser::RWTexture2DArray - 130)) - | (1ULL << (azslParser::RWTexture3D - 130)) - | (1ULL << (azslParser::Sample - 130)) - | (1ULL << (azslParser::Sampler - 130)) - | (1ULL << (azslParser::SamplerCapitalS - 130)) - | (1ULL << (azslParser::SamplerComparisonState - 130)) - | (1ULL << (azslParser::SamplerState - 130)) - | (1ULL << (azslParser::Shared - 130)) - | (1ULL << (azslParser::Static - 130)) - | (1ULL << (azslParser::Struct - 130)) - | (1ULL << (azslParser::StructuredBuffer - 130)) - | (1ULL << (azslParser::SubpassInput - 130)) - | (1ULL << (azslParser::SubpassInputMS - 130)) - | (1ULL << (azslParser::Switch - 130)) - | (1ULL << (azslParser::Texture1D - 130)) - | (1ULL << (azslParser::Texture1DArray - 130)) - | (1ULL << (azslParser::Texture2D - 130)))) != 0) || ((((_la - 194) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 194)) & ((1ULL << (azslParser::Texture2DArray - 194)) - | (1ULL << (azslParser::Texture2DMS - 194)) - | (1ULL << (azslParser::Texture2DMSArray - 194)) - | (1ULL << (azslParser::Texture3D - 194)) - | (1ULL << (azslParser::TextureCube - 194)) - | (1ULL << (azslParser::TextureCubeArray - 194)) - | (1ULL << (azslParser::Triangle - 194)) - | (1ULL << (azslParser::TriangleAdj - 194)) - | (1ULL << (azslParser::TriangleStream - 194)) - | (1ULL << (azslParser::Uniform - 194)) - | (1ULL << (azslParser::Uint - 194)) - | (1ULL << (azslParser::Uint32_t - 194)) - | (1ULL << (azslParser::Uint64_t - 194)) - | (1ULL << (azslParser::UnsignedInt - 194)) - | (1ULL << (azslParser::Uint1 - 194)) - | (1ULL << (azslParser::Uint2 - 194)) - | (1ULL << (azslParser::Uint3 - 194)) - | (1ULL << (azslParser::Uint4 - 194)) - | (1ULL << (azslParser::Uint1x1 - 194)) - | (1ULL << (azslParser::Uint1x2 - 194)) - | (1ULL << (azslParser::Uint1x3 - 194)) - | (1ULL << (azslParser::Uint1x4 - 194)) - | (1ULL << (azslParser::Uint2x1 - 194)) - | (1ULL << (azslParser::Uint2x2 - 194)) - | (1ULL << (azslParser::Uint2x3 - 194)) - | (1ULL << (azslParser::Uint2x4 - 194)) - | (1ULL << (azslParser::Uint3x1 - 194)) - | (1ULL << (azslParser::Uint3x2 - 194)) - | (1ULL << (azslParser::Uint3x3 - 194)) - | (1ULL << (azslParser::Uint3x4 - 194)) - | (1ULL << (azslParser::Uint4x1 - 194)) - | (1ULL << (azslParser::Uint4x2 - 194)) - | (1ULL << (azslParser::Uint4x3 - 194)) - | (1ULL << (azslParser::Uint4x4 - 194)) - | (1ULL << (azslParser::Dword - 194)) - | (1ULL << (azslParser::Dword1 - 194)) - | (1ULL << (azslParser::Dword2 - 194)) - | (1ULL << (azslParser::Dword3 - 194)) - | (1ULL << (azslParser::Dword4 - 194)) - | (1ULL << (azslParser::Dword1x1 - 194)) - | (1ULL << (azslParser::Dword1x2 - 194)) - | (1ULL << (azslParser::Dword1x3 - 194)) - | (1ULL << (azslParser::Dword1x4 - 194)) - | (1ULL << (azslParser::Dword2x1 - 194)) - | (1ULL << (azslParser::Dword2x2 - 194)) - | (1ULL << (azslParser::Dword2x3 - 194)) - | (1ULL << (azslParser::Dword2x4 - 194)) - | (1ULL << (azslParser::Dword3x1 - 194)) - | (1ULL << (azslParser::Dword3x2 - 194)) - | (1ULL << (azslParser::Dword3x3 - 194)) - | (1ULL << (azslParser::Dword3x4 - 194)) - | (1ULL << (azslParser::Dword4x1 - 194)) - | (1ULL << (azslParser::Dword4x2 - 194)) - | (1ULL << (azslParser::Dword4x3 - 194)) - | (1ULL << (azslParser::Dword4x4 - 194)) - | (1ULL << (azslParser::Vector - 194)) - | (1ULL << (azslParser::Volatile - 194)) - | (1ULL << (azslParser::While - 194)) - | (1ULL << (azslParser::StateObjectConfig - 194)) - | (1ULL << (azslParser::LocalRootSignature - 194)) - | (1ULL << (azslParser::GlobalRootSignature - 194)) - | (1ULL << (azslParser::SubobjectToExportsAssociation - 194)) - | (1ULL << (azslParser::RaytracingShaderConfig - 194)))) != 0) || ((((_la - 258) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 258)) & ((1ULL << (azslParser::RaytracingPipelineConfig - 258)) - | (1ULL << (azslParser::RaytracingPipelineConfig1 - 258)) - | (1ULL << (azslParser::TriangleHitGroup - 258)) - | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 258)) - | (1ULL << (azslParser::LeftParen - 258)) - | (1ULL << (azslParser::LeftBracket - 258)) - | (1ULL << (azslParser::LeftBrace - 258)) - | (1ULL << (azslParser::LeftDoubleBracket - 258)) - | (1ULL << (azslParser::Plus - 258)) - | (1ULL << (azslParser::PlusPlus - 258)) - | (1ULL << (azslParser::Minus - 258)) - | (1ULL << (azslParser::MinusMinus - 258)))) != 0) || ((((_la - 322) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 322)) & ((1ULL << (azslParser::Not - 322)) - | (1ULL << (azslParser::Tilde - 322)) - | (1ULL << (azslParser::ColonColon - 322)) - | (1ULL << (azslParser::Semi - 322)) - | (1ULL << (azslParser::True - 322)) - | (1ULL << (azslParser::False - 322)) - | (1ULL << (azslParser::KW_TypeAlias - 322)) - | (1ULL << (azslParser::KW_Typedef - 322)) - | (1ULL << (azslParser::KW_Typeof - 322)) - | (1ULL << (azslParser::KW_ext_print_message - 322)) - | (1ULL << (azslParser::KW_ext_print_symbol - 322)) - | (1ULL << (azslParser::Identifier - 322)) - | (1ULL << (azslParser::IntegerLiteral - 322)) - | (1ULL << (azslParser::FloatLiteral - 322)) - | (1ULL << (azslParser::StringLiteral - 322)))) != 0)); + | (1ULL << azslParser::Enum))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (azslParser::Extern - 64)) + | (1ULL << (azslParser::Float - 64)) + | (1ULL << (azslParser::Float1 - 64)) + | (1ULL << (azslParser::Float2 - 64)) + | (1ULL << (azslParser::Float3 - 64)) + | (1ULL << (azslParser::Float4 - 64)) + | (1ULL << (azslParser::Float1x1 - 64)) + | (1ULL << (azslParser::Float1x2 - 64)) + | (1ULL << (azslParser::Float1x3 - 64)) + | (1ULL << (azslParser::Float1x4 - 64)) + | (1ULL << (azslParser::Float2x1 - 64)) + | (1ULL << (azslParser::Float2x2 - 64)) + | (1ULL << (azslParser::Float2x3 - 64)) + | (1ULL << (azslParser::Float2x4 - 64)) + | (1ULL << (azslParser::Float3x1 - 64)) + | (1ULL << (azslParser::Float3x2 - 64)) + | (1ULL << (azslParser::Float3x3 - 64)) + | (1ULL << (azslParser::Float3x4 - 64)) + | (1ULL << (azslParser::Float4x1 - 64)) + | (1ULL << (azslParser::Float4x2 - 64)) + | (1ULL << (azslParser::Float4x3 - 64)) + | (1ULL << (azslParser::Float4x4 - 64)) + | (1ULL << (azslParser::For - 64)) + | (1ULL << (azslParser::Groupshared - 64)) + | (1ULL << (azslParser::Globallycoherent - 64)) + | (1ULL << (azslParser::Half - 64)) + | (1ULL << (azslParser::Half1 - 64)) + | (1ULL << (azslParser::Half2 - 64)) + | (1ULL << (azslParser::Half3 - 64)) + | (1ULL << (azslParser::Half4 - 64)) + | (1ULL << (azslParser::Half1x1 - 64)) + | (1ULL << (azslParser::Half1x2 - 64)) + | (1ULL << (azslParser::Half1x3 - 64)) + | (1ULL << (azslParser::Half1x4 - 64)) + | (1ULL << (azslParser::Half2x1 - 64)) + | (1ULL << (azslParser::Half2x2 - 64)) + | (1ULL << (azslParser::Half2x3 - 64)) + | (1ULL << (azslParser::Half2x4 - 64)) + | (1ULL << (azslParser::Half3x1 - 64)) + | (1ULL << (azslParser::Half3x2 - 64)) + | (1ULL << (azslParser::Half3x3 - 64)) + | (1ULL << (azslParser::Half3x4 - 64)) + | (1ULL << (azslParser::Half4x1 - 64)) + | (1ULL << (azslParser::Half4x2 - 64)) + | (1ULL << (azslParser::Half4x3 - 64)) + | (1ULL << (azslParser::Half4x4 - 64)) + | (1ULL << (azslParser::If - 64)) + | (1ULL << (azslParser::In - 64)) + | (1ULL << (azslParser::Inline - 64)) + | (1ULL << (azslParser::Rootconstant - 64)) + | (1ULL << (azslParser::Inout - 64)) + | (1ULL << (azslParser::InputPatch - 64)) + | (1ULL << (azslParser::Int - 64)) + | (1ULL << (azslParser::Int16_t - 64)) + | (1ULL << (azslParser::Int32_t - 64)) + | (1ULL << (azslParser::Int64_t - 64)) + | (1ULL << (azslParser::Int1 - 64)) + | (1ULL << (azslParser::Int2 - 64)) + | (1ULL << (azslParser::Int3 - 64)) + | (1ULL << (azslParser::Int4 - 64)) + | (1ULL << (azslParser::Int1x1 - 64)))) != 0) || ((((_la - 128) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 128)) & ((1ULL << (azslParser::Int1x2 - 128)) + | (1ULL << (azslParser::Int1x3 - 128)) + | (1ULL << (azslParser::Int1x4 - 128)) + | (1ULL << (azslParser::Int2x1 - 128)) + | (1ULL << (azslParser::Int2x2 - 128)) + | (1ULL << (azslParser::Int2x3 - 128)) + | (1ULL << (azslParser::Int2x4 - 128)) + | (1ULL << (azslParser::Int3x1 - 128)) + | (1ULL << (azslParser::Int3x2 - 128)) + | (1ULL << (azslParser::Int3x3 - 128)) + | (1ULL << (azslParser::Int3x4 - 128)) + | (1ULL << (azslParser::Int4x1 - 128)) + | (1ULL << (azslParser::Int4x2 - 128)) + | (1ULL << (azslParser::Int4x3 - 128)) + | (1ULL << (azslParser::Int4x4 - 128)) + | (1ULL << (azslParser::Interface - 128)) + | (1ULL << (azslParser::Line_ - 128)) + | (1ULL << (azslParser::LineAdj - 128)) + | (1ULL << (azslParser::Linear - 128)) + | (1ULL << (azslParser::LineStream - 128)) + | (1ULL << (azslParser::Matrix - 128)) + | (1ULL << (azslParser::Nointerpolation - 128)) + | (1ULL << (azslParser::Noperspective - 128)) + | (1ULL << (azslParser::Option - 128)) + | (1ULL << (azslParser::Out - 128)) + | (1ULL << (azslParser::OutputPatch - 128)) + | (1ULL << (azslParser::Point - 128)) + | (1ULL << (azslParser::PointStream - 128)) + | (1ULL << (azslParser::Precise - 128)) + | (1ULL << (azslParser::RasterizerOrderedBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture3D - 128)) + | (1ULL << (azslParser::RayDesc - 128)) + | (1ULL << (azslParser::RaytracingAccelerationStructure - 128)) + | (1ULL << (azslParser::Return - 128)) + | (1ULL << (azslParser::RowMajor - 128)) + | (1ULL << (azslParser::RWBuffer - 128)) + | (1ULL << (azslParser::RWByteAddressBuffer - 128)) + | (1ULL << (azslParser::RWStructuredBuffer - 128)) + | (1ULL << (azslParser::RWTexture1D - 128)) + | (1ULL << (azslParser::RWTexture1DArray - 128)) + | (1ULL << (azslParser::RWTexture2D - 128)) + | (1ULL << (azslParser::RWTexture2DArray - 128)) + | (1ULL << (azslParser::RWTexture3D - 128)) + | (1ULL << (azslParser::Sample - 128)) + | (1ULL << (azslParser::Sampler - 128)) + | (1ULL << (azslParser::SamplerCapitalS - 128)) + | (1ULL << (azslParser::SamplerComparisonState - 128)) + | (1ULL << (azslParser::SamplerStateCamel - 128)) + | (1ULL << (azslParser::SamplerState - 128)) + | (1ULL << (azslParser::Shared - 128)) + | (1ULL << (azslParser::SNorm - 128)) + | (1ULL << (azslParser::Static - 128)) + | (1ULL << (azslParser::Struct - 128)))) != 0) || ((((_la - 192) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 192)) & ((1ULL << (azslParser::StructuredBuffer - 192)) + | (1ULL << (azslParser::SubpassInput - 192)) + | (1ULL << (azslParser::SubpassInputMS - 192)) + | (1ULL << (azslParser::Switch - 192)) + | (1ULL << (azslParser::Texture1D - 192)) + | (1ULL << (azslParser::Texture1DArray - 192)) + | (1ULL << (azslParser::Texture2D - 192)) + | (1ULL << (azslParser::Texture2DArray - 192)) + | (1ULL << (azslParser::Texture2DMS - 192)) + | (1ULL << (azslParser::Texture2DMSArray - 192)) + | (1ULL << (azslParser::Texture3D - 192)) + | (1ULL << (azslParser::TextureCube - 192)) + | (1ULL << (azslParser::TextureCubeArray - 192)) + | (1ULL << (azslParser::Triangle - 192)) + | (1ULL << (azslParser::TriangleAdj - 192)) + | (1ULL << (azslParser::TriangleStream - 192)) + | (1ULL << (azslParser::Uniform - 192)) + | (1ULL << (azslParser::Uint - 192)) + | (1ULL << (azslParser::Uint1 - 192)) + | (1ULL << (azslParser::Uint2 - 192)) + | (1ULL << (azslParser::Uint3 - 192)) + | (1ULL << (azslParser::Uint4 - 192)) + | (1ULL << (azslParser::Uint1x1 - 192)) + | (1ULL << (azslParser::Uint1x2 - 192)) + | (1ULL << (azslParser::Uint1x3 - 192)) + | (1ULL << (azslParser::Uint1x4 - 192)) + | (1ULL << (azslParser::Uint2x1 - 192)) + | (1ULL << (azslParser::Uint2x2 - 192)) + | (1ULL << (azslParser::Uint2x3 - 192)) + | (1ULL << (azslParser::Uint2x4 - 192)) + | (1ULL << (azslParser::Uint3x1 - 192)) + | (1ULL << (azslParser::Uint3x2 - 192)) + | (1ULL << (azslParser::Uint3x3 - 192)) + | (1ULL << (azslParser::Uint3x4 - 192)) + | (1ULL << (azslParser::Uint4x1 - 192)) + | (1ULL << (azslParser::Uint4x2 - 192)) + | (1ULL << (azslParser::Uint4x3 - 192)) + | (1ULL << (azslParser::Uint4x4 - 192)) + | (1ULL << (azslParser::Uint16_t - 192)) + | (1ULL << (azslParser::Uint32_t - 192)) + | (1ULL << (azslParser::Uint64_t - 192)) + | (1ULL << (azslParser::UNorm - 192)) + | (1ULL << (azslParser::Unsigned - 192)) + | (1ULL << (azslParser::Dword - 192)) + | (1ULL << (azslParser::Dword1 - 192)) + | (1ULL << (azslParser::Dword2 - 192)) + | (1ULL << (azslParser::Dword3 - 192)) + | (1ULL << (azslParser::Dword4 - 192)) + | (1ULL << (azslParser::Dword1x1 - 192)) + | (1ULL << (azslParser::Dword1x2 - 192)) + | (1ULL << (azslParser::Dword1x3 - 192)) + | (1ULL << (azslParser::Dword1x4 - 192)) + | (1ULL << (azslParser::Dword2x1 - 192)) + | (1ULL << (azslParser::Dword2x2 - 192)) + | (1ULL << (azslParser::Dword2x3 - 192)) + | (1ULL << (azslParser::Dword2x4 - 192)) + | (1ULL << (azslParser::Dword3x1 - 192)) + | (1ULL << (azslParser::Dword3x2 - 192)) + | (1ULL << (azslParser::Dword3x3 - 192)) + | (1ULL << (azslParser::Dword3x4 - 192)) + | (1ULL << (azslParser::Dword4x1 - 192)) + | (1ULL << (azslParser::Dword4x2 - 192)) + | (1ULL << (azslParser::Dword4x3 - 192)))) != 0) || ((((_la - 256) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 256)) & ((1ULL << (azslParser::Dword4x4 - 256)) + | (1ULL << (azslParser::Vector - 256)) + | (1ULL << (azslParser::Volatile - 256)) + | (1ULL << (azslParser::Void - 256)) + | (1ULL << (azslParser::While - 256)) + | (1ULL << (azslParser::StateObjectConfig - 256)) + | (1ULL << (azslParser::LocalRootSignature - 256)) + | (1ULL << (azslParser::GlobalRootSignature - 256)) + | (1ULL << (azslParser::SubobjectToExportsAssociation - 256)) + | (1ULL << (azslParser::RaytracingShaderConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig1 - 256)) + | (1ULL << (azslParser::TriangleHitGroup - 256)) + | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 256)) + | (1ULL << (azslParser::LeftParen - 256)) + | (1ULL << (azslParser::LeftBracket - 256)) + | (1ULL << (azslParser::LeftBrace - 256)) + | (1ULL << (azslParser::LeftDoubleBracket - 256)) + | (1ULL << (azslParser::Plus - 256)) + | (1ULL << (azslParser::PlusPlus - 256)))) != 0) || ((((_la - 320) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 320)) & ((1ULL << (azslParser::Minus - 320)) + | (1ULL << (azslParser::MinusMinus - 320)) + | (1ULL << (azslParser::Not - 320)) + | (1ULL << (azslParser::Tilde - 320)) + | (1ULL << (azslParser::ColonColon - 320)) + | (1ULL << (azslParser::Semi - 320)) + | (1ULL << (azslParser::True - 320)) + | (1ULL << (azslParser::False - 320)) + | (1ULL << (azslParser::KW_TypeAlias - 320)) + | (1ULL << (azslParser::KW_Typedef - 320)) + | (1ULL << (azslParser::KW_Typeof - 320)) + | (1ULL << (azslParser::KW_ext_print_message - 320)) + | (1ULL << (azslParser::KW_ext_print_symbol - 320)) + | (1ULL << (azslParser::Identifier - 320)) + | (1ULL << (azslParser::IntegerLiteral - 320)) + | (1ULL << (azslParser::FloatLiteral - 320)) + | (1ULL << (azslParser::StringLiteral - 320)))) != 0)); } catch (RecognitionException &e) { @@ -5300,21 +5089,21 @@ azslParser::SwitchBlockContext* azslParser::switchBlock() { }); try { enterOuterAlt(_localctx, 1); - setState(562); + setState(559); match(azslParser::LeftBrace); - setState(566); + setState(563); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::Case || _la == azslParser::Default) { - setState(563); + setState(560); switchSection(); - setState(568); + setState(565); _errHandler->sync(this); _la = _input->LA(1); } - setState(569); + setState(566); match(azslParser::RightBrace); } @@ -5779,13 +5568,13 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { exitRule(); }); try { - setState(662); + setState(659); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 49, _ctx)) { case 1: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 1); - setState(571); + setState(568); match(azslParser::Semi); break; } @@ -5793,7 +5582,7 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { case 2: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 2); - setState(572); + setState(569); block(); break; } @@ -5801,9 +5590,9 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { case 3: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 3); - setState(573); + setState(570); antlrcpp::downCast(_localctx)->Expr = expressionExt(0); - setState(574); + setState(571); match(azslParser::Semi); break; } @@ -5811,32 +5600,32 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { case 4: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 4); - setState(579); + setState(576); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::LeftBracket) { - setState(576); + setState(573); attributeSpecifier(); - setState(581); + setState(578); _errHandler->sync(this); _la = _input->LA(1); } - setState(582); + setState(579); match(azslParser::If); - setState(583); + setState(580); match(azslParser::LeftParen); - setState(584); + setState(581); antlrcpp::downCast(_localctx)->Condition = expressionExt(0); - setState(585); + setState(582); match(azslParser::RightParen); - setState(586); + setState(583); antlrcpp::downCast(_localctx)->Stmt = embeddedStatement(); - setState(588); + setState(585); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 40, _ctx)) { case 1: { - setState(587); + setState(584); elseClause(); break; } @@ -5850,25 +5639,25 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { case 5: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 5); - setState(593); + setState(590); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::LeftBracket) { - setState(590); + setState(587); attributeSpecifier(); - setState(595); + setState(592); _errHandler->sync(this); _la = _input->LA(1); } - setState(596); + setState(593); match(azslParser::Switch); - setState(597); + setState(594); match(azslParser::LeftParen); - setState(598); + setState(595); antlrcpp::downCast(_localctx)->Expr = expressionExt(0); - setState(599); + setState(596); match(azslParser::RightParen); - setState(600); + setState(597); switchBlock(); break; } @@ -5876,25 +5665,25 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { case 6: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 6); - setState(605); + setState(602); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::LeftBracket) { - setState(602); + setState(599); attributeSpecifier(); - setState(607); + setState(604); _errHandler->sync(this); _la = _input->LA(1); } - setState(608); + setState(605); match(azslParser::While); - setState(609); + setState(606); match(azslParser::LeftParen); - setState(610); + setState(607); antlrcpp::downCast(_localctx)->condition = expressionExt(0); - setState(611); + setState(608); match(azslParser::RightParen); - setState(612); + setState(609); embeddedStatement(); break; } @@ -5902,29 +5691,29 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { case 7: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 7); - setState(617); + setState(614); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::LeftBracket) { - setState(614); + setState(611); attributeSpecifier(); - setState(619); + setState(616); _errHandler->sync(this); _la = _input->LA(1); } - setState(620); + setState(617); match(azslParser::Do); - setState(621); + setState(618); embeddedStatement(); - setState(622); + setState(619); match(azslParser::While); - setState(623); + setState(620); match(azslParser::LeftParen); - setState(624); + setState(621); antlrcpp::downCast(_localctx)->Condition = expressionExt(0); - setState(625); + setState(622); match(azslParser::RightParen); - setState(626); + setState(623); match(azslParser::Semi); break; } @@ -5932,21 +5721,21 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { case 8: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 8); - setState(631); + setState(628); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::LeftBracket) { - setState(628); + setState(625); attributeSpecifier(); - setState(633); + setState(630); _errHandler->sync(this); _la = _input->LA(1); } - setState(634); + setState(631); match(azslParser::For); - setState(635); + setState(632); match(azslParser::LeftParen); - setState(637); + setState(634); _errHandler->sync(this); _la = _input->LA(1); @@ -5976,9 +5765,9 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { | (1ULL << azslParser::Buffer) | (1ULL << azslParser::BuiltInTriangleIntersectionAttributes) | (1ULL << azslParser::ByteAddressBuffer) + | (1ULL << azslParser::Centroid) | (1ULL << azslParser::ConstantBuffer) | (1ULL << azslParser::ConstantBufferCamel) - | (1ULL << azslParser::Centroid) | (1ULL << azslParser::Class) | (1ULL << azslParser::ColumnMajor) | (1ULL << azslParser::Const) @@ -6004,215 +5793,222 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { | (1ULL << azslParser::Double4x2) | (1ULL << azslParser::Double4x3) | (1ULL << azslParser::Double4x4) - | (1ULL << azslParser::Enum) - | (1ULL << azslParser::Extern))) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & ((1ULL << (azslParser::Float - 66)) - | (1ULL << (azslParser::Float1 - 66)) - | (1ULL << (azslParser::Float2 - 66)) - | (1ULL << (azslParser::Float3 - 66)) - | (1ULL << (azslParser::Float4 - 66)) - | (1ULL << (azslParser::Float1x1 - 66)) - | (1ULL << (azslParser::Float1x2 - 66)) - | (1ULL << (azslParser::Float1x3 - 66)) - | (1ULL << (azslParser::Float1x4 - 66)) - | (1ULL << (azslParser::Float2x1 - 66)) - | (1ULL << (azslParser::Float2x2 - 66)) - | (1ULL << (azslParser::Float2x3 - 66)) - | (1ULL << (azslParser::Float2x4 - 66)) - | (1ULL << (azslParser::Float3x1 - 66)) - | (1ULL << (azslParser::Float3x2 - 66)) - | (1ULL << (azslParser::Float3x3 - 66)) - | (1ULL << (azslParser::Float3x4 - 66)) - | (1ULL << (azslParser::Float4x1 - 66)) - | (1ULL << (azslParser::Float4x2 - 66)) - | (1ULL << (azslParser::Float4x3 - 66)) - | (1ULL << (azslParser::Float4x4 - 66)) - | (1ULL << (azslParser::Groupshared - 66)) - | (1ULL << (azslParser::Half - 66)) - | (1ULL << (azslParser::Half1 - 66)) - | (1ULL << (azslParser::Half2 - 66)) - | (1ULL << (azslParser::Half3 - 66)) - | (1ULL << (azslParser::Half4 - 66)) - | (1ULL << (azslParser::Half1x1 - 66)) - | (1ULL << (azslParser::Half1x2 - 66)) - | (1ULL << (azslParser::Half1x3 - 66)) - | (1ULL << (azslParser::Half1x4 - 66)) - | (1ULL << (azslParser::Half2x1 - 66)) - | (1ULL << (azslParser::Half2x2 - 66)) - | (1ULL << (azslParser::Half2x3 - 66)) - | (1ULL << (azslParser::Half2x4 - 66)) - | (1ULL << (azslParser::Half3x1 - 66)) - | (1ULL << (azslParser::Half3x2 - 66)) - | (1ULL << (azslParser::Half3x3 - 66)) - | (1ULL << (azslParser::Half3x4 - 66)) - | (1ULL << (azslParser::Half4x1 - 66)) - | (1ULL << (azslParser::Half4x2 - 66)) - | (1ULL << (azslParser::Half4x3 - 66)) - | (1ULL << (azslParser::Half4x4 - 66)) - | (1ULL << (azslParser::In - 66)) - | (1ULL << (azslParser::Inline - 66)) - | (1ULL << (azslParser::Rootconstant - 66)) - | (1ULL << (azslParser::Inout - 66)) - | (1ULL << (azslParser::InputPatch - 66)) - | (1ULL << (azslParser::Int - 66)) - | (1ULL << (azslParser::Int32_t - 66)) - | (1ULL << (azslParser::Int64_t - 66)) - | (1ULL << (azslParser::Int1 - 66)) - | (1ULL << (azslParser::Int2 - 66)) - | (1ULL << (azslParser::Int3 - 66)) - | (1ULL << (azslParser::Int4 - 66)) - | (1ULL << (azslParser::Int1x1 - 66)) - | (1ULL << (azslParser::Int1x2 - 66)) - | (1ULL << (azslParser::Int1x3 - 66)) - | (1ULL << (azslParser::Int1x4 - 66)) - | (1ULL << (azslParser::Int2x1 - 66)) - | (1ULL << (azslParser::Int2x2 - 66)))) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & ((1ULL << (azslParser::Int2x3 - 130)) - | (1ULL << (azslParser::Int2x4 - 130)) - | (1ULL << (azslParser::Int3x1 - 130)) - | (1ULL << (azslParser::Int3x2 - 130)) - | (1ULL << (azslParser::Int3x3 - 130)) - | (1ULL << (azslParser::Int3x4 - 130)) - | (1ULL << (azslParser::Int4x1 - 130)) - | (1ULL << (azslParser::Int4x2 - 130)) - | (1ULL << (azslParser::Int4x3 - 130)) - | (1ULL << (azslParser::Int4x4 - 130)) - | (1ULL << (azslParser::Interface - 130)) - | (1ULL << (azslParser::Line_ - 130)) - | (1ULL << (azslParser::LineAdj - 130)) - | (1ULL << (azslParser::Linear - 130)) - | (1ULL << (azslParser::LineStream - 130)) - | (1ULL << (azslParser::Matrix - 130)) - | (1ULL << (azslParser::Nointerpolation - 130)) - | (1ULL << (azslParser::Noperspective - 130)) - | (1ULL << (azslParser::Option - 130)) - | (1ULL << (azslParser::Out - 130)) - | (1ULL << (azslParser::OutputPatch - 130)) - | (1ULL << (azslParser::Point - 130)) - | (1ULL << (azslParser::PointStream - 130)) - | (1ULL << (azslParser::Precise - 130)) - | (1ULL << (azslParser::RasterizerOrderedBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture3D - 130)) - | (1ULL << (azslParser::RayDesc - 130)) - | (1ULL << (azslParser::RaytracingAccelerationStructure - 130)) - | (1ULL << (azslParser::RowMajor - 130)) - | (1ULL << (azslParser::RWBuffer - 130)) - | (1ULL << (azslParser::RWByteAddressBuffer - 130)) - | (1ULL << (azslParser::RWStructuredBuffer - 130)) - | (1ULL << (azslParser::RWTexture1D - 130)) - | (1ULL << (azslParser::RWTexture1DArray - 130)) - | (1ULL << (azslParser::RWTexture2D - 130)) - | (1ULL << (azslParser::RWTexture2DArray - 130)) - | (1ULL << (azslParser::RWTexture3D - 130)) - | (1ULL << (azslParser::Sample - 130)) - | (1ULL << (azslParser::Sampler - 130)) - | (1ULL << (azslParser::SamplerCapitalS - 130)) - | (1ULL << (azslParser::SamplerComparisonState - 130)) - | (1ULL << (azslParser::SamplerState - 130)) - | (1ULL << (azslParser::Shared - 130)) - | (1ULL << (azslParser::Static - 130)) - | (1ULL << (azslParser::Struct - 130)) - | (1ULL << (azslParser::StructuredBuffer - 130)) - | (1ULL << (azslParser::SubpassInput - 130)) - | (1ULL << (azslParser::SubpassInputMS - 130)) - | (1ULL << (azslParser::Texture1D - 130)) - | (1ULL << (azslParser::Texture1DArray - 130)) - | (1ULL << (azslParser::Texture2D - 130)))) != 0) || ((((_la - 194) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 194)) & ((1ULL << (azslParser::Texture2DArray - 194)) - | (1ULL << (azslParser::Texture2DMS - 194)) - | (1ULL << (azslParser::Texture2DMSArray - 194)) - | (1ULL << (azslParser::Texture3D - 194)) - | (1ULL << (azslParser::TextureCube - 194)) - | (1ULL << (azslParser::TextureCubeArray - 194)) - | (1ULL << (azslParser::Triangle - 194)) - | (1ULL << (azslParser::TriangleAdj - 194)) - | (1ULL << (azslParser::TriangleStream - 194)) - | (1ULL << (azslParser::Uniform - 194)) - | (1ULL << (azslParser::Uint - 194)) - | (1ULL << (azslParser::Uint32_t - 194)) - | (1ULL << (azslParser::Uint64_t - 194)) - | (1ULL << (azslParser::UnsignedInt - 194)) - | (1ULL << (azslParser::Uint1 - 194)) - | (1ULL << (azslParser::Uint2 - 194)) - | (1ULL << (azslParser::Uint3 - 194)) - | (1ULL << (azslParser::Uint4 - 194)) - | (1ULL << (azslParser::Uint1x1 - 194)) - | (1ULL << (azslParser::Uint1x2 - 194)) - | (1ULL << (azslParser::Uint1x3 - 194)) - | (1ULL << (azslParser::Uint1x4 - 194)) - | (1ULL << (azslParser::Uint2x1 - 194)) - | (1ULL << (azslParser::Uint2x2 - 194)) - | (1ULL << (azslParser::Uint2x3 - 194)) - | (1ULL << (azslParser::Uint2x4 - 194)) - | (1ULL << (azslParser::Uint3x1 - 194)) - | (1ULL << (azslParser::Uint3x2 - 194)) - | (1ULL << (azslParser::Uint3x3 - 194)) - | (1ULL << (azslParser::Uint3x4 - 194)) - | (1ULL << (azslParser::Uint4x1 - 194)) - | (1ULL << (azslParser::Uint4x2 - 194)) - | (1ULL << (azslParser::Uint4x3 - 194)) - | (1ULL << (azslParser::Uint4x4 - 194)) - | (1ULL << (azslParser::Dword - 194)) - | (1ULL << (azslParser::Dword1 - 194)) - | (1ULL << (azslParser::Dword2 - 194)) - | (1ULL << (azslParser::Dword3 - 194)) - | (1ULL << (azslParser::Dword4 - 194)) - | (1ULL << (azslParser::Dword1x1 - 194)) - | (1ULL << (azslParser::Dword1x2 - 194)) - | (1ULL << (azslParser::Dword1x3 - 194)) - | (1ULL << (azslParser::Dword1x4 - 194)) - | (1ULL << (azslParser::Dword2x1 - 194)) - | (1ULL << (azslParser::Dword2x2 - 194)) - | (1ULL << (azslParser::Dword2x3 - 194)) - | (1ULL << (azslParser::Dword2x4 - 194)) - | (1ULL << (azslParser::Dword3x1 - 194)) - | (1ULL << (azslParser::Dword3x2 - 194)) - | (1ULL << (azslParser::Dword3x3 - 194)) - | (1ULL << (azslParser::Dword3x4 - 194)) - | (1ULL << (azslParser::Dword4x1 - 194)) - | (1ULL << (azslParser::Dword4x2 - 194)) - | (1ULL << (azslParser::Dword4x3 - 194)) - | (1ULL << (azslParser::Dword4x4 - 194)) - | (1ULL << (azslParser::Vector - 194)) - | (1ULL << (azslParser::Volatile - 194)) - | (1ULL << (azslParser::StateObjectConfig - 194)) - | (1ULL << (azslParser::LocalRootSignature - 194)) - | (1ULL << (azslParser::GlobalRootSignature - 194)) - | (1ULL << (azslParser::SubobjectToExportsAssociation - 194)) - | (1ULL << (azslParser::RaytracingShaderConfig - 194)))) != 0) || ((((_la - 258) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 258)) & ((1ULL << (azslParser::RaytracingPipelineConfig - 258)) - | (1ULL << (azslParser::RaytracingPipelineConfig1 - 258)) - | (1ULL << (azslParser::TriangleHitGroup - 258)) - | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 258)) - | (1ULL << (azslParser::LeftParen - 258)) - | (1ULL << (azslParser::LeftBracket - 258)) - | (1ULL << (azslParser::LeftDoubleBracket - 258)) - | (1ULL << (azslParser::Plus - 258)) - | (1ULL << (azslParser::PlusPlus - 258)) - | (1ULL << (azslParser::Minus - 258)) - | (1ULL << (azslParser::MinusMinus - 258)))) != 0) || ((((_la - 322) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 322)) & ((1ULL << (azslParser::Not - 322)) - | (1ULL << (azslParser::Tilde - 322)) - | (1ULL << (azslParser::ColonColon - 322)) - | (1ULL << (azslParser::True - 322)) - | (1ULL << (azslParser::False - 322)) - | (1ULL << (azslParser::KW_Typeof - 322)) - | (1ULL << (azslParser::Identifier - 322)) - | (1ULL << (azslParser::IntegerLiteral - 322)) - | (1ULL << (azslParser::FloatLiteral - 322)) - | (1ULL << (azslParser::StringLiteral - 322)))) != 0)) { - setState(636); + | (1ULL << azslParser::Enum))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (azslParser::Extern - 64)) + | (1ULL << (azslParser::Float - 64)) + | (1ULL << (azslParser::Float1 - 64)) + | (1ULL << (azslParser::Float2 - 64)) + | (1ULL << (azslParser::Float3 - 64)) + | (1ULL << (azslParser::Float4 - 64)) + | (1ULL << (azslParser::Float1x1 - 64)) + | (1ULL << (azslParser::Float1x2 - 64)) + | (1ULL << (azslParser::Float1x3 - 64)) + | (1ULL << (azslParser::Float1x4 - 64)) + | (1ULL << (azslParser::Float2x1 - 64)) + | (1ULL << (azslParser::Float2x2 - 64)) + | (1ULL << (azslParser::Float2x3 - 64)) + | (1ULL << (azslParser::Float2x4 - 64)) + | (1ULL << (azslParser::Float3x1 - 64)) + | (1ULL << (azslParser::Float3x2 - 64)) + | (1ULL << (azslParser::Float3x3 - 64)) + | (1ULL << (azslParser::Float3x4 - 64)) + | (1ULL << (azslParser::Float4x1 - 64)) + | (1ULL << (azslParser::Float4x2 - 64)) + | (1ULL << (azslParser::Float4x3 - 64)) + | (1ULL << (azslParser::Float4x4 - 64)) + | (1ULL << (azslParser::Groupshared - 64)) + | (1ULL << (azslParser::Globallycoherent - 64)) + | (1ULL << (azslParser::Half - 64)) + | (1ULL << (azslParser::Half1 - 64)) + | (1ULL << (azslParser::Half2 - 64)) + | (1ULL << (azslParser::Half3 - 64)) + | (1ULL << (azslParser::Half4 - 64)) + | (1ULL << (azslParser::Half1x1 - 64)) + | (1ULL << (azslParser::Half1x2 - 64)) + | (1ULL << (azslParser::Half1x3 - 64)) + | (1ULL << (azslParser::Half1x4 - 64)) + | (1ULL << (azslParser::Half2x1 - 64)) + | (1ULL << (azslParser::Half2x2 - 64)) + | (1ULL << (azslParser::Half2x3 - 64)) + | (1ULL << (azslParser::Half2x4 - 64)) + | (1ULL << (azslParser::Half3x1 - 64)) + | (1ULL << (azslParser::Half3x2 - 64)) + | (1ULL << (azslParser::Half3x3 - 64)) + | (1ULL << (azslParser::Half3x4 - 64)) + | (1ULL << (azslParser::Half4x1 - 64)) + | (1ULL << (azslParser::Half4x2 - 64)) + | (1ULL << (azslParser::Half4x3 - 64)) + | (1ULL << (azslParser::Half4x4 - 64)) + | (1ULL << (azslParser::In - 64)) + | (1ULL << (azslParser::Inline - 64)) + | (1ULL << (azslParser::Rootconstant - 64)) + | (1ULL << (azslParser::Inout - 64)) + | (1ULL << (azslParser::InputPatch - 64)) + | (1ULL << (azslParser::Int - 64)) + | (1ULL << (azslParser::Int16_t - 64)) + | (1ULL << (azslParser::Int32_t - 64)) + | (1ULL << (azslParser::Int64_t - 64)) + | (1ULL << (azslParser::Int1 - 64)) + | (1ULL << (azslParser::Int2 - 64)) + | (1ULL << (azslParser::Int3 - 64)) + | (1ULL << (azslParser::Int4 - 64)) + | (1ULL << (azslParser::Int1x1 - 64)))) != 0) || ((((_la - 128) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 128)) & ((1ULL << (azslParser::Int1x2 - 128)) + | (1ULL << (azslParser::Int1x3 - 128)) + | (1ULL << (azslParser::Int1x4 - 128)) + | (1ULL << (azslParser::Int2x1 - 128)) + | (1ULL << (azslParser::Int2x2 - 128)) + | (1ULL << (azslParser::Int2x3 - 128)) + | (1ULL << (azslParser::Int2x4 - 128)) + | (1ULL << (azslParser::Int3x1 - 128)) + | (1ULL << (azslParser::Int3x2 - 128)) + | (1ULL << (azslParser::Int3x3 - 128)) + | (1ULL << (azslParser::Int3x4 - 128)) + | (1ULL << (azslParser::Int4x1 - 128)) + | (1ULL << (azslParser::Int4x2 - 128)) + | (1ULL << (azslParser::Int4x3 - 128)) + | (1ULL << (azslParser::Int4x4 - 128)) + | (1ULL << (azslParser::Interface - 128)) + | (1ULL << (azslParser::Line_ - 128)) + | (1ULL << (azslParser::LineAdj - 128)) + | (1ULL << (azslParser::Linear - 128)) + | (1ULL << (azslParser::LineStream - 128)) + | (1ULL << (azslParser::Matrix - 128)) + | (1ULL << (azslParser::Nointerpolation - 128)) + | (1ULL << (azslParser::Noperspective - 128)) + | (1ULL << (azslParser::Option - 128)) + | (1ULL << (azslParser::Out - 128)) + | (1ULL << (azslParser::OutputPatch - 128)) + | (1ULL << (azslParser::Point - 128)) + | (1ULL << (azslParser::PointStream - 128)) + | (1ULL << (azslParser::Precise - 128)) + | (1ULL << (azslParser::RasterizerOrderedBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture3D - 128)) + | (1ULL << (azslParser::RayDesc - 128)) + | (1ULL << (azslParser::RaytracingAccelerationStructure - 128)) + | (1ULL << (azslParser::RowMajor - 128)) + | (1ULL << (azslParser::RWBuffer - 128)) + | (1ULL << (azslParser::RWByteAddressBuffer - 128)) + | (1ULL << (azslParser::RWStructuredBuffer - 128)) + | (1ULL << (azslParser::RWTexture1D - 128)) + | (1ULL << (azslParser::RWTexture1DArray - 128)) + | (1ULL << (azslParser::RWTexture2D - 128)) + | (1ULL << (azslParser::RWTexture2DArray - 128)) + | (1ULL << (azslParser::RWTexture3D - 128)) + | (1ULL << (azslParser::Sample - 128)) + | (1ULL << (azslParser::Sampler - 128)) + | (1ULL << (azslParser::SamplerCapitalS - 128)) + | (1ULL << (azslParser::SamplerComparisonState - 128)) + | (1ULL << (azslParser::SamplerStateCamel - 128)) + | (1ULL << (azslParser::SamplerState - 128)) + | (1ULL << (azslParser::Shared - 128)) + | (1ULL << (azslParser::SNorm - 128)) + | (1ULL << (azslParser::Static - 128)) + | (1ULL << (azslParser::Struct - 128)))) != 0) || ((((_la - 192) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 192)) & ((1ULL << (azslParser::StructuredBuffer - 192)) + | (1ULL << (azslParser::SubpassInput - 192)) + | (1ULL << (azslParser::SubpassInputMS - 192)) + | (1ULL << (azslParser::Texture1D - 192)) + | (1ULL << (azslParser::Texture1DArray - 192)) + | (1ULL << (azslParser::Texture2D - 192)) + | (1ULL << (azslParser::Texture2DArray - 192)) + | (1ULL << (azslParser::Texture2DMS - 192)) + | (1ULL << (azslParser::Texture2DMSArray - 192)) + | (1ULL << (azslParser::Texture3D - 192)) + | (1ULL << (azslParser::TextureCube - 192)) + | (1ULL << (azslParser::TextureCubeArray - 192)) + | (1ULL << (azslParser::Triangle - 192)) + | (1ULL << (azslParser::TriangleAdj - 192)) + | (1ULL << (azslParser::TriangleStream - 192)) + | (1ULL << (azslParser::Uniform - 192)) + | (1ULL << (azslParser::Uint - 192)) + | (1ULL << (azslParser::Uint1 - 192)) + | (1ULL << (azslParser::Uint2 - 192)) + | (1ULL << (azslParser::Uint3 - 192)) + | (1ULL << (azslParser::Uint4 - 192)) + | (1ULL << (azslParser::Uint1x1 - 192)) + | (1ULL << (azslParser::Uint1x2 - 192)) + | (1ULL << (azslParser::Uint1x3 - 192)) + | (1ULL << (azslParser::Uint1x4 - 192)) + | (1ULL << (azslParser::Uint2x1 - 192)) + | (1ULL << (azslParser::Uint2x2 - 192)) + | (1ULL << (azslParser::Uint2x3 - 192)) + | (1ULL << (azslParser::Uint2x4 - 192)) + | (1ULL << (azslParser::Uint3x1 - 192)) + | (1ULL << (azslParser::Uint3x2 - 192)) + | (1ULL << (azslParser::Uint3x3 - 192)) + | (1ULL << (azslParser::Uint3x4 - 192)) + | (1ULL << (azslParser::Uint4x1 - 192)) + | (1ULL << (azslParser::Uint4x2 - 192)) + | (1ULL << (azslParser::Uint4x3 - 192)) + | (1ULL << (azslParser::Uint4x4 - 192)) + | (1ULL << (azslParser::Uint16_t - 192)) + | (1ULL << (azslParser::Uint32_t - 192)) + | (1ULL << (azslParser::Uint64_t - 192)) + | (1ULL << (azslParser::UNorm - 192)) + | (1ULL << (azslParser::Unsigned - 192)) + | (1ULL << (azslParser::Dword - 192)) + | (1ULL << (azslParser::Dword1 - 192)) + | (1ULL << (azslParser::Dword2 - 192)) + | (1ULL << (azslParser::Dword3 - 192)) + | (1ULL << (azslParser::Dword4 - 192)) + | (1ULL << (azslParser::Dword1x1 - 192)) + | (1ULL << (azslParser::Dword1x2 - 192)) + | (1ULL << (azslParser::Dword1x3 - 192)) + | (1ULL << (azslParser::Dword1x4 - 192)) + | (1ULL << (azslParser::Dword2x1 - 192)) + | (1ULL << (azslParser::Dword2x2 - 192)) + | (1ULL << (azslParser::Dword2x3 - 192)) + | (1ULL << (azslParser::Dword2x4 - 192)) + | (1ULL << (azslParser::Dword3x1 - 192)) + | (1ULL << (azslParser::Dword3x2 - 192)) + | (1ULL << (azslParser::Dword3x3 - 192)) + | (1ULL << (azslParser::Dword3x4 - 192)) + | (1ULL << (azslParser::Dword4x1 - 192)) + | (1ULL << (azslParser::Dword4x2 - 192)) + | (1ULL << (azslParser::Dword4x3 - 192)))) != 0) || ((((_la - 256) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 256)) & ((1ULL << (azslParser::Dword4x4 - 256)) + | (1ULL << (azslParser::Vector - 256)) + | (1ULL << (azslParser::Volatile - 256)) + | (1ULL << (azslParser::Void - 256)) + | (1ULL << (azslParser::StateObjectConfig - 256)) + | (1ULL << (azslParser::LocalRootSignature - 256)) + | (1ULL << (azslParser::GlobalRootSignature - 256)) + | (1ULL << (azslParser::SubobjectToExportsAssociation - 256)) + | (1ULL << (azslParser::RaytracingShaderConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig1 - 256)) + | (1ULL << (azslParser::TriangleHitGroup - 256)) + | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 256)) + | (1ULL << (azslParser::LeftParen - 256)) + | (1ULL << (azslParser::LeftBracket - 256)) + | (1ULL << (azslParser::LeftDoubleBracket - 256)) + | (1ULL << (azslParser::Plus - 256)) + | (1ULL << (azslParser::PlusPlus - 256)))) != 0) || ((((_la - 320) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 320)) & ((1ULL << (azslParser::Minus - 320)) + | (1ULL << (azslParser::MinusMinus - 320)) + | (1ULL << (azslParser::Not - 320)) + | (1ULL << (azslParser::Tilde - 320)) + | (1ULL << (azslParser::ColonColon - 320)) + | (1ULL << (azslParser::True - 320)) + | (1ULL << (azslParser::False - 320)) + | (1ULL << (azslParser::KW_Typeof - 320)) + | (1ULL << (azslParser::Identifier - 320)) + | (1ULL << (azslParser::IntegerLiteral - 320)) + | (1ULL << (azslParser::FloatLiteral - 320)) + | (1ULL << (azslParser::StringLiteral - 320)))) != 0)) { + setState(633); forInitializer(); } - setState(639); + setState(636); match(azslParser::Semi); - setState(641); + setState(638); _errHandler->sync(this); _la = _input->LA(1); @@ -6258,139 +6054,140 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { | (1ULL << azslParser::Double4x1) | (1ULL << azslParser::Double4x2) | (1ULL << azslParser::Double4x3) - | (1ULL << azslParser::Double4x4))) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & ((1ULL << (azslParser::Float - 66)) - | (1ULL << (azslParser::Float1 - 66)) - | (1ULL << (azslParser::Float2 - 66)) - | (1ULL << (azslParser::Float3 - 66)) - | (1ULL << (azslParser::Float4 - 66)) - | (1ULL << (azslParser::Float1x1 - 66)) - | (1ULL << (azslParser::Float1x2 - 66)) - | (1ULL << (azslParser::Float1x3 - 66)) - | (1ULL << (azslParser::Float1x4 - 66)) - | (1ULL << (azslParser::Float2x1 - 66)) - | (1ULL << (azslParser::Float2x2 - 66)) - | (1ULL << (azslParser::Float2x3 - 66)) - | (1ULL << (azslParser::Float2x4 - 66)) - | (1ULL << (azslParser::Float3x1 - 66)) - | (1ULL << (azslParser::Float3x2 - 66)) - | (1ULL << (azslParser::Float3x3 - 66)) - | (1ULL << (azslParser::Float3x4 - 66)) - | (1ULL << (azslParser::Float4x1 - 66)) - | (1ULL << (azslParser::Float4x2 - 66)) - | (1ULL << (azslParser::Float4x3 - 66)) - | (1ULL << (azslParser::Float4x4 - 66)) - | (1ULL << (azslParser::Half - 66)) - | (1ULL << (azslParser::Half1 - 66)) - | (1ULL << (azslParser::Half2 - 66)) - | (1ULL << (azslParser::Half3 - 66)) - | (1ULL << (azslParser::Half4 - 66)) - | (1ULL << (azslParser::Half1x1 - 66)) - | (1ULL << (azslParser::Half1x2 - 66)) - | (1ULL << (azslParser::Half1x3 - 66)) - | (1ULL << (azslParser::Half1x4 - 66)) - | (1ULL << (azslParser::Half2x1 - 66)) - | (1ULL << (azslParser::Half2x2 - 66)) - | (1ULL << (azslParser::Half2x3 - 66)) - | (1ULL << (azslParser::Half2x4 - 66)) - | (1ULL << (azslParser::Half3x1 - 66)) - | (1ULL << (azslParser::Half3x2 - 66)) - | (1ULL << (azslParser::Half3x3 - 66)) - | (1ULL << (azslParser::Half3x4 - 66)) - | (1ULL << (azslParser::Half4x1 - 66)) - | (1ULL << (azslParser::Half4x2 - 66)) - | (1ULL << (azslParser::Half4x3 - 66)) - | (1ULL << (azslParser::Half4x4 - 66)) - | (1ULL << (azslParser::Int - 66)) - | (1ULL << (azslParser::Int32_t - 66)) - | (1ULL << (azslParser::Int64_t - 66)) - | (1ULL << (azslParser::Int1 - 66)) - | (1ULL << (azslParser::Int2 - 66)) - | (1ULL << (azslParser::Int3 - 66)) - | (1ULL << (azslParser::Int4 - 66)) - | (1ULL << (azslParser::Int1x1 - 66)) - | (1ULL << (azslParser::Int1x2 - 66)) - | (1ULL << (azslParser::Int1x3 - 66)) - | (1ULL << (azslParser::Int1x4 - 66)) - | (1ULL << (azslParser::Int2x1 - 66)) - | (1ULL << (azslParser::Int2x2 - 66)))) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & ((1ULL << (azslParser::Int2x3 - 130)) - | (1ULL << (azslParser::Int2x4 - 130)) - | (1ULL << (azslParser::Int3x1 - 130)) - | (1ULL << (azslParser::Int3x2 - 130)) - | (1ULL << (azslParser::Int3x3 - 130)) - | (1ULL << (azslParser::Int3x4 - 130)) - | (1ULL << (azslParser::Int4x1 - 130)) - | (1ULL << (azslParser::Int4x2 - 130)) - | (1ULL << (azslParser::Int4x3 - 130)) - | (1ULL << (azslParser::Int4x4 - 130)) - | (1ULL << (azslParser::Matrix - 130)))) != 0) || ((((_la - 204) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 204)) & ((1ULL << (azslParser::Uint - 204)) - | (1ULL << (azslParser::Uint32_t - 204)) - | (1ULL << (azslParser::Uint64_t - 204)) - | (1ULL << (azslParser::UnsignedInt - 204)) - | (1ULL << (azslParser::Uint1 - 204)) - | (1ULL << (azslParser::Uint2 - 204)) - | (1ULL << (azslParser::Uint3 - 204)) - | (1ULL << (azslParser::Uint4 - 204)) - | (1ULL << (azslParser::Uint1x1 - 204)) - | (1ULL << (azslParser::Uint1x2 - 204)) - | (1ULL << (azslParser::Uint1x3 - 204)) - | (1ULL << (azslParser::Uint1x4 - 204)) - | (1ULL << (azslParser::Uint2x1 - 204)) - | (1ULL << (azslParser::Uint2x2 - 204)) - | (1ULL << (azslParser::Uint2x3 - 204)) - | (1ULL << (azslParser::Uint2x4 - 204)) - | (1ULL << (azslParser::Uint3x1 - 204)) - | (1ULL << (azslParser::Uint3x2 - 204)) - | (1ULL << (azslParser::Uint3x3 - 204)) - | (1ULL << (azslParser::Uint3x4 - 204)) - | (1ULL << (azslParser::Uint4x1 - 204)) - | (1ULL << (azslParser::Uint4x2 - 204)) - | (1ULL << (azslParser::Uint4x3 - 204)) - | (1ULL << (azslParser::Uint4x4 - 204)) - | (1ULL << (azslParser::Dword - 204)) - | (1ULL << (azslParser::Dword1 - 204)) - | (1ULL << (azslParser::Dword2 - 204)) - | (1ULL << (azslParser::Dword3 - 204)) - | (1ULL << (azslParser::Dword4 - 204)) - | (1ULL << (azslParser::Dword1x1 - 204)) - | (1ULL << (azslParser::Dword1x2 - 204)) - | (1ULL << (azslParser::Dword1x3 - 204)) - | (1ULL << (azslParser::Dword1x4 - 204)) - | (1ULL << (azslParser::Dword2x1 - 204)) - | (1ULL << (azslParser::Dword2x2 - 204)) - | (1ULL << (azslParser::Dword2x3 - 204)) - | (1ULL << (azslParser::Dword2x4 - 204)) - | (1ULL << (azslParser::Dword3x1 - 204)) - | (1ULL << (azslParser::Dword3x2 - 204)) - | (1ULL << (azslParser::Dword3x3 - 204)) - | (1ULL << (azslParser::Dword3x4 - 204)) - | (1ULL << (azslParser::Dword4x1 - 204)) - | (1ULL << (azslParser::Dword4x2 - 204)) - | (1ULL << (azslParser::Dword4x3 - 204)) - | (1ULL << (azslParser::Dword4x4 - 204)) - | (1ULL << (azslParser::Vector - 204)))) != 0) || ((((_la - 297) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 297)) & ((1ULL << (azslParser::LeftParen - 297)) - | (1ULL << (azslParser::Plus - 297)) - | (1ULL << (azslParser::PlusPlus - 297)) - | (1ULL << (azslParser::Minus - 297)) - | (1ULL << (azslParser::MinusMinus - 297)) - | (1ULL << (azslParser::Not - 297)) - | (1ULL << (azslParser::Tilde - 297)) - | (1ULL << (azslParser::ColonColon - 297)) - | (1ULL << (azslParser::True - 297)) - | (1ULL << (azslParser::False - 297)))) != 0) || ((((_la - 361) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 361)) & ((1ULL << (azslParser::Identifier - 361)) - | (1ULL << (azslParser::IntegerLiteral - 361)) - | (1ULL << (azslParser::FloatLiteral - 361)) - | (1ULL << (azslParser::StringLiteral - 361)))) != 0)) { - setState(640); + | (1ULL << azslParser::Double4x4))) != 0) || ((((_la - 67) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 67)) & ((1ULL << (azslParser::Float - 67)) + | (1ULL << (azslParser::Float1 - 67)) + | (1ULL << (azslParser::Float2 - 67)) + | (1ULL << (azslParser::Float3 - 67)) + | (1ULL << (azslParser::Float4 - 67)) + | (1ULL << (azslParser::Float1x1 - 67)) + | (1ULL << (azslParser::Float1x2 - 67)) + | (1ULL << (azslParser::Float1x3 - 67)) + | (1ULL << (azslParser::Float1x4 - 67)) + | (1ULL << (azslParser::Float2x1 - 67)) + | (1ULL << (azslParser::Float2x2 - 67)) + | (1ULL << (azslParser::Float2x3 - 67)) + | (1ULL << (azslParser::Float2x4 - 67)) + | (1ULL << (azslParser::Float3x1 - 67)) + | (1ULL << (azslParser::Float3x2 - 67)) + | (1ULL << (azslParser::Float3x3 - 67)) + | (1ULL << (azslParser::Float3x4 - 67)) + | (1ULL << (azslParser::Float4x1 - 67)) + | (1ULL << (azslParser::Float4x2 - 67)) + | (1ULL << (azslParser::Float4x3 - 67)) + | (1ULL << (azslParser::Float4x4 - 67)) + | (1ULL << (azslParser::Half - 67)) + | (1ULL << (azslParser::Half1 - 67)) + | (1ULL << (azslParser::Half2 - 67)) + | (1ULL << (azslParser::Half3 - 67)) + | (1ULL << (azslParser::Half4 - 67)) + | (1ULL << (azslParser::Half1x1 - 67)) + | (1ULL << (azslParser::Half1x2 - 67)) + | (1ULL << (azslParser::Half1x3 - 67)) + | (1ULL << (azslParser::Half1x4 - 67)) + | (1ULL << (azslParser::Half2x1 - 67)) + | (1ULL << (azslParser::Half2x2 - 67)) + | (1ULL << (azslParser::Half2x3 - 67)) + | (1ULL << (azslParser::Half2x4 - 67)) + | (1ULL << (azslParser::Half3x1 - 67)) + | (1ULL << (azslParser::Half3x2 - 67)) + | (1ULL << (azslParser::Half3x3 - 67)) + | (1ULL << (azslParser::Half3x4 - 67)) + | (1ULL << (azslParser::Half4x1 - 67)) + | (1ULL << (azslParser::Half4x2 - 67)) + | (1ULL << (azslParser::Half4x3 - 67)) + | (1ULL << (azslParser::Half4x4 - 67)) + | (1ULL << (azslParser::Int - 67)) + | (1ULL << (azslParser::Int16_t - 67)) + | (1ULL << (azslParser::Int32_t - 67)) + | (1ULL << (azslParser::Int64_t - 67)) + | (1ULL << (azslParser::Int1 - 67)) + | (1ULL << (azslParser::Int2 - 67)) + | (1ULL << (azslParser::Int3 - 67)) + | (1ULL << (azslParser::Int4 - 67)) + | (1ULL << (azslParser::Int1x1 - 67)) + | (1ULL << (azslParser::Int1x2 - 67)) + | (1ULL << (azslParser::Int1x3 - 67)) + | (1ULL << (azslParser::Int1x4 - 67)))) != 0) || ((((_la - 131) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 131)) & ((1ULL << (azslParser::Int2x1 - 131)) + | (1ULL << (azslParser::Int2x2 - 131)) + | (1ULL << (azslParser::Int2x3 - 131)) + | (1ULL << (azslParser::Int2x4 - 131)) + | (1ULL << (azslParser::Int3x1 - 131)) + | (1ULL << (azslParser::Int3x2 - 131)) + | (1ULL << (azslParser::Int3x3 - 131)) + | (1ULL << (azslParser::Int3x4 - 131)) + | (1ULL << (azslParser::Int4x1 - 131)) + | (1ULL << (azslParser::Int4x2 - 131)) + | (1ULL << (azslParser::Int4x3 - 131)) + | (1ULL << (azslParser::Int4x4 - 131)) + | (1ULL << (azslParser::Matrix - 131)))) != 0) || ((((_la - 210) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 210)) & ((1ULL << (azslParser::Uint - 210)) + | (1ULL << (azslParser::Uint1 - 210)) + | (1ULL << (azslParser::Uint2 - 210)) + | (1ULL << (azslParser::Uint3 - 210)) + | (1ULL << (azslParser::Uint4 - 210)) + | (1ULL << (azslParser::Uint1x1 - 210)) + | (1ULL << (azslParser::Uint1x2 - 210)) + | (1ULL << (azslParser::Uint1x3 - 210)) + | (1ULL << (azslParser::Uint1x4 - 210)) + | (1ULL << (azslParser::Uint2x1 - 210)) + | (1ULL << (azslParser::Uint2x2 - 210)) + | (1ULL << (azslParser::Uint2x3 - 210)) + | (1ULL << (azslParser::Uint2x4 - 210)) + | (1ULL << (azslParser::Uint3x1 - 210)) + | (1ULL << (azslParser::Uint3x2 - 210)) + | (1ULL << (azslParser::Uint3x3 - 210)) + | (1ULL << (azslParser::Uint3x4 - 210)) + | (1ULL << (azslParser::Uint4x1 - 210)) + | (1ULL << (azslParser::Uint4x2 - 210)) + | (1ULL << (azslParser::Uint4x3 - 210)) + | (1ULL << (azslParser::Uint4x4 - 210)) + | (1ULL << (azslParser::Uint16_t - 210)) + | (1ULL << (azslParser::Uint32_t - 210)) + | (1ULL << (azslParser::Uint64_t - 210)) + | (1ULL << (azslParser::Dword - 210)) + | (1ULL << (azslParser::Dword1 - 210)) + | (1ULL << (azslParser::Dword2 - 210)) + | (1ULL << (azslParser::Dword3 - 210)) + | (1ULL << (azslParser::Dword4 - 210)) + | (1ULL << (azslParser::Dword1x1 - 210)) + | (1ULL << (azslParser::Dword1x2 - 210)) + | (1ULL << (azslParser::Dword1x3 - 210)) + | (1ULL << (azslParser::Dword1x4 - 210)) + | (1ULL << (azslParser::Dword2x1 - 210)) + | (1ULL << (azslParser::Dword2x2 - 210)) + | (1ULL << (azslParser::Dword2x3 - 210)) + | (1ULL << (azslParser::Dword2x4 - 210)) + | (1ULL << (azslParser::Dword3x1 - 210)) + | (1ULL << (azslParser::Dword3x2 - 210)) + | (1ULL << (azslParser::Dword3x3 - 210)) + | (1ULL << (azslParser::Dword3x4 - 210)) + | (1ULL << (azslParser::Dword4x1 - 210)) + | (1ULL << (azslParser::Dword4x2 - 210)) + | (1ULL << (azslParser::Dword4x3 - 210)) + | (1ULL << (azslParser::Dword4x4 - 210)) + | (1ULL << (azslParser::Vector - 210)))) != 0) || ((((_la - 305) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 305)) & ((1ULL << (azslParser::LeftParen - 305)) + | (1ULL << (azslParser::Plus - 305)) + | (1ULL << (azslParser::PlusPlus - 305)) + | (1ULL << (azslParser::Minus - 305)) + | (1ULL << (azslParser::MinusMinus - 305)) + | (1ULL << (azslParser::Not - 305)) + | (1ULL << (azslParser::Tilde - 305)) + | (1ULL << (azslParser::ColonColon - 305)) + | (1ULL << (azslParser::True - 305)) + | (1ULL << (azslParser::False - 305)))) != 0) || ((((_la - 369) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 369)) & ((1ULL << (azslParser::Identifier - 369)) + | (1ULL << (azslParser::IntegerLiteral - 369)) + | (1ULL << (azslParser::FloatLiteral - 369)) + | (1ULL << (azslParser::StringLiteral - 369)))) != 0)) { + setState(637); antlrcpp::downCast(_localctx)->Condition = expressionExt(0); } - setState(643); + setState(640); match(azslParser::Semi); - setState(645); + setState(642); _errHandler->sync(this); _la = _input->LA(1); @@ -6436,139 +6233,140 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { | (1ULL << azslParser::Double4x1) | (1ULL << azslParser::Double4x2) | (1ULL << azslParser::Double4x3) - | (1ULL << azslParser::Double4x4))) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & ((1ULL << (azslParser::Float - 66)) - | (1ULL << (azslParser::Float1 - 66)) - | (1ULL << (azslParser::Float2 - 66)) - | (1ULL << (azslParser::Float3 - 66)) - | (1ULL << (azslParser::Float4 - 66)) - | (1ULL << (azslParser::Float1x1 - 66)) - | (1ULL << (azslParser::Float1x2 - 66)) - | (1ULL << (azslParser::Float1x3 - 66)) - | (1ULL << (azslParser::Float1x4 - 66)) - | (1ULL << (azslParser::Float2x1 - 66)) - | (1ULL << (azslParser::Float2x2 - 66)) - | (1ULL << (azslParser::Float2x3 - 66)) - | (1ULL << (azslParser::Float2x4 - 66)) - | (1ULL << (azslParser::Float3x1 - 66)) - | (1ULL << (azslParser::Float3x2 - 66)) - | (1ULL << (azslParser::Float3x3 - 66)) - | (1ULL << (azslParser::Float3x4 - 66)) - | (1ULL << (azslParser::Float4x1 - 66)) - | (1ULL << (azslParser::Float4x2 - 66)) - | (1ULL << (azslParser::Float4x3 - 66)) - | (1ULL << (azslParser::Float4x4 - 66)) - | (1ULL << (azslParser::Half - 66)) - | (1ULL << (azslParser::Half1 - 66)) - | (1ULL << (azslParser::Half2 - 66)) - | (1ULL << (azslParser::Half3 - 66)) - | (1ULL << (azslParser::Half4 - 66)) - | (1ULL << (azslParser::Half1x1 - 66)) - | (1ULL << (azslParser::Half1x2 - 66)) - | (1ULL << (azslParser::Half1x3 - 66)) - | (1ULL << (azslParser::Half1x4 - 66)) - | (1ULL << (azslParser::Half2x1 - 66)) - | (1ULL << (azslParser::Half2x2 - 66)) - | (1ULL << (azslParser::Half2x3 - 66)) - | (1ULL << (azslParser::Half2x4 - 66)) - | (1ULL << (azslParser::Half3x1 - 66)) - | (1ULL << (azslParser::Half3x2 - 66)) - | (1ULL << (azslParser::Half3x3 - 66)) - | (1ULL << (azslParser::Half3x4 - 66)) - | (1ULL << (azslParser::Half4x1 - 66)) - | (1ULL << (azslParser::Half4x2 - 66)) - | (1ULL << (azslParser::Half4x3 - 66)) - | (1ULL << (azslParser::Half4x4 - 66)) - | (1ULL << (azslParser::Int - 66)) - | (1ULL << (azslParser::Int32_t - 66)) - | (1ULL << (azslParser::Int64_t - 66)) - | (1ULL << (azslParser::Int1 - 66)) - | (1ULL << (azslParser::Int2 - 66)) - | (1ULL << (azslParser::Int3 - 66)) - | (1ULL << (azslParser::Int4 - 66)) - | (1ULL << (azslParser::Int1x1 - 66)) - | (1ULL << (azslParser::Int1x2 - 66)) - | (1ULL << (azslParser::Int1x3 - 66)) - | (1ULL << (azslParser::Int1x4 - 66)) - | (1ULL << (azslParser::Int2x1 - 66)) - | (1ULL << (azslParser::Int2x2 - 66)))) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & ((1ULL << (azslParser::Int2x3 - 130)) - | (1ULL << (azslParser::Int2x4 - 130)) - | (1ULL << (azslParser::Int3x1 - 130)) - | (1ULL << (azslParser::Int3x2 - 130)) - | (1ULL << (azslParser::Int3x3 - 130)) - | (1ULL << (azslParser::Int3x4 - 130)) - | (1ULL << (azslParser::Int4x1 - 130)) - | (1ULL << (azslParser::Int4x2 - 130)) - | (1ULL << (azslParser::Int4x3 - 130)) - | (1ULL << (azslParser::Int4x4 - 130)) - | (1ULL << (azslParser::Matrix - 130)))) != 0) || ((((_la - 204) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 204)) & ((1ULL << (azslParser::Uint - 204)) - | (1ULL << (azslParser::Uint32_t - 204)) - | (1ULL << (azslParser::Uint64_t - 204)) - | (1ULL << (azslParser::UnsignedInt - 204)) - | (1ULL << (azslParser::Uint1 - 204)) - | (1ULL << (azslParser::Uint2 - 204)) - | (1ULL << (azslParser::Uint3 - 204)) - | (1ULL << (azslParser::Uint4 - 204)) - | (1ULL << (azslParser::Uint1x1 - 204)) - | (1ULL << (azslParser::Uint1x2 - 204)) - | (1ULL << (azslParser::Uint1x3 - 204)) - | (1ULL << (azslParser::Uint1x4 - 204)) - | (1ULL << (azslParser::Uint2x1 - 204)) - | (1ULL << (azslParser::Uint2x2 - 204)) - | (1ULL << (azslParser::Uint2x3 - 204)) - | (1ULL << (azslParser::Uint2x4 - 204)) - | (1ULL << (azslParser::Uint3x1 - 204)) - | (1ULL << (azslParser::Uint3x2 - 204)) - | (1ULL << (azslParser::Uint3x3 - 204)) - | (1ULL << (azslParser::Uint3x4 - 204)) - | (1ULL << (azslParser::Uint4x1 - 204)) - | (1ULL << (azslParser::Uint4x2 - 204)) - | (1ULL << (azslParser::Uint4x3 - 204)) - | (1ULL << (azslParser::Uint4x4 - 204)) - | (1ULL << (azslParser::Dword - 204)) - | (1ULL << (azslParser::Dword1 - 204)) - | (1ULL << (azslParser::Dword2 - 204)) - | (1ULL << (azslParser::Dword3 - 204)) - | (1ULL << (azslParser::Dword4 - 204)) - | (1ULL << (azslParser::Dword1x1 - 204)) - | (1ULL << (azslParser::Dword1x2 - 204)) - | (1ULL << (azslParser::Dword1x3 - 204)) - | (1ULL << (azslParser::Dword1x4 - 204)) - | (1ULL << (azslParser::Dword2x1 - 204)) - | (1ULL << (azslParser::Dword2x2 - 204)) - | (1ULL << (azslParser::Dword2x3 - 204)) - | (1ULL << (azslParser::Dword2x4 - 204)) - | (1ULL << (azslParser::Dword3x1 - 204)) - | (1ULL << (azslParser::Dword3x2 - 204)) - | (1ULL << (azslParser::Dword3x3 - 204)) - | (1ULL << (azslParser::Dword3x4 - 204)) - | (1ULL << (azslParser::Dword4x1 - 204)) - | (1ULL << (azslParser::Dword4x2 - 204)) - | (1ULL << (azslParser::Dword4x3 - 204)) - | (1ULL << (azslParser::Dword4x4 - 204)) - | (1ULL << (azslParser::Vector - 204)))) != 0) || ((((_la - 297) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 297)) & ((1ULL << (azslParser::LeftParen - 297)) - | (1ULL << (azslParser::Plus - 297)) - | (1ULL << (azslParser::PlusPlus - 297)) - | (1ULL << (azslParser::Minus - 297)) - | (1ULL << (azslParser::MinusMinus - 297)) - | (1ULL << (azslParser::Not - 297)) - | (1ULL << (azslParser::Tilde - 297)) - | (1ULL << (azslParser::ColonColon - 297)) - | (1ULL << (azslParser::True - 297)) - | (1ULL << (azslParser::False - 297)))) != 0) || ((((_la - 361) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 361)) & ((1ULL << (azslParser::Identifier - 361)) - | (1ULL << (azslParser::IntegerLiteral - 361)) - | (1ULL << (azslParser::FloatLiteral - 361)) - | (1ULL << (azslParser::StringLiteral - 361)))) != 0)) { - setState(644); + | (1ULL << azslParser::Double4x4))) != 0) || ((((_la - 67) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 67)) & ((1ULL << (azslParser::Float - 67)) + | (1ULL << (azslParser::Float1 - 67)) + | (1ULL << (azslParser::Float2 - 67)) + | (1ULL << (azslParser::Float3 - 67)) + | (1ULL << (azslParser::Float4 - 67)) + | (1ULL << (azslParser::Float1x1 - 67)) + | (1ULL << (azslParser::Float1x2 - 67)) + | (1ULL << (azslParser::Float1x3 - 67)) + | (1ULL << (azslParser::Float1x4 - 67)) + | (1ULL << (azslParser::Float2x1 - 67)) + | (1ULL << (azslParser::Float2x2 - 67)) + | (1ULL << (azslParser::Float2x3 - 67)) + | (1ULL << (azslParser::Float2x4 - 67)) + | (1ULL << (azslParser::Float3x1 - 67)) + | (1ULL << (azslParser::Float3x2 - 67)) + | (1ULL << (azslParser::Float3x3 - 67)) + | (1ULL << (azslParser::Float3x4 - 67)) + | (1ULL << (azslParser::Float4x1 - 67)) + | (1ULL << (azslParser::Float4x2 - 67)) + | (1ULL << (azslParser::Float4x3 - 67)) + | (1ULL << (azslParser::Float4x4 - 67)) + | (1ULL << (azslParser::Half - 67)) + | (1ULL << (azslParser::Half1 - 67)) + | (1ULL << (azslParser::Half2 - 67)) + | (1ULL << (azslParser::Half3 - 67)) + | (1ULL << (azslParser::Half4 - 67)) + | (1ULL << (azslParser::Half1x1 - 67)) + | (1ULL << (azslParser::Half1x2 - 67)) + | (1ULL << (azslParser::Half1x3 - 67)) + | (1ULL << (azslParser::Half1x4 - 67)) + | (1ULL << (azslParser::Half2x1 - 67)) + | (1ULL << (azslParser::Half2x2 - 67)) + | (1ULL << (azslParser::Half2x3 - 67)) + | (1ULL << (azslParser::Half2x4 - 67)) + | (1ULL << (azslParser::Half3x1 - 67)) + | (1ULL << (azslParser::Half3x2 - 67)) + | (1ULL << (azslParser::Half3x3 - 67)) + | (1ULL << (azslParser::Half3x4 - 67)) + | (1ULL << (azslParser::Half4x1 - 67)) + | (1ULL << (azslParser::Half4x2 - 67)) + | (1ULL << (azslParser::Half4x3 - 67)) + | (1ULL << (azslParser::Half4x4 - 67)) + | (1ULL << (azslParser::Int - 67)) + | (1ULL << (azslParser::Int16_t - 67)) + | (1ULL << (azslParser::Int32_t - 67)) + | (1ULL << (azslParser::Int64_t - 67)) + | (1ULL << (azslParser::Int1 - 67)) + | (1ULL << (azslParser::Int2 - 67)) + | (1ULL << (azslParser::Int3 - 67)) + | (1ULL << (azslParser::Int4 - 67)) + | (1ULL << (azslParser::Int1x1 - 67)) + | (1ULL << (azslParser::Int1x2 - 67)) + | (1ULL << (azslParser::Int1x3 - 67)) + | (1ULL << (azslParser::Int1x4 - 67)))) != 0) || ((((_la - 131) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 131)) & ((1ULL << (azslParser::Int2x1 - 131)) + | (1ULL << (azslParser::Int2x2 - 131)) + | (1ULL << (azslParser::Int2x3 - 131)) + | (1ULL << (azslParser::Int2x4 - 131)) + | (1ULL << (azslParser::Int3x1 - 131)) + | (1ULL << (azslParser::Int3x2 - 131)) + | (1ULL << (azslParser::Int3x3 - 131)) + | (1ULL << (azslParser::Int3x4 - 131)) + | (1ULL << (azslParser::Int4x1 - 131)) + | (1ULL << (azslParser::Int4x2 - 131)) + | (1ULL << (azslParser::Int4x3 - 131)) + | (1ULL << (azslParser::Int4x4 - 131)) + | (1ULL << (azslParser::Matrix - 131)))) != 0) || ((((_la - 210) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 210)) & ((1ULL << (azslParser::Uint - 210)) + | (1ULL << (azslParser::Uint1 - 210)) + | (1ULL << (azslParser::Uint2 - 210)) + | (1ULL << (azslParser::Uint3 - 210)) + | (1ULL << (azslParser::Uint4 - 210)) + | (1ULL << (azslParser::Uint1x1 - 210)) + | (1ULL << (azslParser::Uint1x2 - 210)) + | (1ULL << (azslParser::Uint1x3 - 210)) + | (1ULL << (azslParser::Uint1x4 - 210)) + | (1ULL << (azslParser::Uint2x1 - 210)) + | (1ULL << (azslParser::Uint2x2 - 210)) + | (1ULL << (azslParser::Uint2x3 - 210)) + | (1ULL << (azslParser::Uint2x4 - 210)) + | (1ULL << (azslParser::Uint3x1 - 210)) + | (1ULL << (azslParser::Uint3x2 - 210)) + | (1ULL << (azslParser::Uint3x3 - 210)) + | (1ULL << (azslParser::Uint3x4 - 210)) + | (1ULL << (azslParser::Uint4x1 - 210)) + | (1ULL << (azslParser::Uint4x2 - 210)) + | (1ULL << (azslParser::Uint4x3 - 210)) + | (1ULL << (azslParser::Uint4x4 - 210)) + | (1ULL << (azslParser::Uint16_t - 210)) + | (1ULL << (azslParser::Uint32_t - 210)) + | (1ULL << (azslParser::Uint64_t - 210)) + | (1ULL << (azslParser::Dword - 210)) + | (1ULL << (azslParser::Dword1 - 210)) + | (1ULL << (azslParser::Dword2 - 210)) + | (1ULL << (azslParser::Dword3 - 210)) + | (1ULL << (azslParser::Dword4 - 210)) + | (1ULL << (azslParser::Dword1x1 - 210)) + | (1ULL << (azslParser::Dword1x2 - 210)) + | (1ULL << (azslParser::Dword1x3 - 210)) + | (1ULL << (azslParser::Dword1x4 - 210)) + | (1ULL << (azslParser::Dword2x1 - 210)) + | (1ULL << (azslParser::Dword2x2 - 210)) + | (1ULL << (azslParser::Dword2x3 - 210)) + | (1ULL << (azslParser::Dword2x4 - 210)) + | (1ULL << (azslParser::Dword3x1 - 210)) + | (1ULL << (azslParser::Dword3x2 - 210)) + | (1ULL << (azslParser::Dword3x3 - 210)) + | (1ULL << (azslParser::Dword3x4 - 210)) + | (1ULL << (azslParser::Dword4x1 - 210)) + | (1ULL << (azslParser::Dword4x2 - 210)) + | (1ULL << (azslParser::Dword4x3 - 210)) + | (1ULL << (azslParser::Dword4x4 - 210)) + | (1ULL << (azslParser::Vector - 210)))) != 0) || ((((_la - 305) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 305)) & ((1ULL << (azslParser::LeftParen - 305)) + | (1ULL << (azslParser::Plus - 305)) + | (1ULL << (azslParser::PlusPlus - 305)) + | (1ULL << (azslParser::Minus - 305)) + | (1ULL << (azslParser::MinusMinus - 305)) + | (1ULL << (azslParser::Not - 305)) + | (1ULL << (azslParser::Tilde - 305)) + | (1ULL << (azslParser::ColonColon - 305)) + | (1ULL << (azslParser::True - 305)) + | (1ULL << (azslParser::False - 305)))) != 0) || ((((_la - 369) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 369)) & ((1ULL << (azslParser::Identifier - 369)) + | (1ULL << (azslParser::IntegerLiteral - 369)) + | (1ULL << (azslParser::FloatLiteral - 369)) + | (1ULL << (azslParser::StringLiteral - 369)))) != 0)) { + setState(641); antlrcpp::downCast(_localctx)->iterator = expressionExt(0); } - setState(647); + setState(644); match(azslParser::RightParen); - setState(648); + setState(645); embeddedStatement(); break; } @@ -6576,9 +6374,9 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { case 9: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 9); - setState(649); + setState(646); match(azslParser::Break); - setState(650); + setState(647); match(azslParser::Semi); break; } @@ -6586,9 +6384,9 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { case 10: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 10); - setState(651); + setState(648); match(azslParser::Continue); - setState(652); + setState(649); match(azslParser::Semi); break; } @@ -6596,9 +6394,9 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { case 11: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 11); - setState(653); + setState(650); match(azslParser::Discard); - setState(654); + setState(651); match(azslParser::Semi); break; } @@ -6606,9 +6404,9 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { case 12: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 12); - setState(655); + setState(652); match(azslParser::Return); - setState(657); + setState(654); _errHandler->sync(this); _la = _input->LA(1); @@ -6654,137 +6452,138 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { | (1ULL << azslParser::Double4x1) | (1ULL << azslParser::Double4x2) | (1ULL << azslParser::Double4x3) - | (1ULL << azslParser::Double4x4))) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & ((1ULL << (azslParser::Float - 66)) - | (1ULL << (azslParser::Float1 - 66)) - | (1ULL << (azslParser::Float2 - 66)) - | (1ULL << (azslParser::Float3 - 66)) - | (1ULL << (azslParser::Float4 - 66)) - | (1ULL << (azslParser::Float1x1 - 66)) - | (1ULL << (azslParser::Float1x2 - 66)) - | (1ULL << (azslParser::Float1x3 - 66)) - | (1ULL << (azslParser::Float1x4 - 66)) - | (1ULL << (azslParser::Float2x1 - 66)) - | (1ULL << (azslParser::Float2x2 - 66)) - | (1ULL << (azslParser::Float2x3 - 66)) - | (1ULL << (azslParser::Float2x4 - 66)) - | (1ULL << (azslParser::Float3x1 - 66)) - | (1ULL << (azslParser::Float3x2 - 66)) - | (1ULL << (azslParser::Float3x3 - 66)) - | (1ULL << (azslParser::Float3x4 - 66)) - | (1ULL << (azslParser::Float4x1 - 66)) - | (1ULL << (azslParser::Float4x2 - 66)) - | (1ULL << (azslParser::Float4x3 - 66)) - | (1ULL << (azslParser::Float4x4 - 66)) - | (1ULL << (azslParser::Half - 66)) - | (1ULL << (azslParser::Half1 - 66)) - | (1ULL << (azslParser::Half2 - 66)) - | (1ULL << (azslParser::Half3 - 66)) - | (1ULL << (azslParser::Half4 - 66)) - | (1ULL << (azslParser::Half1x1 - 66)) - | (1ULL << (azslParser::Half1x2 - 66)) - | (1ULL << (azslParser::Half1x3 - 66)) - | (1ULL << (azslParser::Half1x4 - 66)) - | (1ULL << (azslParser::Half2x1 - 66)) - | (1ULL << (azslParser::Half2x2 - 66)) - | (1ULL << (azslParser::Half2x3 - 66)) - | (1ULL << (azslParser::Half2x4 - 66)) - | (1ULL << (azslParser::Half3x1 - 66)) - | (1ULL << (azslParser::Half3x2 - 66)) - | (1ULL << (azslParser::Half3x3 - 66)) - | (1ULL << (azslParser::Half3x4 - 66)) - | (1ULL << (azslParser::Half4x1 - 66)) - | (1ULL << (azslParser::Half4x2 - 66)) - | (1ULL << (azslParser::Half4x3 - 66)) - | (1ULL << (azslParser::Half4x4 - 66)) - | (1ULL << (azslParser::Int - 66)) - | (1ULL << (azslParser::Int32_t - 66)) - | (1ULL << (azslParser::Int64_t - 66)) - | (1ULL << (azslParser::Int1 - 66)) - | (1ULL << (azslParser::Int2 - 66)) - | (1ULL << (azslParser::Int3 - 66)) - | (1ULL << (azslParser::Int4 - 66)) - | (1ULL << (azslParser::Int1x1 - 66)) - | (1ULL << (azslParser::Int1x2 - 66)) - | (1ULL << (azslParser::Int1x3 - 66)) - | (1ULL << (azslParser::Int1x4 - 66)) - | (1ULL << (azslParser::Int2x1 - 66)) - | (1ULL << (azslParser::Int2x2 - 66)))) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & ((1ULL << (azslParser::Int2x3 - 130)) - | (1ULL << (azslParser::Int2x4 - 130)) - | (1ULL << (azslParser::Int3x1 - 130)) - | (1ULL << (azslParser::Int3x2 - 130)) - | (1ULL << (azslParser::Int3x3 - 130)) - | (1ULL << (azslParser::Int3x4 - 130)) - | (1ULL << (azslParser::Int4x1 - 130)) - | (1ULL << (azslParser::Int4x2 - 130)) - | (1ULL << (azslParser::Int4x3 - 130)) - | (1ULL << (azslParser::Int4x4 - 130)) - | (1ULL << (azslParser::Matrix - 130)))) != 0) || ((((_la - 204) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 204)) & ((1ULL << (azslParser::Uint - 204)) - | (1ULL << (azslParser::Uint32_t - 204)) - | (1ULL << (azslParser::Uint64_t - 204)) - | (1ULL << (azslParser::UnsignedInt - 204)) - | (1ULL << (azslParser::Uint1 - 204)) - | (1ULL << (azslParser::Uint2 - 204)) - | (1ULL << (azslParser::Uint3 - 204)) - | (1ULL << (azslParser::Uint4 - 204)) - | (1ULL << (azslParser::Uint1x1 - 204)) - | (1ULL << (azslParser::Uint1x2 - 204)) - | (1ULL << (azslParser::Uint1x3 - 204)) - | (1ULL << (azslParser::Uint1x4 - 204)) - | (1ULL << (azslParser::Uint2x1 - 204)) - | (1ULL << (azslParser::Uint2x2 - 204)) - | (1ULL << (azslParser::Uint2x3 - 204)) - | (1ULL << (azslParser::Uint2x4 - 204)) - | (1ULL << (azslParser::Uint3x1 - 204)) - | (1ULL << (azslParser::Uint3x2 - 204)) - | (1ULL << (azslParser::Uint3x3 - 204)) - | (1ULL << (azslParser::Uint3x4 - 204)) - | (1ULL << (azslParser::Uint4x1 - 204)) - | (1ULL << (azslParser::Uint4x2 - 204)) - | (1ULL << (azslParser::Uint4x3 - 204)) - | (1ULL << (azslParser::Uint4x4 - 204)) - | (1ULL << (azslParser::Dword - 204)) - | (1ULL << (azslParser::Dword1 - 204)) - | (1ULL << (azslParser::Dword2 - 204)) - | (1ULL << (azslParser::Dword3 - 204)) - | (1ULL << (azslParser::Dword4 - 204)) - | (1ULL << (azslParser::Dword1x1 - 204)) - | (1ULL << (azslParser::Dword1x2 - 204)) - | (1ULL << (azslParser::Dword1x3 - 204)) - | (1ULL << (azslParser::Dword1x4 - 204)) - | (1ULL << (azslParser::Dword2x1 - 204)) - | (1ULL << (azslParser::Dword2x2 - 204)) - | (1ULL << (azslParser::Dword2x3 - 204)) - | (1ULL << (azslParser::Dword2x4 - 204)) - | (1ULL << (azslParser::Dword3x1 - 204)) - | (1ULL << (azslParser::Dword3x2 - 204)) - | (1ULL << (azslParser::Dword3x3 - 204)) - | (1ULL << (azslParser::Dword3x4 - 204)) - | (1ULL << (azslParser::Dword4x1 - 204)) - | (1ULL << (azslParser::Dword4x2 - 204)) - | (1ULL << (azslParser::Dword4x3 - 204)) - | (1ULL << (azslParser::Dword4x4 - 204)) - | (1ULL << (azslParser::Vector - 204)))) != 0) || ((((_la - 297) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 297)) & ((1ULL << (azslParser::LeftParen - 297)) - | (1ULL << (azslParser::Plus - 297)) - | (1ULL << (azslParser::PlusPlus - 297)) - | (1ULL << (azslParser::Minus - 297)) - | (1ULL << (azslParser::MinusMinus - 297)) - | (1ULL << (azslParser::Not - 297)) - | (1ULL << (azslParser::Tilde - 297)) - | (1ULL << (azslParser::ColonColon - 297)) - | (1ULL << (azslParser::True - 297)) - | (1ULL << (azslParser::False - 297)))) != 0) || ((((_la - 361) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 361)) & ((1ULL << (azslParser::Identifier - 361)) - | (1ULL << (azslParser::IntegerLiteral - 361)) - | (1ULL << (azslParser::FloatLiteral - 361)) - | (1ULL << (azslParser::StringLiteral - 361)))) != 0)) { - setState(656); + | (1ULL << azslParser::Double4x4))) != 0) || ((((_la - 67) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 67)) & ((1ULL << (azslParser::Float - 67)) + | (1ULL << (azslParser::Float1 - 67)) + | (1ULL << (azslParser::Float2 - 67)) + | (1ULL << (azslParser::Float3 - 67)) + | (1ULL << (azslParser::Float4 - 67)) + | (1ULL << (azslParser::Float1x1 - 67)) + | (1ULL << (azslParser::Float1x2 - 67)) + | (1ULL << (azslParser::Float1x3 - 67)) + | (1ULL << (azslParser::Float1x4 - 67)) + | (1ULL << (azslParser::Float2x1 - 67)) + | (1ULL << (azslParser::Float2x2 - 67)) + | (1ULL << (azslParser::Float2x3 - 67)) + | (1ULL << (azslParser::Float2x4 - 67)) + | (1ULL << (azslParser::Float3x1 - 67)) + | (1ULL << (azslParser::Float3x2 - 67)) + | (1ULL << (azslParser::Float3x3 - 67)) + | (1ULL << (azslParser::Float3x4 - 67)) + | (1ULL << (azslParser::Float4x1 - 67)) + | (1ULL << (azslParser::Float4x2 - 67)) + | (1ULL << (azslParser::Float4x3 - 67)) + | (1ULL << (azslParser::Float4x4 - 67)) + | (1ULL << (azslParser::Half - 67)) + | (1ULL << (azslParser::Half1 - 67)) + | (1ULL << (azslParser::Half2 - 67)) + | (1ULL << (azslParser::Half3 - 67)) + | (1ULL << (azslParser::Half4 - 67)) + | (1ULL << (azslParser::Half1x1 - 67)) + | (1ULL << (azslParser::Half1x2 - 67)) + | (1ULL << (azslParser::Half1x3 - 67)) + | (1ULL << (azslParser::Half1x4 - 67)) + | (1ULL << (azslParser::Half2x1 - 67)) + | (1ULL << (azslParser::Half2x2 - 67)) + | (1ULL << (azslParser::Half2x3 - 67)) + | (1ULL << (azslParser::Half2x4 - 67)) + | (1ULL << (azslParser::Half3x1 - 67)) + | (1ULL << (azslParser::Half3x2 - 67)) + | (1ULL << (azslParser::Half3x3 - 67)) + | (1ULL << (azslParser::Half3x4 - 67)) + | (1ULL << (azslParser::Half4x1 - 67)) + | (1ULL << (azslParser::Half4x2 - 67)) + | (1ULL << (azslParser::Half4x3 - 67)) + | (1ULL << (azslParser::Half4x4 - 67)) + | (1ULL << (azslParser::Int - 67)) + | (1ULL << (azslParser::Int16_t - 67)) + | (1ULL << (azslParser::Int32_t - 67)) + | (1ULL << (azslParser::Int64_t - 67)) + | (1ULL << (azslParser::Int1 - 67)) + | (1ULL << (azslParser::Int2 - 67)) + | (1ULL << (azslParser::Int3 - 67)) + | (1ULL << (azslParser::Int4 - 67)) + | (1ULL << (azslParser::Int1x1 - 67)) + | (1ULL << (azslParser::Int1x2 - 67)) + | (1ULL << (azslParser::Int1x3 - 67)) + | (1ULL << (azslParser::Int1x4 - 67)))) != 0) || ((((_la - 131) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 131)) & ((1ULL << (azslParser::Int2x1 - 131)) + | (1ULL << (azslParser::Int2x2 - 131)) + | (1ULL << (azslParser::Int2x3 - 131)) + | (1ULL << (azslParser::Int2x4 - 131)) + | (1ULL << (azslParser::Int3x1 - 131)) + | (1ULL << (azslParser::Int3x2 - 131)) + | (1ULL << (azslParser::Int3x3 - 131)) + | (1ULL << (azslParser::Int3x4 - 131)) + | (1ULL << (azslParser::Int4x1 - 131)) + | (1ULL << (azslParser::Int4x2 - 131)) + | (1ULL << (azslParser::Int4x3 - 131)) + | (1ULL << (azslParser::Int4x4 - 131)) + | (1ULL << (azslParser::Matrix - 131)))) != 0) || ((((_la - 210) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 210)) & ((1ULL << (azslParser::Uint - 210)) + | (1ULL << (azslParser::Uint1 - 210)) + | (1ULL << (azslParser::Uint2 - 210)) + | (1ULL << (azslParser::Uint3 - 210)) + | (1ULL << (azslParser::Uint4 - 210)) + | (1ULL << (azslParser::Uint1x1 - 210)) + | (1ULL << (azslParser::Uint1x2 - 210)) + | (1ULL << (azslParser::Uint1x3 - 210)) + | (1ULL << (azslParser::Uint1x4 - 210)) + | (1ULL << (azslParser::Uint2x1 - 210)) + | (1ULL << (azslParser::Uint2x2 - 210)) + | (1ULL << (azslParser::Uint2x3 - 210)) + | (1ULL << (azslParser::Uint2x4 - 210)) + | (1ULL << (azslParser::Uint3x1 - 210)) + | (1ULL << (azslParser::Uint3x2 - 210)) + | (1ULL << (azslParser::Uint3x3 - 210)) + | (1ULL << (azslParser::Uint3x4 - 210)) + | (1ULL << (azslParser::Uint4x1 - 210)) + | (1ULL << (azslParser::Uint4x2 - 210)) + | (1ULL << (azslParser::Uint4x3 - 210)) + | (1ULL << (azslParser::Uint4x4 - 210)) + | (1ULL << (azslParser::Uint16_t - 210)) + | (1ULL << (azslParser::Uint32_t - 210)) + | (1ULL << (azslParser::Uint64_t - 210)) + | (1ULL << (azslParser::Dword - 210)) + | (1ULL << (azslParser::Dword1 - 210)) + | (1ULL << (azslParser::Dword2 - 210)) + | (1ULL << (azslParser::Dword3 - 210)) + | (1ULL << (azslParser::Dword4 - 210)) + | (1ULL << (azslParser::Dword1x1 - 210)) + | (1ULL << (azslParser::Dword1x2 - 210)) + | (1ULL << (azslParser::Dword1x3 - 210)) + | (1ULL << (azslParser::Dword1x4 - 210)) + | (1ULL << (azslParser::Dword2x1 - 210)) + | (1ULL << (azslParser::Dword2x2 - 210)) + | (1ULL << (azslParser::Dword2x3 - 210)) + | (1ULL << (azslParser::Dword2x4 - 210)) + | (1ULL << (azslParser::Dword3x1 - 210)) + | (1ULL << (azslParser::Dword3x2 - 210)) + | (1ULL << (azslParser::Dword3x3 - 210)) + | (1ULL << (azslParser::Dword3x4 - 210)) + | (1ULL << (azslParser::Dword4x1 - 210)) + | (1ULL << (azslParser::Dword4x2 - 210)) + | (1ULL << (azslParser::Dword4x3 - 210)) + | (1ULL << (azslParser::Dword4x4 - 210)) + | (1ULL << (azslParser::Vector - 210)))) != 0) || ((((_la - 305) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 305)) & ((1ULL << (azslParser::LeftParen - 305)) + | (1ULL << (azslParser::Plus - 305)) + | (1ULL << (azslParser::PlusPlus - 305)) + | (1ULL << (azslParser::Minus - 305)) + | (1ULL << (azslParser::MinusMinus - 305)) + | (1ULL << (azslParser::Not - 305)) + | (1ULL << (azslParser::Tilde - 305)) + | (1ULL << (azslParser::ColonColon - 305)) + | (1ULL << (azslParser::True - 305)) + | (1ULL << (azslParser::False - 305)))) != 0) || ((((_la - 369) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 369)) & ((1ULL << (azslParser::Identifier - 369)) + | (1ULL << (azslParser::IntegerLiteral - 369)) + | (1ULL << (azslParser::FloatLiteral - 369)) + | (1ULL << (azslParser::StringLiteral - 369)))) != 0)) { + setState(653); antlrcpp::downCast(_localctx)->Expr = expressionExt(0); } - setState(659); + setState(656); match(azslParser::Semi); break; } @@ -6792,7 +6591,7 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { case 13: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 13); - setState(660); + setState(657); compilerExtensionStatement(); break; } @@ -6800,7 +6599,7 @@ azslParser::EmbeddedStatementContext* azslParser::embeddedStatement() { case 14: { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 14); - setState(661); + setState(658); typeAliasingDefinitionStatement(); break; } @@ -6863,9 +6662,9 @@ azslParser::ElseClauseContext* azslParser::elseClause() { }); try { enterOuterAlt(_localctx, 1); - setState(664); + setState(661); match(azslParser::Else); - setState(665); + setState(662); antlrcpp::downCast(_localctx)->Stmt = embeddedStatement(); } @@ -7249,7 +7048,7 @@ azslParser::ExpressionContext* azslParser::expression(int precedence) { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(691); + setState(688); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 51, _ctx)) { case 1: { @@ -7257,7 +7056,7 @@ azslParser::ExpressionContext* azslParser::expression(int precedence) { _ctx = _localctx; previousContext = _localctx; - setState(668); + setState(665); literal(); break; } @@ -7266,7 +7065,7 @@ azslParser::ExpressionContext* azslParser::expression(int precedence) { _localctx = _tracker.createInstance(_localctx); _ctx = _localctx; previousContext = _localctx; - setState(669); + setState(666); idExpression(); break; } @@ -7275,11 +7074,11 @@ azslParser::ExpressionContext* azslParser::expression(int precedence) { _localctx = _tracker.createInstance(_localctx); _ctx = _localctx; previousContext = _localctx; - setState(670); + setState(667); match(azslParser::LeftParen); - setState(671); + setState(668); antlrcpp::downCast(_localctx)->Expr = expressionExt(0); - setState(672); + setState(669); match(azslParser::RightParen); break; } @@ -7288,9 +7087,9 @@ azslParser::ExpressionContext* azslParser::expression(int precedence) { _localctx = _tracker.createInstance(_localctx); _ctx = _localctx; previousContext = _localctx; - setState(674); + setState(671); scalarOrVectorOrMatrixType(); - setState(675); + setState(672); argumentList(); break; } @@ -7299,24 +7098,24 @@ azslParser::ExpressionContext* azslParser::expression(int precedence) { _localctx = _tracker.createInstance(_localctx); _ctx = _localctx; previousContext = _localctx; - setState(677); + setState(674); match(azslParser::LeftParen); - setState(678); + setState(675); type(); - setState(682); + setState(679); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::LeftBracket) { - setState(679); + setState(676); antlrcpp::downCast(_localctx)->arrayRankSpecifierContext = arrayRankSpecifier(); antlrcpp::downCast(_localctx)->ArrayRankSpecifiers.push_back(antlrcpp::downCast(_localctx)->arrayRankSpecifierContext); - setState(684); + setState(681); _errHandler->sync(this); _la = _input->LA(1); } - setState(685); + setState(682); match(azslParser::RightParen); - setState(686); + setState(683); antlrcpp::downCast(_localctx)->Expr = expression(6); break; } @@ -7325,9 +7124,9 @@ azslParser::ExpressionContext* azslParser::expression(int precedence) { _localctx = _tracker.createInstance(_localctx); _ctx = _localctx; previousContext = _localctx; - setState(688); + setState(685); antlrcpp::downCast(_localctx)->Operator = prefixUnaryOperator(); - setState(689); + setState(686); antlrcpp::downCast(_localctx)->Expr = expression(4); break; } @@ -7336,7 +7135,7 @@ azslParser::ExpressionContext* azslParser::expression(int precedence) { break; } _ctx->stop = _input->LT(-1); - setState(721); + setState(718); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 53, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { @@ -7344,7 +7143,7 @@ azslParser::ExpressionContext* azslParser::expression(int precedence) { if (!_parseListeners.empty()) triggerExitRuleEvent(); previousContext = _localctx; - setState(719); + setState(716); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 52, _ctx)) { case 1: { @@ -7352,12 +7151,12 @@ azslParser::ExpressionContext* azslParser::expression(int precedence) { _localctx = newContext; newContext->Left = previousContext; pushNewRecursionContext(newContext, startState, RuleExpression); - setState(693); + setState(690); if (!(precpred(_ctx, 3))) throw FailedPredicateException(this, "precpred(_ctx, 3)"); - setState(694); + setState(691); antlrcpp::downCast(_localctx)->Operator = binaryOperator(); - setState(695); + setState(692); antlrcpp::downCast(_localctx)->Right = expression(4); break; } @@ -7367,12 +7166,12 @@ azslParser::ExpressionContext* azslParser::expression(int precedence) { _localctx = newContext; newContext->LHSExpr = previousContext; pushNewRecursionContext(newContext, startState, RuleExpression); - setState(697); + setState(694); if (!(precpred(_ctx, 10))) throw FailedPredicateException(this, "precpred(_ctx, 10)"); - setState(698); + setState(695); antlrcpp::downCast(_localctx)->DotToken = match(azslParser::Dot); - setState(699); + setState(696); antlrcpp::downCast(_localctx)->Member = idExpression(); break; } @@ -7382,14 +7181,14 @@ azslParser::ExpressionContext* azslParser::expression(int precedence) { _localctx = newContext; newContext->Expr = previousContext; pushNewRecursionContext(newContext, startState, RuleExpression); - setState(700); + setState(697); if (!(precpred(_ctx, 9))) throw FailedPredicateException(this, "precpred(_ctx, 9)"); - setState(701); + setState(698); match(azslParser::LeftBracket); - setState(702); + setState(699); antlrcpp::downCast(_localctx)->Index = expression(0); - setState(703); + setState(700); match(azslParser::RightBracket); break; } @@ -7399,10 +7198,10 @@ azslParser::ExpressionContext* azslParser::expression(int precedence) { _localctx = newContext; newContext->Expr = previousContext; pushNewRecursionContext(newContext, startState, RuleExpression); - setState(705); + setState(702); if (!(precpred(_ctx, 8))) throw FailedPredicateException(this, "precpred(_ctx, 8)"); - setState(706); + setState(703); argumentList(); break; } @@ -7412,10 +7211,10 @@ azslParser::ExpressionContext* azslParser::expression(int precedence) { _localctx = newContext; newContext->Expr = previousContext; pushNewRecursionContext(newContext, startState, RuleExpression); - setState(707); + setState(704); if (!(precpred(_ctx, 5))) throw FailedPredicateException(this, "precpred(_ctx, 5)"); - setState(708); + setState(705); antlrcpp::downCast(_localctx)->Operator = postfixUnaryOperator(); break; } @@ -7425,16 +7224,16 @@ azslParser::ExpressionContext* azslParser::expression(int precedence) { _localctx = newContext; newContext->Condition = previousContext; pushNewRecursionContext(newContext, startState, RuleExpression); - setState(709); + setState(706); if (!(precpred(_ctx, 2))) throw FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(710); + setState(707); match(azslParser::Question); - setState(711); + setState(708); antlrcpp::downCast(_localctx)->TrueExpr = expressionExt(0); - setState(712); + setState(709); match(azslParser::Colon); - setState(713); + setState(710); antlrcpp::downCast(_localctx)->FalseExpr = expressionExt(0); break; } @@ -7444,12 +7243,12 @@ azslParser::ExpressionContext* azslParser::expression(int precedence) { _localctx = newContext; newContext->Left = previousContext; pushNewRecursionContext(newContext, startState, RuleExpression); - setState(715); + setState(712); if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(716); + setState(713); antlrcpp::downCast(_localctx)->Operator = assignmentOperator(); - setState(717); + setState(714); antlrcpp::downCast(_localctx)->Right = expressionExt(0); break; } @@ -7458,7 +7257,7 @@ azslParser::ExpressionContext* azslParser::expression(int precedence) { break; } } - setState(723); + setState(720); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 53, _ctx); } @@ -7560,10 +7359,10 @@ azslParser::ExpressionExtContext* azslParser::expressionExt(int precedence) { _ctx = _localctx; previousContext = _localctx; - setState(725); + setState(722); antlrcpp::downCast(_localctx)->Expr = expression(0); _ctx->stop = _input->LT(-1); - setState(732); + setState(729); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 54, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { @@ -7575,15 +7374,15 @@ azslParser::ExpressionExtContext* azslParser::expressionExt(int precedence) { _localctx = newContext; newContext->Left = previousContext; pushNewRecursionContext(newContext, startState, RuleExpressionExt); - setState(727); + setState(724); if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(728); + setState(725); antlrcpp::downCast(_localctx)->Operator = match(azslParser::Comma); - setState(729); + setState(726); antlrcpp::downCast(_localctx)->Right = expression(0); } - setState(734); + setState(731); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 54, _ctx); } @@ -7641,7 +7440,7 @@ azslParser::PostfixUnaryOperatorContext* azslParser::postfixUnaryOperator() { }); try { enterOuterAlt(_localctx, 1); - setState(735); + setState(732); _la = _input->LA(1); if (!(_la == azslParser::PlusPlus @@ -7724,15 +7523,15 @@ azslParser::PrefixUnaryOperatorContext* azslParser::prefixUnaryOperator() { }); try { enterOuterAlt(_localctx, 1); - setState(737); + setState(734); _la = _input->LA(1); - if (!(((((_la - 310) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 310)) & ((1ULL << (azslParser::Plus - 310)) - | (1ULL << (azslParser::PlusPlus - 310)) - | (1ULL << (azslParser::Minus - 310)) - | (1ULL << (azslParser::MinusMinus - 310)) - | (1ULL << (azslParser::Not - 310)) - | (1ULL << (azslParser::Tilde - 310)))) != 0))) { + if (!(((((_la - 318) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 318)) & ((1ULL << (azslParser::Plus - 318)) + | (1ULL << (azslParser::PlusPlus - 318)) + | (1ULL << (azslParser::Minus - 318)) + | (1ULL << (azslParser::MinusMinus - 318)) + | (1ULL << (azslParser::Not - 318)) + | (1ULL << (azslParser::Tilde - 318)))) != 0))) { _errHandler->recoverInline(this); } else { @@ -7859,27 +7658,27 @@ azslParser::BinaryOperatorContext* azslParser::binaryOperator() { }); try { enterOuterAlt(_localctx, 1); - setState(739); + setState(736); _la = _input->LA(1); - if (!(((((_la - 304) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 304)) & ((1ULL << (azslParser::Less - 304)) - | (1ULL << (azslParser::LessEqual - 304)) - | (1ULL << (azslParser::Greater - 304)) - | (1ULL << (azslParser::GreaterEqual - 304)) - | (1ULL << (azslParser::LeftShift - 304)) - | (1ULL << (azslParser::RightShift - 304)) - | (1ULL << (azslParser::Plus - 304)) - | (1ULL << (azslParser::Minus - 304)) - | (1ULL << (azslParser::Star - 304)) - | (1ULL << (azslParser::Div - 304)) - | (1ULL << (azslParser::Mod - 304)) - | (1ULL << (azslParser::And - 304)) - | (1ULL << (azslParser::Or - 304)) - | (1ULL << (azslParser::AndAnd - 304)) - | (1ULL << (azslParser::OrOr - 304)) - | (1ULL << (azslParser::Caret - 304)) - | (1ULL << (azslParser::Equal - 304)) - | (1ULL << (azslParser::NotEqual - 304)))) != 0))) { + if (!(((((_la - 312) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 312)) & ((1ULL << (azslParser::Less - 312)) + | (1ULL << (azslParser::LessEqual - 312)) + | (1ULL << (azslParser::Greater - 312)) + | (1ULL << (azslParser::GreaterEqual - 312)) + | (1ULL << (azslParser::LeftShift - 312)) + | (1ULL << (azslParser::RightShift - 312)) + | (1ULL << (azslParser::Plus - 312)) + | (1ULL << (azslParser::Minus - 312)) + | (1ULL << (azslParser::Star - 312)) + | (1ULL << (azslParser::Div - 312)) + | (1ULL << (azslParser::Mod - 312)) + | (1ULL << (azslParser::And - 312)) + | (1ULL << (azslParser::Or - 312)) + | (1ULL << (azslParser::AndAnd - 312)) + | (1ULL << (azslParser::OrOr - 312)) + | (1ULL << (azslParser::Caret - 312)) + | (1ULL << (azslParser::Equal - 312)) + | (1ULL << (azslParser::NotEqual - 312)))) != 0))) { _errHandler->recoverInline(this); } else { @@ -7978,20 +7777,20 @@ azslParser::AssignmentOperatorContext* azslParser::assignmentOperator() { }); try { enterOuterAlt(_localctx, 1); - setState(741); + setState(738); _la = _input->LA(1); - if (!(((((_la - 329) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 329)) & ((1ULL << (azslParser::Assign - 329)) - | (1ULL << (azslParser::StarAssign - 329)) - | (1ULL << (azslParser::DivAssign - 329)) - | (1ULL << (azslParser::ModAssign - 329)) - | (1ULL << (azslParser::PlusAssign - 329)) - | (1ULL << (azslParser::MinusAssign - 329)) - | (1ULL << (azslParser::LeftShiftAssign - 329)) - | (1ULL << (azslParser::RightShiftAssign - 329)) - | (1ULL << (azslParser::AndAssign - 329)) - | (1ULL << (azslParser::XorAssign - 329)) - | (1ULL << (azslParser::OrAssign - 329)))) != 0))) { + if (!(((((_la - 337) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 337)) & ((1ULL << (azslParser::Assign - 337)) + | (1ULL << (azslParser::StarAssign - 337)) + | (1ULL << (azslParser::DivAssign - 337)) + | (1ULL << (azslParser::ModAssign - 337)) + | (1ULL << (azslParser::PlusAssign - 337)) + | (1ULL << (azslParser::MinusAssign - 337)) + | (1ULL << (azslParser::LeftShiftAssign - 337)) + | (1ULL << (azslParser::RightShiftAssign - 337)) + | (1ULL << (azslParser::AndAssign - 337)) + | (1ULL << (azslParser::XorAssign - 337)) + | (1ULL << (azslParser::OrAssign - 337)))) != 0))) { _errHandler->recoverInline(this); } else { @@ -8058,9 +7857,9 @@ azslParser::ArgumentListContext* azslParser::argumentList() { }); try { enterOuterAlt(_localctx, 1); - setState(743); + setState(740); match(azslParser::LeftParen); - setState(745); + setState(742); _errHandler->sync(this); _la = _input->LA(1); @@ -8106,137 +7905,138 @@ azslParser::ArgumentListContext* azslParser::argumentList() { | (1ULL << azslParser::Double4x1) | (1ULL << azslParser::Double4x2) | (1ULL << azslParser::Double4x3) - | (1ULL << azslParser::Double4x4))) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & ((1ULL << (azslParser::Float - 66)) - | (1ULL << (azslParser::Float1 - 66)) - | (1ULL << (azslParser::Float2 - 66)) - | (1ULL << (azslParser::Float3 - 66)) - | (1ULL << (azslParser::Float4 - 66)) - | (1ULL << (azslParser::Float1x1 - 66)) - | (1ULL << (azslParser::Float1x2 - 66)) - | (1ULL << (azslParser::Float1x3 - 66)) - | (1ULL << (azslParser::Float1x4 - 66)) - | (1ULL << (azslParser::Float2x1 - 66)) - | (1ULL << (azslParser::Float2x2 - 66)) - | (1ULL << (azslParser::Float2x3 - 66)) - | (1ULL << (azslParser::Float2x4 - 66)) - | (1ULL << (azslParser::Float3x1 - 66)) - | (1ULL << (azslParser::Float3x2 - 66)) - | (1ULL << (azslParser::Float3x3 - 66)) - | (1ULL << (azslParser::Float3x4 - 66)) - | (1ULL << (azslParser::Float4x1 - 66)) - | (1ULL << (azslParser::Float4x2 - 66)) - | (1ULL << (azslParser::Float4x3 - 66)) - | (1ULL << (azslParser::Float4x4 - 66)) - | (1ULL << (azslParser::Half - 66)) - | (1ULL << (azslParser::Half1 - 66)) - | (1ULL << (azslParser::Half2 - 66)) - | (1ULL << (azslParser::Half3 - 66)) - | (1ULL << (azslParser::Half4 - 66)) - | (1ULL << (azslParser::Half1x1 - 66)) - | (1ULL << (azslParser::Half1x2 - 66)) - | (1ULL << (azslParser::Half1x3 - 66)) - | (1ULL << (azslParser::Half1x4 - 66)) - | (1ULL << (azslParser::Half2x1 - 66)) - | (1ULL << (azslParser::Half2x2 - 66)) - | (1ULL << (azslParser::Half2x3 - 66)) - | (1ULL << (azslParser::Half2x4 - 66)) - | (1ULL << (azslParser::Half3x1 - 66)) - | (1ULL << (azslParser::Half3x2 - 66)) - | (1ULL << (azslParser::Half3x3 - 66)) - | (1ULL << (azslParser::Half3x4 - 66)) - | (1ULL << (azslParser::Half4x1 - 66)) - | (1ULL << (azslParser::Half4x2 - 66)) - | (1ULL << (azslParser::Half4x3 - 66)) - | (1ULL << (azslParser::Half4x4 - 66)) - | (1ULL << (azslParser::Int - 66)) - | (1ULL << (azslParser::Int32_t - 66)) - | (1ULL << (azslParser::Int64_t - 66)) - | (1ULL << (azslParser::Int1 - 66)) - | (1ULL << (azslParser::Int2 - 66)) - | (1ULL << (azslParser::Int3 - 66)) - | (1ULL << (azslParser::Int4 - 66)) - | (1ULL << (azslParser::Int1x1 - 66)) - | (1ULL << (azslParser::Int1x2 - 66)) - | (1ULL << (azslParser::Int1x3 - 66)) - | (1ULL << (azslParser::Int1x4 - 66)) - | (1ULL << (azslParser::Int2x1 - 66)) - | (1ULL << (azslParser::Int2x2 - 66)))) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & ((1ULL << (azslParser::Int2x3 - 130)) - | (1ULL << (azslParser::Int2x4 - 130)) - | (1ULL << (azslParser::Int3x1 - 130)) - | (1ULL << (azslParser::Int3x2 - 130)) - | (1ULL << (azslParser::Int3x3 - 130)) - | (1ULL << (azslParser::Int3x4 - 130)) - | (1ULL << (azslParser::Int4x1 - 130)) - | (1ULL << (azslParser::Int4x2 - 130)) - | (1ULL << (azslParser::Int4x3 - 130)) - | (1ULL << (azslParser::Int4x4 - 130)) - | (1ULL << (azslParser::Matrix - 130)))) != 0) || ((((_la - 204) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 204)) & ((1ULL << (azslParser::Uint - 204)) - | (1ULL << (azslParser::Uint32_t - 204)) - | (1ULL << (azslParser::Uint64_t - 204)) - | (1ULL << (azslParser::UnsignedInt - 204)) - | (1ULL << (azslParser::Uint1 - 204)) - | (1ULL << (azslParser::Uint2 - 204)) - | (1ULL << (azslParser::Uint3 - 204)) - | (1ULL << (azslParser::Uint4 - 204)) - | (1ULL << (azslParser::Uint1x1 - 204)) - | (1ULL << (azslParser::Uint1x2 - 204)) - | (1ULL << (azslParser::Uint1x3 - 204)) - | (1ULL << (azslParser::Uint1x4 - 204)) - | (1ULL << (azslParser::Uint2x1 - 204)) - | (1ULL << (azslParser::Uint2x2 - 204)) - | (1ULL << (azslParser::Uint2x3 - 204)) - | (1ULL << (azslParser::Uint2x4 - 204)) - | (1ULL << (azslParser::Uint3x1 - 204)) - | (1ULL << (azslParser::Uint3x2 - 204)) - | (1ULL << (azslParser::Uint3x3 - 204)) - | (1ULL << (azslParser::Uint3x4 - 204)) - | (1ULL << (azslParser::Uint4x1 - 204)) - | (1ULL << (azslParser::Uint4x2 - 204)) - | (1ULL << (azslParser::Uint4x3 - 204)) - | (1ULL << (azslParser::Uint4x4 - 204)) - | (1ULL << (azslParser::Dword - 204)) - | (1ULL << (azslParser::Dword1 - 204)) - | (1ULL << (azslParser::Dword2 - 204)) - | (1ULL << (azslParser::Dword3 - 204)) - | (1ULL << (azslParser::Dword4 - 204)) - | (1ULL << (azslParser::Dword1x1 - 204)) - | (1ULL << (azslParser::Dword1x2 - 204)) - | (1ULL << (azslParser::Dword1x3 - 204)) - | (1ULL << (azslParser::Dword1x4 - 204)) - | (1ULL << (azslParser::Dword2x1 - 204)) - | (1ULL << (azslParser::Dword2x2 - 204)) - | (1ULL << (azslParser::Dword2x3 - 204)) - | (1ULL << (azslParser::Dword2x4 - 204)) - | (1ULL << (azslParser::Dword3x1 - 204)) - | (1ULL << (azslParser::Dword3x2 - 204)) - | (1ULL << (azslParser::Dword3x3 - 204)) - | (1ULL << (azslParser::Dword3x4 - 204)) - | (1ULL << (azslParser::Dword4x1 - 204)) - | (1ULL << (azslParser::Dword4x2 - 204)) - | (1ULL << (azslParser::Dword4x3 - 204)) - | (1ULL << (azslParser::Dword4x4 - 204)) - | (1ULL << (azslParser::Vector - 204)))) != 0) || ((((_la - 297) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 297)) & ((1ULL << (azslParser::LeftParen - 297)) - | (1ULL << (azslParser::Plus - 297)) - | (1ULL << (azslParser::PlusPlus - 297)) - | (1ULL << (azslParser::Minus - 297)) - | (1ULL << (azslParser::MinusMinus - 297)) - | (1ULL << (azslParser::Not - 297)) - | (1ULL << (azslParser::Tilde - 297)) - | (1ULL << (azslParser::ColonColon - 297)) - | (1ULL << (azslParser::True - 297)) - | (1ULL << (azslParser::False - 297)))) != 0) || ((((_la - 361) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 361)) & ((1ULL << (azslParser::Identifier - 361)) - | (1ULL << (azslParser::IntegerLiteral - 361)) - | (1ULL << (azslParser::FloatLiteral - 361)) - | (1ULL << (azslParser::StringLiteral - 361)))) != 0)) { - setState(744); + | (1ULL << azslParser::Double4x4))) != 0) || ((((_la - 67) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 67)) & ((1ULL << (azslParser::Float - 67)) + | (1ULL << (azslParser::Float1 - 67)) + | (1ULL << (azslParser::Float2 - 67)) + | (1ULL << (azslParser::Float3 - 67)) + | (1ULL << (azslParser::Float4 - 67)) + | (1ULL << (azslParser::Float1x1 - 67)) + | (1ULL << (azslParser::Float1x2 - 67)) + | (1ULL << (azslParser::Float1x3 - 67)) + | (1ULL << (azslParser::Float1x4 - 67)) + | (1ULL << (azslParser::Float2x1 - 67)) + | (1ULL << (azslParser::Float2x2 - 67)) + | (1ULL << (azslParser::Float2x3 - 67)) + | (1ULL << (azslParser::Float2x4 - 67)) + | (1ULL << (azslParser::Float3x1 - 67)) + | (1ULL << (azslParser::Float3x2 - 67)) + | (1ULL << (azslParser::Float3x3 - 67)) + | (1ULL << (azslParser::Float3x4 - 67)) + | (1ULL << (azslParser::Float4x1 - 67)) + | (1ULL << (azslParser::Float4x2 - 67)) + | (1ULL << (azslParser::Float4x3 - 67)) + | (1ULL << (azslParser::Float4x4 - 67)) + | (1ULL << (azslParser::Half - 67)) + | (1ULL << (azslParser::Half1 - 67)) + | (1ULL << (azslParser::Half2 - 67)) + | (1ULL << (azslParser::Half3 - 67)) + | (1ULL << (azslParser::Half4 - 67)) + | (1ULL << (azslParser::Half1x1 - 67)) + | (1ULL << (azslParser::Half1x2 - 67)) + | (1ULL << (azslParser::Half1x3 - 67)) + | (1ULL << (azslParser::Half1x4 - 67)) + | (1ULL << (azslParser::Half2x1 - 67)) + | (1ULL << (azslParser::Half2x2 - 67)) + | (1ULL << (azslParser::Half2x3 - 67)) + | (1ULL << (azslParser::Half2x4 - 67)) + | (1ULL << (azslParser::Half3x1 - 67)) + | (1ULL << (azslParser::Half3x2 - 67)) + | (1ULL << (azslParser::Half3x3 - 67)) + | (1ULL << (azslParser::Half3x4 - 67)) + | (1ULL << (azslParser::Half4x1 - 67)) + | (1ULL << (azslParser::Half4x2 - 67)) + | (1ULL << (azslParser::Half4x3 - 67)) + | (1ULL << (azslParser::Half4x4 - 67)) + | (1ULL << (azslParser::Int - 67)) + | (1ULL << (azslParser::Int16_t - 67)) + | (1ULL << (azslParser::Int32_t - 67)) + | (1ULL << (azslParser::Int64_t - 67)) + | (1ULL << (azslParser::Int1 - 67)) + | (1ULL << (azslParser::Int2 - 67)) + | (1ULL << (azslParser::Int3 - 67)) + | (1ULL << (azslParser::Int4 - 67)) + | (1ULL << (azslParser::Int1x1 - 67)) + | (1ULL << (azslParser::Int1x2 - 67)) + | (1ULL << (azslParser::Int1x3 - 67)) + | (1ULL << (azslParser::Int1x4 - 67)))) != 0) || ((((_la - 131) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 131)) & ((1ULL << (azslParser::Int2x1 - 131)) + | (1ULL << (azslParser::Int2x2 - 131)) + | (1ULL << (azslParser::Int2x3 - 131)) + | (1ULL << (azslParser::Int2x4 - 131)) + | (1ULL << (azslParser::Int3x1 - 131)) + | (1ULL << (azslParser::Int3x2 - 131)) + | (1ULL << (azslParser::Int3x3 - 131)) + | (1ULL << (azslParser::Int3x4 - 131)) + | (1ULL << (azslParser::Int4x1 - 131)) + | (1ULL << (azslParser::Int4x2 - 131)) + | (1ULL << (azslParser::Int4x3 - 131)) + | (1ULL << (azslParser::Int4x4 - 131)) + | (1ULL << (azslParser::Matrix - 131)))) != 0) || ((((_la - 210) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 210)) & ((1ULL << (azslParser::Uint - 210)) + | (1ULL << (azslParser::Uint1 - 210)) + | (1ULL << (azslParser::Uint2 - 210)) + | (1ULL << (azslParser::Uint3 - 210)) + | (1ULL << (azslParser::Uint4 - 210)) + | (1ULL << (azslParser::Uint1x1 - 210)) + | (1ULL << (azslParser::Uint1x2 - 210)) + | (1ULL << (azslParser::Uint1x3 - 210)) + | (1ULL << (azslParser::Uint1x4 - 210)) + | (1ULL << (azslParser::Uint2x1 - 210)) + | (1ULL << (azslParser::Uint2x2 - 210)) + | (1ULL << (azslParser::Uint2x3 - 210)) + | (1ULL << (azslParser::Uint2x4 - 210)) + | (1ULL << (azslParser::Uint3x1 - 210)) + | (1ULL << (azslParser::Uint3x2 - 210)) + | (1ULL << (azslParser::Uint3x3 - 210)) + | (1ULL << (azslParser::Uint3x4 - 210)) + | (1ULL << (azslParser::Uint4x1 - 210)) + | (1ULL << (azslParser::Uint4x2 - 210)) + | (1ULL << (azslParser::Uint4x3 - 210)) + | (1ULL << (azslParser::Uint4x4 - 210)) + | (1ULL << (azslParser::Uint16_t - 210)) + | (1ULL << (azslParser::Uint32_t - 210)) + | (1ULL << (azslParser::Uint64_t - 210)) + | (1ULL << (azslParser::Dword - 210)) + | (1ULL << (azslParser::Dword1 - 210)) + | (1ULL << (azslParser::Dword2 - 210)) + | (1ULL << (azslParser::Dword3 - 210)) + | (1ULL << (azslParser::Dword4 - 210)) + | (1ULL << (azslParser::Dword1x1 - 210)) + | (1ULL << (azslParser::Dword1x2 - 210)) + | (1ULL << (azslParser::Dword1x3 - 210)) + | (1ULL << (azslParser::Dword1x4 - 210)) + | (1ULL << (azslParser::Dword2x1 - 210)) + | (1ULL << (azslParser::Dword2x2 - 210)) + | (1ULL << (azslParser::Dword2x3 - 210)) + | (1ULL << (azslParser::Dword2x4 - 210)) + | (1ULL << (azslParser::Dword3x1 - 210)) + | (1ULL << (azslParser::Dword3x2 - 210)) + | (1ULL << (azslParser::Dword3x3 - 210)) + | (1ULL << (azslParser::Dword3x4 - 210)) + | (1ULL << (azslParser::Dword4x1 - 210)) + | (1ULL << (azslParser::Dword4x2 - 210)) + | (1ULL << (azslParser::Dword4x3 - 210)) + | (1ULL << (azslParser::Dword4x4 - 210)) + | (1ULL << (azslParser::Vector - 210)))) != 0) || ((((_la - 305) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 305)) & ((1ULL << (azslParser::LeftParen - 305)) + | (1ULL << (azslParser::Plus - 305)) + | (1ULL << (azslParser::PlusPlus - 305)) + | (1ULL << (azslParser::Minus - 305)) + | (1ULL << (azslParser::MinusMinus - 305)) + | (1ULL << (azslParser::Not - 305)) + | (1ULL << (azslParser::Tilde - 305)) + | (1ULL << (azslParser::ColonColon - 305)) + | (1ULL << (azslParser::True - 305)) + | (1ULL << (azslParser::False - 305)))) != 0) || ((((_la - 369) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 369)) & ((1ULL << (azslParser::Identifier - 369)) + | (1ULL << (azslParser::IntegerLiteral - 369)) + | (1ULL << (azslParser::FloatLiteral - 369)) + | (1ULL << (azslParser::StringLiteral - 369)))) != 0)) { + setState(741); arguments(); } - setState(747); + setState(744); match(azslParser::RightParen); } @@ -8302,17 +8102,17 @@ azslParser::ArgumentsContext* azslParser::arguments() { }); try { enterOuterAlt(_localctx, 1); - setState(749); + setState(746); expression(0); - setState(754); + setState(751); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::Comma) { - setState(750); + setState(747); match(azslParser::Comma); - setState(751); + setState(748); expression(0); - setState(756); + setState(753); _errHandler->sync(this); _la = _input->LA(1); } @@ -8333,10 +8133,6 @@ azslParser::VariableDeclarationContext::VariableDeclarationContext(ParserRuleCon : ParserRuleContext(parent, invokingState) { } -azslParser::StorageFlagsContext* azslParser::VariableDeclarationContext::storageFlags() { - return getRuleContext(0); -} - azslParser::TypeContext* azslParser::VariableDeclarationContext::type() { return getRuleContext(0); } @@ -8384,23 +8180,21 @@ azslParser::VariableDeclarationContext* azslParser::variableDeclaration() { }); try { enterOuterAlt(_localctx, 1); - setState(760); + setState(757); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::LeftBracket || _la == azslParser::LeftDoubleBracket) { - setState(757); + setState(754); attributeSpecifierAny(); - setState(762); + setState(759); _errHandler->sync(this); _la = _input->LA(1); } - setState(763); - storageFlags(); - setState(764); + setState(760); type(); - setState(765); + setState(761); variableDeclarators(); } @@ -8466,19 +8260,19 @@ azslParser::VariableDeclaratorsContext* azslParser::variableDeclarators() { }); try { enterOuterAlt(_localctx, 1); - setState(767); + setState(763); antlrcpp::downCast(_localctx)->namedVariableDeclaratorContext = namedVariableDeclarator(); antlrcpp::downCast(_localctx)->VarDecls.push_back(antlrcpp::downCast(_localctx)->namedVariableDeclaratorContext); - setState(772); + setState(768); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::Comma) { - setState(768); + setState(764); match(azslParser::Comma); - setState(769); + setState(765); antlrcpp::downCast(_localctx)->namedVariableDeclaratorContext = namedVariableDeclarator(); antlrcpp::downCast(_localctx)->VarDecls.push_back(antlrcpp::downCast(_localctx)->namedVariableDeclaratorContext); - setState(774); + setState(770); _errHandler->sync(this); _la = _input->LA(1); } @@ -8554,23 +8348,23 @@ azslParser::UnnamedVariableDeclaratorContext* azslParser::unnamedVariableDeclara }); try { enterOuterAlt(_localctx, 1); - setState(778); + setState(774); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::LeftBracket) { - setState(775); + setState(771); antlrcpp::downCast(_localctx)->arrayRankSpecifierContext = arrayRankSpecifier(); antlrcpp::downCast(_localctx)->ArrayRankSpecifiers.push_back(antlrcpp::downCast(_localctx)->arrayRankSpecifierContext); - setState(780); + setState(776); _errHandler->sync(this); _la = _input->LA(1); } - setState(782); + setState(778); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 60, _ctx)) { case 1: { - setState(781); + setState(777); antlrcpp::downCast(_localctx)->SemanticOpt = hlslSemantic(); break; } @@ -8578,12 +8372,12 @@ azslParser::UnnamedVariableDeclaratorContext* azslParser::unnamedVariableDeclara default: break; } - setState(785); + setState(781); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 61, _ctx)) { case 1: { - setState(784); + setState(780); packOffsetNode(); break; } @@ -8591,22 +8385,22 @@ azslParser::UnnamedVariableDeclaratorContext* azslParser::unnamedVariableDeclara default: break; } - setState(788); + setState(784); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::Colon) { - setState(787); + setState(783); antlrcpp::downCast(_localctx)->RegisterAllocation = registerAllocation(); } - setState(791); + setState(787); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::LeftBrace || _la == azslParser::Assign) { - setState(790); + setState(786); variableInitializer(); } @@ -8664,9 +8458,9 @@ azslParser::NamedVariableDeclaratorContext* azslParser::namedVariableDeclarator( }); try { enterOuterAlt(_localctx, 1); - setState(793); + setState(789); antlrcpp::downCast(_localctx)->Name = match(azslParser::Identifier); - setState(794); + setState(790); unnamedVariableDeclarator(); } @@ -8726,21 +8520,21 @@ azslParser::VariableInitializerContext* azslParser::variableInitializer() { exitRule(); }); try { - setState(799); + setState(795); _errHandler->sync(this); switch (_input->LA(1)) { case azslParser::Assign: { enterOuterAlt(_localctx, 1); - setState(796); + setState(792); match(azslParser::Assign); - setState(797); + setState(793); standardVariableInitializer(); break; } case azslParser::LeftBrace: { enterOuterAlt(_localctx, 2); - setState(798); + setState(794); samplerBodyDeclaration(); break; } @@ -8810,16 +8604,16 @@ azslParser::StandardVariableInitializerContext* azslParser::standardVariableInit exitRule(); }); try { - setState(806); + setState(802); _errHandler->sync(this); switch (_input->LA(1)) { case azslParser::LeftBrace: { enterOuterAlt(_localctx, 1); - setState(801); + setState(797); match(azslParser::LeftBrace); - setState(802); + setState(798); arrayElementInitializers(); - setState(803); + setState(799); match(azslParser::RightBrace); break; } @@ -8909,6 +8703,7 @@ azslParser::StandardVariableInitializerContext* azslParser::standardVariableInit case azslParser::Half4x3: case azslParser::Half4x4: case azslParser::Int: + case azslParser::Int16_t: case azslParser::Int32_t: case azslParser::Int64_t: case azslParser::Int1: @@ -8933,9 +8728,6 @@ azslParser::StandardVariableInitializerContext* azslParser::standardVariableInit case azslParser::Int4x4: case azslParser::Matrix: case azslParser::Uint: - case azslParser::Uint32_t: - case azslParser::Uint64_t: - case azslParser::UnsignedInt: case azslParser::Uint1: case azslParser::Uint2: case azslParser::Uint3: @@ -8956,6 +8748,9 @@ azslParser::StandardVariableInitializerContext* azslParser::standardVariableInit case azslParser::Uint4x2: case azslParser::Uint4x3: case azslParser::Uint4x4: + case azslParser::Uint16_t: + case azslParser::Uint32_t: + case azslParser::Uint64_t: case azslParser::Dword: case azslParser::Dword1: case azslParser::Dword2: @@ -8993,7 +8788,7 @@ azslParser::StandardVariableInitializerContext* azslParser::standardVariableInit case azslParser::FloatLiteral: case azslParser::StringLiteral: { enterOuterAlt(_localctx, 2); - setState(805); + setState(801); antlrcpp::downCast(_localctx)->Expr = expression(0); break; } @@ -9066,28 +8861,28 @@ azslParser::ArrayElementInitializersContext* azslParser::arrayElementInitializer try { size_t alt; enterOuterAlt(_localctx, 1); - setState(808); + setState(804); standardVariableInitializer(); - setState(813); + setState(809); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 66, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(809); + setState(805); match(azslParser::Comma); - setState(810); + setState(806); standardVariableInitializer(); } - setState(815); + setState(811); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 66, _ctx); } - setState(817); + setState(813); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::Comma) { - setState(816); + setState(812); match(azslParser::Comma); } @@ -9150,9 +8945,9 @@ azslParser::ArrayRankSpecifierContext* azslParser::arrayRankSpecifier() { }); try { enterOuterAlt(_localctx, 1); - setState(819); + setState(815); match(azslParser::LeftBracket); - setState(821); + setState(817); _errHandler->sync(this); _la = _input->LA(1); @@ -9198,137 +8993,138 @@ azslParser::ArrayRankSpecifierContext* azslParser::arrayRankSpecifier() { | (1ULL << azslParser::Double4x1) | (1ULL << azslParser::Double4x2) | (1ULL << azslParser::Double4x3) - | (1ULL << azslParser::Double4x4))) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & ((1ULL << (azslParser::Float - 66)) - | (1ULL << (azslParser::Float1 - 66)) - | (1ULL << (azslParser::Float2 - 66)) - | (1ULL << (azslParser::Float3 - 66)) - | (1ULL << (azslParser::Float4 - 66)) - | (1ULL << (azslParser::Float1x1 - 66)) - | (1ULL << (azslParser::Float1x2 - 66)) - | (1ULL << (azslParser::Float1x3 - 66)) - | (1ULL << (azslParser::Float1x4 - 66)) - | (1ULL << (azslParser::Float2x1 - 66)) - | (1ULL << (azslParser::Float2x2 - 66)) - | (1ULL << (azslParser::Float2x3 - 66)) - | (1ULL << (azslParser::Float2x4 - 66)) - | (1ULL << (azslParser::Float3x1 - 66)) - | (1ULL << (azslParser::Float3x2 - 66)) - | (1ULL << (azslParser::Float3x3 - 66)) - | (1ULL << (azslParser::Float3x4 - 66)) - | (1ULL << (azslParser::Float4x1 - 66)) - | (1ULL << (azslParser::Float4x2 - 66)) - | (1ULL << (azslParser::Float4x3 - 66)) - | (1ULL << (azslParser::Float4x4 - 66)) - | (1ULL << (azslParser::Half - 66)) - | (1ULL << (azslParser::Half1 - 66)) - | (1ULL << (azslParser::Half2 - 66)) - | (1ULL << (azslParser::Half3 - 66)) - | (1ULL << (azslParser::Half4 - 66)) - | (1ULL << (azslParser::Half1x1 - 66)) - | (1ULL << (azslParser::Half1x2 - 66)) - | (1ULL << (azslParser::Half1x3 - 66)) - | (1ULL << (azslParser::Half1x4 - 66)) - | (1ULL << (azslParser::Half2x1 - 66)) - | (1ULL << (azslParser::Half2x2 - 66)) - | (1ULL << (azslParser::Half2x3 - 66)) - | (1ULL << (azslParser::Half2x4 - 66)) - | (1ULL << (azslParser::Half3x1 - 66)) - | (1ULL << (azslParser::Half3x2 - 66)) - | (1ULL << (azslParser::Half3x3 - 66)) - | (1ULL << (azslParser::Half3x4 - 66)) - | (1ULL << (azslParser::Half4x1 - 66)) - | (1ULL << (azslParser::Half4x2 - 66)) - | (1ULL << (azslParser::Half4x3 - 66)) - | (1ULL << (azslParser::Half4x4 - 66)) - | (1ULL << (azslParser::Int - 66)) - | (1ULL << (azslParser::Int32_t - 66)) - | (1ULL << (azslParser::Int64_t - 66)) - | (1ULL << (azslParser::Int1 - 66)) - | (1ULL << (azslParser::Int2 - 66)) - | (1ULL << (azslParser::Int3 - 66)) - | (1ULL << (azslParser::Int4 - 66)) - | (1ULL << (azslParser::Int1x1 - 66)) - | (1ULL << (azslParser::Int1x2 - 66)) - | (1ULL << (azslParser::Int1x3 - 66)) - | (1ULL << (azslParser::Int1x4 - 66)) - | (1ULL << (azslParser::Int2x1 - 66)) - | (1ULL << (azslParser::Int2x2 - 66)))) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & ((1ULL << (azslParser::Int2x3 - 130)) - | (1ULL << (azslParser::Int2x4 - 130)) - | (1ULL << (azslParser::Int3x1 - 130)) - | (1ULL << (azslParser::Int3x2 - 130)) - | (1ULL << (azslParser::Int3x3 - 130)) - | (1ULL << (azslParser::Int3x4 - 130)) - | (1ULL << (azslParser::Int4x1 - 130)) - | (1ULL << (azslParser::Int4x2 - 130)) - | (1ULL << (azslParser::Int4x3 - 130)) - | (1ULL << (azslParser::Int4x4 - 130)) - | (1ULL << (azslParser::Matrix - 130)))) != 0) || ((((_la - 204) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 204)) & ((1ULL << (azslParser::Uint - 204)) - | (1ULL << (azslParser::Uint32_t - 204)) - | (1ULL << (azslParser::Uint64_t - 204)) - | (1ULL << (azslParser::UnsignedInt - 204)) - | (1ULL << (azslParser::Uint1 - 204)) - | (1ULL << (azslParser::Uint2 - 204)) - | (1ULL << (azslParser::Uint3 - 204)) - | (1ULL << (azslParser::Uint4 - 204)) - | (1ULL << (azslParser::Uint1x1 - 204)) - | (1ULL << (azslParser::Uint1x2 - 204)) - | (1ULL << (azslParser::Uint1x3 - 204)) - | (1ULL << (azslParser::Uint1x4 - 204)) - | (1ULL << (azslParser::Uint2x1 - 204)) - | (1ULL << (azslParser::Uint2x2 - 204)) - | (1ULL << (azslParser::Uint2x3 - 204)) - | (1ULL << (azslParser::Uint2x4 - 204)) - | (1ULL << (azslParser::Uint3x1 - 204)) - | (1ULL << (azslParser::Uint3x2 - 204)) - | (1ULL << (azslParser::Uint3x3 - 204)) - | (1ULL << (azslParser::Uint3x4 - 204)) - | (1ULL << (azslParser::Uint4x1 - 204)) - | (1ULL << (azslParser::Uint4x2 - 204)) - | (1ULL << (azslParser::Uint4x3 - 204)) - | (1ULL << (azslParser::Uint4x4 - 204)) - | (1ULL << (azslParser::Dword - 204)) - | (1ULL << (azslParser::Dword1 - 204)) - | (1ULL << (azslParser::Dword2 - 204)) - | (1ULL << (azslParser::Dword3 - 204)) - | (1ULL << (azslParser::Dword4 - 204)) - | (1ULL << (azslParser::Dword1x1 - 204)) - | (1ULL << (azslParser::Dword1x2 - 204)) - | (1ULL << (azslParser::Dword1x3 - 204)) - | (1ULL << (azslParser::Dword1x4 - 204)) - | (1ULL << (azslParser::Dword2x1 - 204)) - | (1ULL << (azslParser::Dword2x2 - 204)) - | (1ULL << (azslParser::Dword2x3 - 204)) - | (1ULL << (azslParser::Dword2x4 - 204)) - | (1ULL << (azslParser::Dword3x1 - 204)) - | (1ULL << (azslParser::Dword3x2 - 204)) - | (1ULL << (azslParser::Dword3x3 - 204)) - | (1ULL << (azslParser::Dword3x4 - 204)) - | (1ULL << (azslParser::Dword4x1 - 204)) - | (1ULL << (azslParser::Dword4x2 - 204)) - | (1ULL << (azslParser::Dword4x3 - 204)) - | (1ULL << (azslParser::Dword4x4 - 204)) - | (1ULL << (azslParser::Vector - 204)))) != 0) || ((((_la - 297) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 297)) & ((1ULL << (azslParser::LeftParen - 297)) - | (1ULL << (azslParser::Plus - 297)) - | (1ULL << (azslParser::PlusPlus - 297)) - | (1ULL << (azslParser::Minus - 297)) - | (1ULL << (azslParser::MinusMinus - 297)) - | (1ULL << (azslParser::Not - 297)) - | (1ULL << (azslParser::Tilde - 297)) - | (1ULL << (azslParser::ColonColon - 297)) - | (1ULL << (azslParser::True - 297)) - | (1ULL << (azslParser::False - 297)))) != 0) || ((((_la - 361) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 361)) & ((1ULL << (azslParser::Identifier - 361)) - | (1ULL << (azslParser::IntegerLiteral - 361)) - | (1ULL << (azslParser::FloatLiteral - 361)) - | (1ULL << (azslParser::StringLiteral - 361)))) != 0)) { - setState(820); + | (1ULL << azslParser::Double4x4))) != 0) || ((((_la - 67) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 67)) & ((1ULL << (azslParser::Float - 67)) + | (1ULL << (azslParser::Float1 - 67)) + | (1ULL << (azslParser::Float2 - 67)) + | (1ULL << (azslParser::Float3 - 67)) + | (1ULL << (azslParser::Float4 - 67)) + | (1ULL << (azslParser::Float1x1 - 67)) + | (1ULL << (azslParser::Float1x2 - 67)) + | (1ULL << (azslParser::Float1x3 - 67)) + | (1ULL << (azslParser::Float1x4 - 67)) + | (1ULL << (azslParser::Float2x1 - 67)) + | (1ULL << (azslParser::Float2x2 - 67)) + | (1ULL << (azslParser::Float2x3 - 67)) + | (1ULL << (azslParser::Float2x4 - 67)) + | (1ULL << (azslParser::Float3x1 - 67)) + | (1ULL << (azslParser::Float3x2 - 67)) + | (1ULL << (azslParser::Float3x3 - 67)) + | (1ULL << (azslParser::Float3x4 - 67)) + | (1ULL << (azslParser::Float4x1 - 67)) + | (1ULL << (azslParser::Float4x2 - 67)) + | (1ULL << (azslParser::Float4x3 - 67)) + | (1ULL << (azslParser::Float4x4 - 67)) + | (1ULL << (azslParser::Half - 67)) + | (1ULL << (azslParser::Half1 - 67)) + | (1ULL << (azslParser::Half2 - 67)) + | (1ULL << (azslParser::Half3 - 67)) + | (1ULL << (azslParser::Half4 - 67)) + | (1ULL << (azslParser::Half1x1 - 67)) + | (1ULL << (azslParser::Half1x2 - 67)) + | (1ULL << (azslParser::Half1x3 - 67)) + | (1ULL << (azslParser::Half1x4 - 67)) + | (1ULL << (azslParser::Half2x1 - 67)) + | (1ULL << (azslParser::Half2x2 - 67)) + | (1ULL << (azslParser::Half2x3 - 67)) + | (1ULL << (azslParser::Half2x4 - 67)) + | (1ULL << (azslParser::Half3x1 - 67)) + | (1ULL << (azslParser::Half3x2 - 67)) + | (1ULL << (azslParser::Half3x3 - 67)) + | (1ULL << (azslParser::Half3x4 - 67)) + | (1ULL << (azslParser::Half4x1 - 67)) + | (1ULL << (azslParser::Half4x2 - 67)) + | (1ULL << (azslParser::Half4x3 - 67)) + | (1ULL << (azslParser::Half4x4 - 67)) + | (1ULL << (azslParser::Int - 67)) + | (1ULL << (azslParser::Int16_t - 67)) + | (1ULL << (azslParser::Int32_t - 67)) + | (1ULL << (azslParser::Int64_t - 67)) + | (1ULL << (azslParser::Int1 - 67)) + | (1ULL << (azslParser::Int2 - 67)) + | (1ULL << (azslParser::Int3 - 67)) + | (1ULL << (azslParser::Int4 - 67)) + | (1ULL << (azslParser::Int1x1 - 67)) + | (1ULL << (azslParser::Int1x2 - 67)) + | (1ULL << (azslParser::Int1x3 - 67)) + | (1ULL << (azslParser::Int1x4 - 67)))) != 0) || ((((_la - 131) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 131)) & ((1ULL << (azslParser::Int2x1 - 131)) + | (1ULL << (azslParser::Int2x2 - 131)) + | (1ULL << (azslParser::Int2x3 - 131)) + | (1ULL << (azslParser::Int2x4 - 131)) + | (1ULL << (azslParser::Int3x1 - 131)) + | (1ULL << (azslParser::Int3x2 - 131)) + | (1ULL << (azslParser::Int3x3 - 131)) + | (1ULL << (azslParser::Int3x4 - 131)) + | (1ULL << (azslParser::Int4x1 - 131)) + | (1ULL << (azslParser::Int4x2 - 131)) + | (1ULL << (azslParser::Int4x3 - 131)) + | (1ULL << (azslParser::Int4x4 - 131)) + | (1ULL << (azslParser::Matrix - 131)))) != 0) || ((((_la - 210) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 210)) & ((1ULL << (azslParser::Uint - 210)) + | (1ULL << (azslParser::Uint1 - 210)) + | (1ULL << (azslParser::Uint2 - 210)) + | (1ULL << (azslParser::Uint3 - 210)) + | (1ULL << (azslParser::Uint4 - 210)) + | (1ULL << (azslParser::Uint1x1 - 210)) + | (1ULL << (azslParser::Uint1x2 - 210)) + | (1ULL << (azslParser::Uint1x3 - 210)) + | (1ULL << (azslParser::Uint1x4 - 210)) + | (1ULL << (azslParser::Uint2x1 - 210)) + | (1ULL << (azslParser::Uint2x2 - 210)) + | (1ULL << (azslParser::Uint2x3 - 210)) + | (1ULL << (azslParser::Uint2x4 - 210)) + | (1ULL << (azslParser::Uint3x1 - 210)) + | (1ULL << (azslParser::Uint3x2 - 210)) + | (1ULL << (azslParser::Uint3x3 - 210)) + | (1ULL << (azslParser::Uint3x4 - 210)) + | (1ULL << (azslParser::Uint4x1 - 210)) + | (1ULL << (azslParser::Uint4x2 - 210)) + | (1ULL << (azslParser::Uint4x3 - 210)) + | (1ULL << (azslParser::Uint4x4 - 210)) + | (1ULL << (azslParser::Uint16_t - 210)) + | (1ULL << (azslParser::Uint32_t - 210)) + | (1ULL << (azslParser::Uint64_t - 210)) + | (1ULL << (azslParser::Dword - 210)) + | (1ULL << (azslParser::Dword1 - 210)) + | (1ULL << (azslParser::Dword2 - 210)) + | (1ULL << (azslParser::Dword3 - 210)) + | (1ULL << (azslParser::Dword4 - 210)) + | (1ULL << (azslParser::Dword1x1 - 210)) + | (1ULL << (azslParser::Dword1x2 - 210)) + | (1ULL << (azslParser::Dword1x3 - 210)) + | (1ULL << (azslParser::Dword1x4 - 210)) + | (1ULL << (azslParser::Dword2x1 - 210)) + | (1ULL << (azslParser::Dword2x2 - 210)) + | (1ULL << (azslParser::Dword2x3 - 210)) + | (1ULL << (azslParser::Dword2x4 - 210)) + | (1ULL << (azslParser::Dword3x1 - 210)) + | (1ULL << (azslParser::Dword3x2 - 210)) + | (1ULL << (azslParser::Dword3x3 - 210)) + | (1ULL << (azslParser::Dword3x4 - 210)) + | (1ULL << (azslParser::Dword4x1 - 210)) + | (1ULL << (azslParser::Dword4x2 - 210)) + | (1ULL << (azslParser::Dword4x3 - 210)) + | (1ULL << (azslParser::Dword4x4 - 210)) + | (1ULL << (azslParser::Vector - 210)))) != 0) || ((((_la - 305) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 305)) & ((1ULL << (azslParser::LeftParen - 305)) + | (1ULL << (azslParser::Plus - 305)) + | (1ULL << (azslParser::PlusPlus - 305)) + | (1ULL << (azslParser::Minus - 305)) + | (1ULL << (azslParser::MinusMinus - 305)) + | (1ULL << (azslParser::Not - 305)) + | (1ULL << (azslParser::Tilde - 305)) + | (1ULL << (azslParser::ColonColon - 305)) + | (1ULL << (azslParser::True - 305)) + | (1ULL << (azslParser::False - 305)))) != 0) || ((((_la - 369) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 369)) & ((1ULL << (azslParser::Identifier - 369)) + | (1ULL << (azslParser::IntegerLiteral - 369)) + | (1ULL << (azslParser::FloatLiteral - 369)) + | (1ULL << (azslParser::StringLiteral - 369)))) != 0)) { + setState(816); antlrcpp::downCast(_localctx)->Dimension = expression(0); } - setState(823); + setState(819); match(azslParser::RightBracket); } @@ -9406,25 +9202,25 @@ azslParser::PackOffsetNodeContext* azslParser::packOffsetNode() { }); try { enterOuterAlt(_localctx, 1); - setState(825); + setState(821); match(azslParser::Colon); - setState(826); + setState(822); antlrcpp::downCast(_localctx)->PackoffsetKeyword = match(azslParser::Packoffset); - setState(827); + setState(823); match(azslParser::LeftParen); - setState(828); + setState(824); antlrcpp::downCast(_localctx)->PackOffsetRegister = match(azslParser::Identifier); - setState(831); + setState(827); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::Dot) { - setState(829); + setState(825); match(azslParser::Dot); - setState(830); + setState(826); antlrcpp::downCast(_localctx)->PackOffsetComponent = match(azslParser::Identifier); } - setState(833); + setState(829); match(azslParser::RightParen); } @@ -9471,7 +9267,6 @@ void azslParser::StorageFlagsContext::exitRule(tree::ParseTreeListener *listener azslParser::StorageFlagsContext* azslParser::storageFlags() { StorageFlagsContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 120, azslParser::RuleStorageFlags); - size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -9481,41 +9276,19 @@ azslParser::StorageFlagsContext* azslParser::storageFlags() { exitRule(); }); try { + size_t alt; enterOuterAlt(_localctx, 1); - setState(838); + setState(834); _errHandler->sync(this); - _la = _input->LA(1); - while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << azslParser::Centroid) - | (1ULL << azslParser::ColumnMajor) - | (1ULL << azslParser::Const) - | (1ULL << azslParser::Extern))) != 0) || ((((_la - 88) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 88)) & ((1ULL << (azslParser::Groupshared - 88)) - | (1ULL << (azslParser::In - 88)) - | (1ULL << (azslParser::Inline - 88)) - | (1ULL << (azslParser::Rootconstant - 88)) - | (1ULL << (azslParser::Inout - 88)) - | (1ULL << (azslParser::Line_ - 88)) - | (1ULL << (azslParser::LineAdj - 88)) - | (1ULL << (azslParser::Linear - 88)) - | (1ULL << (azslParser::Nointerpolation - 88)) - | (1ULL << (azslParser::Noperspective - 88)) - | (1ULL << (azslParser::Option - 88)) - | (1ULL << (azslParser::Out - 88)))) != 0) || ((((_la - 155) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 155)) & ((1ULL << (azslParser::Point - 155)) - | (1ULL << (azslParser::Precise - 155)) - | (1ULL << (azslParser::RowMajor - 155)) - | (1ULL << (azslParser::Sample - 155)) - | (1ULL << (azslParser::Shared - 155)) - | (1ULL << (azslParser::Static - 155)) - | (1ULL << (azslParser::Triangle - 155)) - | (1ULL << (azslParser::TriangleAdj - 155)) - | (1ULL << (azslParser::Uniform - 155)))) != 0) || _la == azslParser::Volatile) { - setState(835); - storageFlag(); - setState(840); + alt = getInterpreter()->adaptivePredict(_input, 70, _ctx); + while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1 + 1) { + setState(831); + storageFlag(); + } + setState(836); _errHandler->sync(this); - _la = _input->LA(1); + alt = getInterpreter()->adaptivePredict(_input, 70, _ctx); } } @@ -9538,6 +9311,10 @@ tree::TerminalNode* azslParser::StorageFlagContext::Const() { return getToken(azslParser::Const, 0); } +tree::TerminalNode* azslParser::StorageFlagContext::Unsigned() { + return getToken(azslParser::Unsigned, 0); +} + tree::TerminalNode* azslParser::StorageFlagContext::RowMajor() { return getToken(azslParser::RowMajor, 0); } @@ -9586,6 +9363,18 @@ tree::TerminalNode* azslParser::StorageFlagContext::Volatile() { return getToken(azslParser::Volatile, 0); } +tree::TerminalNode* azslParser::StorageFlagContext::Globallycoherent() { + return getToken(azslParser::Globallycoherent, 0); +} + +tree::TerminalNode* azslParser::StorageFlagContext::SNorm() { + return getToken(azslParser::SNorm, 0); +} + +tree::TerminalNode* azslParser::StorageFlagContext::UNorm() { + return getToken(azslParser::UNorm, 0); +} + tree::TerminalNode* azslParser::StorageFlagContext::Linear() { return getToken(azslParser::Linear, 0); } @@ -9638,6 +9427,10 @@ tree::TerminalNode* azslParser::StorageFlagContext::TriangleAdj() { return getToken(azslParser::TriangleAdj, 0); } +tree::TerminalNode* azslParser::StorageFlagContext::Identifier() { + return getToken(azslParser::Identifier, 0); +} + size_t azslParser::StorageFlagContext::getRuleIndex() const { return azslParser::RuleStorageFlag; @@ -9669,34 +9462,39 @@ azslParser::StorageFlagContext* azslParser::storageFlag() { }); try { enterOuterAlt(_localctx, 1); - setState(841); + setState(837); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << azslParser::Centroid) | (1ULL << azslParser::ColumnMajor) - | (1ULL << azslParser::Const) - | (1ULL << azslParser::Extern))) != 0) || ((((_la - 88) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 88)) & ((1ULL << (azslParser::Groupshared - 88)) - | (1ULL << (azslParser::In - 88)) - | (1ULL << (azslParser::Inline - 88)) - | (1ULL << (azslParser::Rootconstant - 88)) - | (1ULL << (azslParser::Inout - 88)) - | (1ULL << (azslParser::Line_ - 88)) - | (1ULL << (azslParser::LineAdj - 88)) - | (1ULL << (azslParser::Linear - 88)) - | (1ULL << (azslParser::Nointerpolation - 88)) - | (1ULL << (azslParser::Noperspective - 88)) - | (1ULL << (azslParser::Option - 88)) - | (1ULL << (azslParser::Out - 88)))) != 0) || ((((_la - 155) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 155)) & ((1ULL << (azslParser::Point - 155)) - | (1ULL << (azslParser::Precise - 155)) - | (1ULL << (azslParser::RowMajor - 155)) - | (1ULL << (azslParser::Sample - 155)) - | (1ULL << (azslParser::Shared - 155)) - | (1ULL << (azslParser::Static - 155)) - | (1ULL << (azslParser::Triangle - 155)) - | (1ULL << (azslParser::TriangleAdj - 155)) - | (1ULL << (azslParser::Uniform - 155)))) != 0) || _la == azslParser::Volatile)) { + | (1ULL << azslParser::Const))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (azslParser::Extern - 64)) + | (1ULL << (azslParser::Groupshared - 64)) + | (1ULL << (azslParser::Globallycoherent - 64)) + | (1ULL << (azslParser::In - 64)) + | (1ULL << (azslParser::Inline - 64)) + | (1ULL << (azslParser::Rootconstant - 64)) + | (1ULL << (azslParser::Inout - 64)))) != 0) || ((((_la - 144) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 144)) & ((1ULL << (azslParser::Line_ - 144)) + | (1ULL << (azslParser::LineAdj - 144)) + | (1ULL << (azslParser::Linear - 144)) + | (1ULL << (azslParser::Nointerpolation - 144)) + | (1ULL << (azslParser::Noperspective - 144)) + | (1ULL << (azslParser::Option - 144)) + | (1ULL << (azslParser::Out - 144)) + | (1ULL << (azslParser::Point - 144)) + | (1ULL << (azslParser::Precise - 144)) + | (1ULL << (azslParser::RowMajor - 144)) + | (1ULL << (azslParser::Sample - 144)) + | (1ULL << (azslParser::Shared - 144)) + | (1ULL << (azslParser::SNorm - 144)) + | (1ULL << (azslParser::Static - 144)) + | (1ULL << (azslParser::Triangle - 144)) + | (1ULL << (azslParser::TriangleAdj - 144)))) != 0) || ((((_la - 209) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 209)) & ((1ULL << (azslParser::Uniform - 209)) + | (1ULL << (azslParser::UNorm - 209)) + | (1ULL << (azslParser::Unsigned - 209)) + | (1ULL << (azslParser::Volatile - 209)))) != 0) || _la == azslParser::Identifier)) { _errHandler->recoverInline(this); } else { @@ -9720,6 +9518,10 @@ azslParser::TypeContext::TypeContext(ParserRuleContext *parent, size_t invokingS : ParserRuleContext(parent, invokingState) { } +azslParser::StorageFlagsContext* azslParser::TypeContext::storageFlags() { + return getRuleContext(0); +} + azslParser::PredefinedTypeContext* azslParser::TypeContext::predefinedType() { return getRuleContext(0); } @@ -9732,6 +9534,10 @@ azslParser::TypeofExpressionContext* azslParser::TypeContext::typeofExpression() return getRuleContext(0); } +tree::TerminalNode* azslParser::TypeContext::Void() { + return getToken(azslParser::Void, 0); +} + size_t azslParser::TypeContext::getRuleIndex() const { return azslParser::RuleType; @@ -9761,7 +9567,10 @@ azslParser::TypeContext* azslParser::type() { exitRule(); }); try { - setState(846); + enterOuterAlt(_localctx, 1); + setState(839); + storageFlags(); + setState(844); _errHandler->sync(this); switch (_input->LA(1)) { case azslParser::AppendStructuredBuffer: @@ -9857,6 +9666,7 @@ azslParser::TypeContext* azslParser::type() { case azslParser::Half4x4: case azslParser::InputPatch: case azslParser::Int: + case azslParser::Int16_t: case azslParser::Int32_t: case azslParser::Int64_t: case azslParser::Int1: @@ -9904,6 +9714,7 @@ azslParser::TypeContext* azslParser::type() { case azslParser::Sampler: case azslParser::SamplerCapitalS: case azslParser::SamplerComparisonState: + case azslParser::SamplerStateCamel: case azslParser::SamplerState: case azslParser::StructuredBuffer: case azslParser::SubpassInput: @@ -9919,9 +9730,6 @@ azslParser::TypeContext* azslParser::type() { case azslParser::TextureCubeArray: case azslParser::TriangleStream: case azslParser::Uint: - case azslParser::Uint32_t: - case azslParser::Uint64_t: - case azslParser::UnsignedInt: case azslParser::Uint1: case azslParser::Uint2: case azslParser::Uint3: @@ -9942,6 +9750,9 @@ azslParser::TypeContext* azslParser::type() { case azslParser::Uint4x2: case azslParser::Uint4x3: case azslParser::Uint4x4: + case azslParser::Uint16_t: + case azslParser::Uint32_t: + case azslParser::Uint64_t: case azslParser::Dword: case azslParser::Dword1: case azslParser::Dword2: @@ -9973,8 +9784,7 @@ azslParser::TypeContext* azslParser::type() { case azslParser::RaytracingPipelineConfig1: case azslParser::TriangleHitGroup: case azslParser::ProceduralPrimitiveHitGroup: { - enterOuterAlt(_localctx, 1); - setState(843); + setState(840); predefinedType(); break; } @@ -9985,19 +9795,23 @@ azslParser::TypeContext* azslParser::type() { case azslParser::Struct: case azslParser::ColonColon: case azslParser::Identifier: { - enterOuterAlt(_localctx, 2); - setState(844); + setState(841); userDefinedType(); break; } case azslParser::KW_Typeof: { - enterOuterAlt(_localctx, 3); - setState(845); + setState(842); typeofExpression(); break; } + case azslParser::Void: { + setState(843); + match(azslParser::Void); + break; + } + default: throw NoViableAltException(this); } @@ -10119,131 +9933,131 @@ azslParser::PredefinedTypeContext* azslParser::predefinedType() { exitRule(); }); try { - setState(866); + setState(864); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 72, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(848); + setState(846); bufferPredefinedType(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(849); + setState(847); byteAddressBufferTypes(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(850); + setState(848); patchPredefinedType(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(851); + setState(849); matrixType(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(852); + setState(850); genericMatrixPredefinedType(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(853); + setState(851); samplerStatePredefinedType(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(854); + setState(852); scalarType(); break; } case 8: { enterOuterAlt(_localctx, 8); - setState(855); + setState(853); streamOutputPredefinedType(); break; } case 9: { enterOuterAlt(_localctx, 9); - setState(856); + setState(854); structuredBufferPredefinedType(); break; } case 10: { enterOuterAlt(_localctx, 10); - setState(857); + setState(855); texturePredefinedType(); break; } case 11: { enterOuterAlt(_localctx, 11); - setState(858); + setState(856); genericTexturePredefinedType(); break; } case 12: { enterOuterAlt(_localctx, 12); - setState(859); + setState(857); msTexturePredefinedType(); break; } case 13: { enterOuterAlt(_localctx, 13); - setState(860); + setState(858); vectorType(); break; } case 14: { enterOuterAlt(_localctx, 14); - setState(861); + setState(859); genericVectorType(); break; } case 15: { enterOuterAlt(_localctx, 15); - setState(862); + setState(860); constantBufferTemplated(); break; } case 16: { enterOuterAlt(_localctx, 16); - setState(863); + setState(861); otherViewResourceType(); break; } case 17: { enterOuterAlt(_localctx, 17); - setState(864); + setState(862); subobjectType(); break; } case 18: { enterOuterAlt(_localctx, 18); - setState(865); + setState(863); rtxBuiltInTypes(); break; } @@ -10335,18 +10149,18 @@ azslParser::SubobjectTypeContext* azslParser::subobjectType() { }); try { enterOuterAlt(_localctx, 1); - setState(868); + setState(866); _la = _input->LA(1); - if (!(((((_la - 253) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 253)) & ((1ULL << (azslParser::StateObjectConfig - 253)) - | (1ULL << (azslParser::LocalRootSignature - 253)) - | (1ULL << (azslParser::GlobalRootSignature - 253)) - | (1ULL << (azslParser::SubobjectToExportsAssociation - 253)) - | (1ULL << (azslParser::RaytracingShaderConfig - 253)) - | (1ULL << (azslParser::RaytracingPipelineConfig - 253)) - | (1ULL << (azslParser::RaytracingPipelineConfig1 - 253)) - | (1ULL << (azslParser::TriangleHitGroup - 253)) - | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 253)))) != 0))) { + if (!(((((_la - 261) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 261)) & ((1ULL << (azslParser::StateObjectConfig - 261)) + | (1ULL << (azslParser::LocalRootSignature - 261)) + | (1ULL << (azslParser::GlobalRootSignature - 261)) + | (1ULL << (azslParser::SubobjectToExportsAssociation - 261)) + | (1ULL << (azslParser::RaytracingShaderConfig - 261)) + | (1ULL << (azslParser::RaytracingPipelineConfig - 261)) + | (1ULL << (azslParser::RaytracingPipelineConfig1 - 261)) + | (1ULL << (azslParser::TriangleHitGroup - 261)) + | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 261)))) != 0))) { _errHandler->recoverInline(this); } else { @@ -10404,7 +10218,7 @@ azslParser::OtherViewResourceTypeContext* azslParser::otherViewResourceType() { }); try { enterOuterAlt(_localctx, 1); - setState(870); + setState(868); match(azslParser::RaytracingAccelerationStructure); } @@ -10462,7 +10276,7 @@ azslParser::RtxBuiltInTypesContext* azslParser::rtxBuiltInTypes() { }); try { enterOuterAlt(_localctx, 1); - setState(872); + setState(870); _la = _input->LA(1); if (!(_la == azslParser::BuiltInTriangleIntersectionAttributes || _la == azslParser::RayDesc)) { _errHandler->recoverInline(this); @@ -10534,13 +10348,13 @@ azslParser::BufferPredefinedTypeContext* azslParser::bufferPredefinedType() { }); try { enterOuterAlt(_localctx, 1); - setState(874); + setState(872); bufferType(); - setState(875); + setState(873); match(azslParser::Less); - setState(876); + setState(874); scalarOrVectorOrMatrixType(); - setState(877); + setState(875); match(azslParser::Greater); } @@ -10602,7 +10416,7 @@ azslParser::BufferTypeContext* azslParser::bufferType() { }); try { enterOuterAlt(_localctx, 1); - setState(879); + setState(877); _la = _input->LA(1); if (!(_la == azslParser::Buffer || _la == azslParser::RasterizerOrderedBuffer @@ -10673,7 +10487,7 @@ azslParser::ByteAddressBufferTypesContext* azslParser::byteAddressBufferTypes() }); try { enterOuterAlt(_localctx, 1); - setState(881); + setState(879); _la = _input->LA(1); if (!(_la == azslParser::ByteAddressBuffer || _la == azslParser::RasterizerOrderedByteAddressBuffer @@ -10755,17 +10569,17 @@ azslParser::PatchPredefinedTypeContext* azslParser::patchPredefinedType() { }); try { enterOuterAlt(_localctx, 1); - setState(883); + setState(881); patchType(); - setState(884); + setState(882); match(azslParser::Less); - setState(885); + setState(883); antlrcpp::downCast(_localctx)->Name = userDefinedType(); - setState(886); + setState(884); match(azslParser::Comma); - setState(887); + setState(885); antlrcpp::downCast(_localctx)->ControlPoints = match(azslParser::IntegerLiteral); - setState(888); + setState(886); match(azslParser::Greater); } @@ -10823,7 +10637,7 @@ azslParser::PatchTypeContext* azslParser::patchType() { }); try { enterOuterAlt(_localctx, 1); - setState(890); + setState(888); _la = _input->LA(1); if (!(_la == azslParser::InputPatch @@ -10863,6 +10677,10 @@ tree::TerminalNode* azslParser::SamplerStatePredefinedTypeContext::SamplerState( return getToken(azslParser::SamplerState, 0); } +tree::TerminalNode* azslParser::SamplerStatePredefinedTypeContext::SamplerStateCamel() { + return getToken(azslParser::SamplerStateCamel, 0); +} + tree::TerminalNode* azslParser::SamplerStatePredefinedTypeContext::SamplerComparisonState() { return getToken(azslParser::SamplerComparisonState, 0); } @@ -10898,13 +10716,14 @@ azslParser::SamplerStatePredefinedTypeContext* azslParser::samplerStatePredefine }); try { enterOuterAlt(_localctx, 1); - setState(892); + setState(890); _la = _input->LA(1); - if (!(((((_la - 180) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 180)) & ((1ULL << (azslParser::Sampler - 180)) - | (1ULL << (azslParser::SamplerCapitalS - 180)) - | (1ULL << (azslParser::SamplerComparisonState - 180)) - | (1ULL << (azslParser::SamplerState - 180)))) != 0))) { + if (!(((((_la - 183) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 183)) & ((1ULL << (azslParser::Sampler - 183)) + | (1ULL << (azslParser::SamplerCapitalS - 183)) + | (1ULL << (azslParser::SamplerComparisonState - 183)) + | (1ULL << (azslParser::SamplerStateCamel - 183)) + | (1ULL << (azslParser::SamplerState - 183)))) != 0))) { _errHandler->recoverInline(this); } else { @@ -10936,6 +10755,10 @@ tree::TerminalNode* azslParser::ScalarTypeContext::Int() { return getToken(azslParser::Int, 0); } +tree::TerminalNode* azslParser::ScalarTypeContext::Int16_t() { + return getToken(azslParser::Int16_t, 0); +} + tree::TerminalNode* azslParser::ScalarTypeContext::Int32_t() { return getToken(azslParser::Int32_t, 0); } @@ -10948,6 +10771,10 @@ tree::TerminalNode* azslParser::ScalarTypeContext::Uint() { return getToken(azslParser::Uint, 0); } +tree::TerminalNode* azslParser::ScalarTypeContext::Uint16_t() { + return getToken(azslParser::Uint16_t, 0); +} + tree::TerminalNode* azslParser::ScalarTypeContext::Uint32_t() { return getToken(azslParser::Uint32_t, 0); } @@ -10956,10 +10783,6 @@ tree::TerminalNode* azslParser::ScalarTypeContext::Uint64_t() { return getToken(azslParser::Uint64_t, 0); } -tree::TerminalNode* azslParser::ScalarTypeContext::UnsignedInt() { - return getToken(azslParser::UnsignedInt, 0); -} - tree::TerminalNode* azslParser::ScalarTypeContext::Dword() { return getToken(azslParser::Dword, 0); } @@ -11007,21 +10830,22 @@ azslParser::ScalarTypeContext* azslParser::scalarType() { }); try { enterOuterAlt(_localctx, 1); - setState(894); + setState(892); _la = _input->LA(1); if (!(_la == azslParser::Bool - || _la == azslParser::Double || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & ((1ULL << (azslParser::Float - 66)) - | (1ULL << (azslParser::Half - 66)) - | (1ULL << (azslParser::Int - 66)) - | (1ULL << (azslParser::Int32_t - 66)) - | (1ULL << (azslParser::Int64_t - 66)))) != 0) || ((((_la - 204) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 204)) & ((1ULL << (azslParser::Uint - 204)) - | (1ULL << (azslParser::Uint32_t - 204)) - | (1ULL << (azslParser::Uint64_t - 204)) - | (1ULL << (azslParser::UnsignedInt - 204)) - | (1ULL << (azslParser::Dword - 204)))) != 0))) { + || _la == azslParser::Double || ((((_la - 67) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 67)) & ((1ULL << (azslParser::Float - 67)) + | (1ULL << (azslParser::Half - 67)) + | (1ULL << (azslParser::Int - 67)) + | (1ULL << (azslParser::Int16_t - 67)) + | (1ULL << (azslParser::Int32_t - 67)) + | (1ULL << (azslParser::Int64_t - 67)))) != 0) || ((((_la - 210) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 210)) & ((1ULL << (azslParser::Uint - 210)) + | (1ULL << (azslParser::Uint16_t - 210)) + | (1ULL << (azslParser::Uint32_t - 210)) + | (1ULL << (azslParser::Uint64_t - 210)) + | (1ULL << (azslParser::Dword - 210)))) != 0))) { _errHandler->recoverInline(this); } else { @@ -11091,13 +10915,13 @@ azslParser::StreamOutputPredefinedTypeContext* azslParser::streamOutputPredefine }); try { enterOuterAlt(_localctx, 1); - setState(896); + setState(894); streamOutputObjectType(); - setState(897); + setState(895); match(azslParser::Less); - setState(898); + setState(896); type(); - setState(899); + setState(897); match(azslParser::Greater); } @@ -11159,12 +10983,12 @@ azslParser::StreamOutputObjectTypeContext* azslParser::streamOutputObjectType() }); try { enterOuterAlt(_localctx, 1); - setState(901); + setState(899); _la = _input->LA(1); - if (!(((((_la - 144) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 144)) & ((1ULL << (azslParser::LineStream - 144)) - | (1ULL << (azslParser::PointStream - 144)) - | (1ULL << (azslParser::TriangleStream - 144)))) != 0))) { + if (!(((((_la - 147) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 147)) & ((1ULL << (azslParser::LineStream - 147)) + | (1ULL << (azslParser::PointStream - 147)) + | (1ULL << (azslParser::TriangleStream - 147)))) != 0))) { _errHandler->recoverInline(this); } else { @@ -11234,13 +11058,13 @@ azslParser::StructuredBufferPredefinedTypeContext* azslParser::structuredBufferP }); try { enterOuterAlt(_localctx, 1); - setState(903); + setState(901); structuredBufferName(); - setState(904); + setState(902); match(azslParser::Less); - setState(905); + setState(903); type(); - setState(906); + setState(904); match(azslParser::Greater); } @@ -11310,14 +11134,14 @@ azslParser::StructuredBufferNameContext* azslParser::structuredBufferName() { }); try { enterOuterAlt(_localctx, 1); - setState(908); + setState(906); _la = _input->LA(1); if (!(_la == azslParser::AppendStructuredBuffer - || _la == azslParser::ConsumeStructuredBuffer || ((((_la - 160) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 160)) & ((1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 160)) - | (1ULL << (azslParser::RWStructuredBuffer - 160)) - | (1ULL << (azslParser::StructuredBuffer - 160)))) != 0))) { + || _la == azslParser::ConsumeStructuredBuffer || ((((_la - 163) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 163)) & ((1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 163)) + | (1ULL << (azslParser::RWStructuredBuffer - 163)) + | (1ULL << (azslParser::StructuredBuffer - 163)))) != 0))) { _errHandler->recoverInline(this); } else { @@ -11448,28 +11272,28 @@ azslParser::TextureTypeContext* azslParser::textureType() { }); try { enterOuterAlt(_localctx, 1); - setState(910); + setState(908); _la = _input->LA(1); - if (!(((((_la - 161) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 161)) & ((1ULL << (azslParser::RasterizerOrderedTexture1D - 161)) - | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 161)) - | (1ULL << (azslParser::RasterizerOrderedTexture2D - 161)) - | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 161)) - | (1ULL << (azslParser::RasterizerOrderedTexture3D - 161)) - | (1ULL << (azslParser::RWTexture1D - 161)) - | (1ULL << (azslParser::RWTexture1DArray - 161)) - | (1ULL << (azslParser::RWTexture2D - 161)) - | (1ULL << (azslParser::RWTexture2DArray - 161)) - | (1ULL << (azslParser::RWTexture3D - 161)) - | (1ULL << (azslParser::SubpassInput - 161)) - | (1ULL << (azslParser::SubpassInputMS - 161)) - | (1ULL << (azslParser::Texture1D - 161)) - | (1ULL << (azslParser::Texture1DArray - 161)) - | (1ULL << (azslParser::Texture2D - 161)) - | (1ULL << (azslParser::Texture2DArray - 161)) - | (1ULL << (azslParser::Texture3D - 161)) - | (1ULL << (azslParser::TextureCube - 161)) - | (1ULL << (azslParser::TextureCubeArray - 161)))) != 0))) { + if (!(((((_la - 164) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 164)) & ((1ULL << (azslParser::RasterizerOrderedTexture1D - 164)) + | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 164)) + | (1ULL << (azslParser::RasterizerOrderedTexture2D - 164)) + | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 164)) + | (1ULL << (azslParser::RasterizerOrderedTexture3D - 164)) + | (1ULL << (azslParser::RWTexture1D - 164)) + | (1ULL << (azslParser::RWTexture1DArray - 164)) + | (1ULL << (azslParser::RWTexture2D - 164)) + | (1ULL << (azslParser::RWTexture2DArray - 164)) + | (1ULL << (azslParser::RWTexture3D - 164)) + | (1ULL << (azslParser::SubpassInput - 164)) + | (1ULL << (azslParser::SubpassInputMS - 164)) + | (1ULL << (azslParser::Texture1D - 164)) + | (1ULL << (azslParser::Texture1DArray - 164)) + | (1ULL << (azslParser::Texture2D - 164)) + | (1ULL << (azslParser::Texture2DArray - 164)) + | (1ULL << (azslParser::Texture3D - 164)) + | (1ULL << (azslParser::TextureCube - 164)) + | (1ULL << (azslParser::TextureCubeArray - 164)))) != 0))) { _errHandler->recoverInline(this); } else { @@ -11527,7 +11351,7 @@ azslParser::TexturePredefinedTypeContext* azslParser::texturePredefinedType() { }); try { enterOuterAlt(_localctx, 1); - setState(912); + setState(910); textureType(); } @@ -11592,13 +11416,13 @@ azslParser::GenericTexturePredefinedTypeContext* azslParser::genericTexturePrede }); try { enterOuterAlt(_localctx, 1); - setState(914); + setState(912); textureType(); - setState(915); + setState(913); match(azslParser::Less); - setState(916); + setState(914); scalarOrVectorType(); - setState(917); + setState(915); match(azslParser::Greater); } @@ -11656,7 +11480,7 @@ azslParser::TextureTypeMSContext* azslParser::textureTypeMS() { }); try { enterOuterAlt(_localctx, 1); - setState(919); + setState(917); _la = _input->LA(1); if (!(_la == azslParser::Texture2DMS @@ -11739,23 +11563,23 @@ azslParser::MsTexturePredefinedTypeContext* azslParser::msTexturePredefinedType( }); try { enterOuterAlt(_localctx, 1); - setState(921); + setState(919); textureTypeMS(); - setState(922); + setState(920); match(azslParser::Less); - setState(923); + setState(921); scalarOrVectorType(); - setState(926); + setState(924); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::Comma) { - setState(924); + setState(922); match(azslParser::Comma); - setState(925); + setState(923); antlrcpp::downCast(_localctx)->Samples = match(azslParser::IntegerLiteral); } - setState(928); + setState(926); match(azslParser::Greater); } @@ -11921,7 +11745,7 @@ azslParser::VectorTypeContext* azslParser::vectorType() { }); try { enterOuterAlt(_localctx, 1); - setState(930); + setState(928); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << azslParser::Bool1) @@ -11931,28 +11755,28 @@ azslParser::VectorTypeContext* azslParser::vectorType() { | (1ULL << azslParser::Double1) | (1ULL << azslParser::Double2) | (1ULL << azslParser::Double3) - | (1ULL << azslParser::Double4))) != 0) || ((((_la - 67) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 67)) & ((1ULL << (azslParser::Float1 - 67)) - | (1ULL << (azslParser::Float2 - 67)) - | (1ULL << (azslParser::Float3 - 67)) - | (1ULL << (azslParser::Float4 - 67)) - | (1ULL << (azslParser::Half1 - 67)) - | (1ULL << (azslParser::Half2 - 67)) - | (1ULL << (azslParser::Half3 - 67)) - | (1ULL << (azslParser::Half4 - 67)) - | (1ULL << (azslParser::Int1 - 67)) - | (1ULL << (azslParser::Int2 - 67)) - | (1ULL << (azslParser::Int3 - 67)) - | (1ULL << (azslParser::Int4 - 67)))) != 0) || ((((_la - 208) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 208)) & ((1ULL << (azslParser::Uint1 - 208)) - | (1ULL << (azslParser::Uint2 - 208)) - | (1ULL << (azslParser::Uint3 - 208)) - | (1ULL << (azslParser::Uint4 - 208)) - | (1ULL << (azslParser::Dword1 - 208)) - | (1ULL << (azslParser::Dword2 - 208)) - | (1ULL << (azslParser::Dword3 - 208)) - | (1ULL << (azslParser::Dword4 - 208)) - | (1ULL << (azslParser::Vector - 208)))) != 0))) { + | (1ULL << azslParser::Double4))) != 0) || ((((_la - 68) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 68)) & ((1ULL << (azslParser::Float1 - 68)) + | (1ULL << (azslParser::Float2 - 68)) + | (1ULL << (azslParser::Float3 - 68)) + | (1ULL << (azslParser::Float4 - 68)) + | (1ULL << (azslParser::Half1 - 68)) + | (1ULL << (azslParser::Half2 - 68)) + | (1ULL << (azslParser::Half3 - 68)) + | (1ULL << (azslParser::Half4 - 68)) + | (1ULL << (azslParser::Int1 - 68)) + | (1ULL << (azslParser::Int2 - 68)) + | (1ULL << (azslParser::Int3 - 68)) + | (1ULL << (azslParser::Int4 - 68)))) != 0) || ((((_la - 211) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 211)) & ((1ULL << (azslParser::Uint1 - 211)) + | (1ULL << (azslParser::Uint2 - 211)) + | (1ULL << (azslParser::Uint3 - 211)) + | (1ULL << (azslParser::Uint4 - 211)) + | (1ULL << (azslParser::Dword1 - 211)) + | (1ULL << (azslParser::Dword2 - 211)) + | (1ULL << (azslParser::Dword3 - 211)) + | (1ULL << (azslParser::Dword4 - 211)) + | (1ULL << (azslParser::Vector - 211)))) != 0))) { _errHandler->recoverInline(this); } else { @@ -12030,17 +11854,17 @@ azslParser::GenericVectorTypeContext* azslParser::genericVectorType() { }); try { enterOuterAlt(_localctx, 1); - setState(932); + setState(930); match(azslParser::Vector); - setState(933); + setState(931); match(azslParser::Less); - setState(934); + setState(932); scalarType(); - setState(935); + setState(933); match(azslParser::Comma); - setState(936); + setState(934); antlrcpp::downCast(_localctx)->Size_ = match(azslParser::IntegerLiteral); - setState(937); + setState(935); match(azslParser::Greater); } @@ -12096,7 +11920,7 @@ azslParser::ScalarOrVectorTypeContext* azslParser::scalarOrVectorType() { exitRule(); }); try { - setState(941); + setState(939); _errHandler->sync(this); switch (_input->LA(1)) { case azslParser::Bool: @@ -12104,15 +11928,16 @@ azslParser::ScalarOrVectorTypeContext* azslParser::scalarOrVectorType() { case azslParser::Float: case azslParser::Half: case azslParser::Int: + case azslParser::Int16_t: case azslParser::Int32_t: case azslParser::Int64_t: case azslParser::Uint: + case azslParser::Uint16_t: case azslParser::Uint32_t: case azslParser::Uint64_t: - case azslParser::UnsignedInt: case azslParser::Dword: { enterOuterAlt(_localctx, 1); - setState(939); + setState(937); scalarType(); break; } @@ -12147,7 +11972,7 @@ azslParser::ScalarOrVectorTypeContext* azslParser::scalarOrVectorType() { case azslParser::Dword4: case azslParser::Vector: { enterOuterAlt(_localctx, 2); - setState(940); + setState(938); vectorType(); break; } @@ -12213,7 +12038,7 @@ azslParser::ScalarOrVectorOrMatrixTypeContext* azslParser::scalarOrVectorOrMatri exitRule(); }); try { - setState(946); + setState(944); _errHandler->sync(this); switch (_input->LA(1)) { case azslParser::Bool: @@ -12221,15 +12046,16 @@ azslParser::ScalarOrVectorOrMatrixTypeContext* azslParser::scalarOrVectorOrMatri case azslParser::Float: case azslParser::Half: case azslParser::Int: + case azslParser::Int16_t: case azslParser::Int32_t: case azslParser::Int64_t: case azslParser::Uint: + case azslParser::Uint16_t: case azslParser::Uint32_t: case azslParser::Uint64_t: - case azslParser::UnsignedInt: case azslParser::Dword: { enterOuterAlt(_localctx, 1); - setState(943); + setState(941); scalarType(); break; } @@ -12264,7 +12090,7 @@ azslParser::ScalarOrVectorOrMatrixTypeContext* azslParser::scalarOrVectorOrMatri case azslParser::Dword4: case azslParser::Vector: { enterOuterAlt(_localctx, 2); - setState(944); + setState(942); vectorType(); break; } @@ -12383,7 +12209,7 @@ azslParser::ScalarOrVectorOrMatrixTypeContext* azslParser::scalarOrVectorOrMatri case azslParser::Dword4x3: case azslParser::Dword4x4: { enterOuterAlt(_localctx, 3); - setState(945); + setState(943); matrixType(); break; } @@ -12891,7 +12717,7 @@ azslParser::MatrixTypeContext* azslParser::matrixType() { }); try { enterOuterAlt(_localctx, 1); - setState(948); + setState(946); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << azslParser::Bool1x1) @@ -12925,88 +12751,88 @@ azslParser::MatrixTypeContext* azslParser::matrixType() { | (1ULL << azslParser::Double4x1) | (1ULL << azslParser::Double4x2) | (1ULL << azslParser::Double4x3) - | (1ULL << azslParser::Double4x4))) != 0) || ((((_la - 71) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 71)) & ((1ULL << (azslParser::Float1x1 - 71)) - | (1ULL << (azslParser::Float1x2 - 71)) - | (1ULL << (azslParser::Float1x3 - 71)) - | (1ULL << (azslParser::Float1x4 - 71)) - | (1ULL << (azslParser::Float2x1 - 71)) - | (1ULL << (azslParser::Float2x2 - 71)) - | (1ULL << (azslParser::Float2x3 - 71)) - | (1ULL << (azslParser::Float2x4 - 71)) - | (1ULL << (azslParser::Float3x1 - 71)) - | (1ULL << (azslParser::Float3x2 - 71)) - | (1ULL << (azslParser::Float3x3 - 71)) - | (1ULL << (azslParser::Float3x4 - 71)) - | (1ULL << (azslParser::Float4x1 - 71)) - | (1ULL << (azslParser::Float4x2 - 71)) - | (1ULL << (azslParser::Float4x3 - 71)) - | (1ULL << (azslParser::Float4x4 - 71)) - | (1ULL << (azslParser::Half1x1 - 71)) - | (1ULL << (azslParser::Half1x2 - 71)) - | (1ULL << (azslParser::Half1x3 - 71)) - | (1ULL << (azslParser::Half1x4 - 71)) - | (1ULL << (azslParser::Half2x1 - 71)) - | (1ULL << (azslParser::Half2x2 - 71)) - | (1ULL << (azslParser::Half2x3 - 71)) - | (1ULL << (azslParser::Half2x4 - 71)) - | (1ULL << (azslParser::Half3x1 - 71)) - | (1ULL << (azslParser::Half3x2 - 71)) - | (1ULL << (azslParser::Half3x3 - 71)) - | (1ULL << (azslParser::Half3x4 - 71)) - | (1ULL << (azslParser::Half4x1 - 71)) - | (1ULL << (azslParser::Half4x2 - 71)) - | (1ULL << (azslParser::Half4x3 - 71)) - | (1ULL << (azslParser::Half4x4 - 71)) - | (1ULL << (azslParser::Int1x1 - 71)) - | (1ULL << (azslParser::Int1x2 - 71)) - | (1ULL << (azslParser::Int1x3 - 71)) - | (1ULL << (azslParser::Int1x4 - 71)) - | (1ULL << (azslParser::Int2x1 - 71)) - | (1ULL << (azslParser::Int2x2 - 71)) - | (1ULL << (azslParser::Int2x3 - 71)) - | (1ULL << (azslParser::Int2x4 - 71)) - | (1ULL << (azslParser::Int3x1 - 71)) - | (1ULL << (azslParser::Int3x2 - 71)) - | (1ULL << (azslParser::Int3x3 - 71)))) != 0) || ((((_la - 135) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 135)) & ((1ULL << (azslParser::Int3x4 - 135)) - | (1ULL << (azslParser::Int4x1 - 135)) - | (1ULL << (azslParser::Int4x2 - 135)) - | (1ULL << (azslParser::Int4x3 - 135)) - | (1ULL << (azslParser::Int4x4 - 135)) - | (1ULL << (azslParser::Matrix - 135)))) != 0) || ((((_la - 212) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 212)) & ((1ULL << (azslParser::Uint1x1 - 212)) - | (1ULL << (azslParser::Uint1x2 - 212)) - | (1ULL << (azslParser::Uint1x3 - 212)) - | (1ULL << (azslParser::Uint1x4 - 212)) - | (1ULL << (azslParser::Uint2x1 - 212)) - | (1ULL << (azslParser::Uint2x2 - 212)) - | (1ULL << (azslParser::Uint2x3 - 212)) - | (1ULL << (azslParser::Uint2x4 - 212)) - | (1ULL << (azslParser::Uint3x1 - 212)) - | (1ULL << (azslParser::Uint3x2 - 212)) - | (1ULL << (azslParser::Uint3x3 - 212)) - | (1ULL << (azslParser::Uint3x4 - 212)) - | (1ULL << (azslParser::Uint4x1 - 212)) - | (1ULL << (azslParser::Uint4x2 - 212)) - | (1ULL << (azslParser::Uint4x3 - 212)) - | (1ULL << (azslParser::Uint4x4 - 212)) - | (1ULL << (azslParser::Dword1x1 - 212)) - | (1ULL << (azslParser::Dword1x2 - 212)) - | (1ULL << (azslParser::Dword1x3 - 212)) - | (1ULL << (azslParser::Dword1x4 - 212)) - | (1ULL << (azslParser::Dword2x1 - 212)) - | (1ULL << (azslParser::Dword2x2 - 212)) - | (1ULL << (azslParser::Dword2x3 - 212)) - | (1ULL << (azslParser::Dword2x4 - 212)) - | (1ULL << (azslParser::Dword3x1 - 212)) - | (1ULL << (azslParser::Dword3x2 - 212)) - | (1ULL << (azslParser::Dword3x3 - 212)) - | (1ULL << (azslParser::Dword3x4 - 212)) - | (1ULL << (azslParser::Dword4x1 - 212)) - | (1ULL << (azslParser::Dword4x2 - 212)) - | (1ULL << (azslParser::Dword4x3 - 212)) - | (1ULL << (azslParser::Dword4x4 - 212)))) != 0))) { + | (1ULL << azslParser::Double4x4))) != 0) || ((((_la - 72) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 72)) & ((1ULL << (azslParser::Float1x1 - 72)) + | (1ULL << (azslParser::Float1x2 - 72)) + | (1ULL << (azslParser::Float1x3 - 72)) + | (1ULL << (azslParser::Float1x4 - 72)) + | (1ULL << (azslParser::Float2x1 - 72)) + | (1ULL << (azslParser::Float2x2 - 72)) + | (1ULL << (azslParser::Float2x3 - 72)) + | (1ULL << (azslParser::Float2x4 - 72)) + | (1ULL << (azslParser::Float3x1 - 72)) + | (1ULL << (azslParser::Float3x2 - 72)) + | (1ULL << (azslParser::Float3x3 - 72)) + | (1ULL << (azslParser::Float3x4 - 72)) + | (1ULL << (azslParser::Float4x1 - 72)) + | (1ULL << (azslParser::Float4x2 - 72)) + | (1ULL << (azslParser::Float4x3 - 72)) + | (1ULL << (azslParser::Float4x4 - 72)) + | (1ULL << (azslParser::Half1x1 - 72)) + | (1ULL << (azslParser::Half1x2 - 72)) + | (1ULL << (azslParser::Half1x3 - 72)) + | (1ULL << (azslParser::Half1x4 - 72)) + | (1ULL << (azslParser::Half2x1 - 72)) + | (1ULL << (azslParser::Half2x2 - 72)) + | (1ULL << (azslParser::Half2x3 - 72)) + | (1ULL << (azslParser::Half2x4 - 72)) + | (1ULL << (azslParser::Half3x1 - 72)) + | (1ULL << (azslParser::Half3x2 - 72)) + | (1ULL << (azslParser::Half3x3 - 72)) + | (1ULL << (azslParser::Half3x4 - 72)) + | (1ULL << (azslParser::Half4x1 - 72)) + | (1ULL << (azslParser::Half4x2 - 72)) + | (1ULL << (azslParser::Half4x3 - 72)) + | (1ULL << (azslParser::Half4x4 - 72)) + | (1ULL << (azslParser::Int1x1 - 72)) + | (1ULL << (azslParser::Int1x2 - 72)) + | (1ULL << (azslParser::Int1x3 - 72)) + | (1ULL << (azslParser::Int1x4 - 72)) + | (1ULL << (azslParser::Int2x1 - 72)) + | (1ULL << (azslParser::Int2x2 - 72)) + | (1ULL << (azslParser::Int2x3 - 72)) + | (1ULL << (azslParser::Int2x4 - 72)) + | (1ULL << (azslParser::Int3x1 - 72)))) != 0) || ((((_la - 136) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 136)) & ((1ULL << (azslParser::Int3x2 - 136)) + | (1ULL << (azslParser::Int3x3 - 136)) + | (1ULL << (azslParser::Int3x4 - 136)) + | (1ULL << (azslParser::Int4x1 - 136)) + | (1ULL << (azslParser::Int4x2 - 136)) + | (1ULL << (azslParser::Int4x3 - 136)) + | (1ULL << (azslParser::Int4x4 - 136)) + | (1ULL << (azslParser::Matrix - 136)))) != 0) || ((((_la - 215) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 215)) & ((1ULL << (azslParser::Uint1x1 - 215)) + | (1ULL << (azslParser::Uint1x2 - 215)) + | (1ULL << (azslParser::Uint1x3 - 215)) + | (1ULL << (azslParser::Uint1x4 - 215)) + | (1ULL << (azslParser::Uint2x1 - 215)) + | (1ULL << (azslParser::Uint2x2 - 215)) + | (1ULL << (azslParser::Uint2x3 - 215)) + | (1ULL << (azslParser::Uint2x4 - 215)) + | (1ULL << (azslParser::Uint3x1 - 215)) + | (1ULL << (azslParser::Uint3x2 - 215)) + | (1ULL << (azslParser::Uint3x3 - 215)) + | (1ULL << (azslParser::Uint3x4 - 215)) + | (1ULL << (azslParser::Uint4x1 - 215)) + | (1ULL << (azslParser::Uint4x2 - 215)) + | (1ULL << (azslParser::Uint4x3 - 215)) + | (1ULL << (azslParser::Uint4x4 - 215)) + | (1ULL << (azslParser::Dword1x1 - 215)) + | (1ULL << (azslParser::Dword1x2 - 215)) + | (1ULL << (azslParser::Dword1x3 - 215)) + | (1ULL << (azslParser::Dword1x4 - 215)) + | (1ULL << (azslParser::Dword2x1 - 215)) + | (1ULL << (azslParser::Dword2x2 - 215)) + | (1ULL << (azslParser::Dword2x3 - 215)) + | (1ULL << (azslParser::Dword2x4 - 215)) + | (1ULL << (azslParser::Dword3x1 - 215)) + | (1ULL << (azslParser::Dword3x2 - 215)) + | (1ULL << (azslParser::Dword3x3 - 215)) + | (1ULL << (azslParser::Dword3x4 - 215)) + | (1ULL << (azslParser::Dword4x1 - 215)) + | (1ULL << (azslParser::Dword4x2 - 215)) + | (1ULL << (azslParser::Dword4x3 - 215)) + | (1ULL << (azslParser::Dword4x4 - 215)))) != 0))) { _errHandler->recoverInline(this); } else { @@ -13092,21 +12918,21 @@ azslParser::GenericMatrixPredefinedTypeContext* azslParser::genericMatrixPredefi }); try { enterOuterAlt(_localctx, 1); - setState(950); + setState(948); match(azslParser::Matrix); - setState(951); + setState(949); match(azslParser::Less); - setState(952); + setState(950); scalarType(); - setState(953); + setState(951); match(azslParser::Comma); - setState(954); + setState(952); antlrcpp::downCast(_localctx)->Rows_ = match(azslParser::IntegerLiteral); - setState(955); + setState(953); match(azslParser::Comma); - setState(956); + setState(954); antlrcpp::downCast(_localctx)->Cols_ = match(azslParser::IntegerLiteral); - setState(957); + setState(955); match(azslParser::Greater); } @@ -13175,15 +13001,15 @@ azslParser::RegisterAllocationContext* azslParser::registerAllocation() { }); try { enterOuterAlt(_localctx, 1); - setState(959); + setState(957); match(azslParser::Colon); - setState(960); + setState(958); match(azslParser::Register); - setState(961); + setState(959); match(azslParser::LeftParen); - setState(962); + setState(960); antlrcpp::downCast(_localctx)->Address = match(azslParser::Identifier); - setState(963); + setState(961); match(azslParser::RightParen); } @@ -13248,13 +13074,13 @@ azslParser::SamplerStatePropertyContext* azslParser::samplerStateProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(965); + setState(963); antlrcpp::downCast(_localctx)->Name = match(azslParser::Identifier); - setState(966); + setState(964); antlrcpp::downCast(_localctx)->EqualsToken = match(azslParser::Assign); - setState(967); + setState(965); antlrcpp::downCast(_localctx)->Expr = expression(0); - setState(968); + setState(966); match(azslParser::Semi); } @@ -13327,46 +13153,46 @@ azslParser::LiteralContext* azslParser::literal() { }); try { size_t alt; - setState(979); + setState(977); _errHandler->sync(this); switch (_input->LA(1)) { case azslParser::True: { enterOuterAlt(_localctx, 1); - setState(970); + setState(968); match(azslParser::True); break; } case azslParser::False: { enterOuterAlt(_localctx, 2); - setState(971); + setState(969); match(azslParser::False); break; } case azslParser::FloatLiteral: { enterOuterAlt(_localctx, 3); - setState(972); + setState(970); match(azslParser::FloatLiteral); break; } case azslParser::IntegerLiteral: { enterOuterAlt(_localctx, 4); - setState(973); + setState(971); match(azslParser::IntegerLiteral); break; } case azslParser::StringLiteral: { enterOuterAlt(_localctx, 5); - setState(975); + setState(973); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(974); + setState(972); match(azslParser::StringLiteral); break; } @@ -13374,7 +13200,7 @@ azslParser::LiteralContext* azslParser::literal() { default: throw NoViableAltException(this); } - setState(977); + setState(975); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 76, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); @@ -13401,12 +13227,8 @@ azslParser::LeadingTypeFunctionSignatureContext::LeadingTypeFunctionSignatureCon : ParserRuleContext(parent, invokingState) { } -azslParser::StorageFlagsContext* azslParser::LeadingTypeFunctionSignatureContext::storageFlags() { - return getRuleContext(0); -} - -azslParser::FunctionTypeContext* azslParser::LeadingTypeFunctionSignatureContext::functionType() { - return getRuleContext(0); +azslParser::TypeContext* azslParser::LeadingTypeFunctionSignatureContext::type() { + return getRuleContext(0); } tree::TerminalNode* azslParser::LeadingTypeFunctionSignatureContext::LeftParen() { @@ -13476,18 +13298,16 @@ azslParser::LeadingTypeFunctionSignatureContext* azslParser::leadingTypeFunction }); try { enterOuterAlt(_localctx, 1); - setState(981); - storageFlags(); - setState(982); - functionType(); - setState(986); + setState(979); + type(); + setState(983); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 78, _ctx)) { case 1: { - setState(983); + setState(980); antlrcpp::downCast(_localctx)->ClassName = userDefinedType(); - setState(984); + setState(981); match(azslParser::ColonColon); break; } @@ -13495,19 +13315,19 @@ azslParser::LeadingTypeFunctionSignatureContext* azslParser::leadingTypeFunction default: break; } - setState(988); + setState(985); antlrcpp::downCast(_localctx)->Name = match(azslParser::Identifier); - setState(990); + setState(987); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::Less) { - setState(989); + setState(986); genericParameterList(); } - setState(992); + setState(989); match(azslParser::LeftParen); - setState(994); + setState(991); _errHandler->sync(this); _la = _input->LA(1); @@ -13537,9 +13357,9 @@ azslParser::LeadingTypeFunctionSignatureContext* azslParser::leadingTypeFunction | (1ULL << azslParser::Buffer) | (1ULL << azslParser::BuiltInTriangleIntersectionAttributes) | (1ULL << azslParser::ByteAddressBuffer) + | (1ULL << azslParser::Centroid) | (1ULL << azslParser::ConstantBuffer) | (1ULL << azslParser::ConstantBufferCamel) - | (1ULL << azslParser::Centroid) | (1ULL << azslParser::Class) | (1ULL << azslParser::ColumnMajor) | (1ULL << azslParser::Const) @@ -13565,217 +13385,223 @@ azslParser::LeadingTypeFunctionSignatureContext* azslParser::leadingTypeFunction | (1ULL << azslParser::Double4x2) | (1ULL << azslParser::Double4x3) | (1ULL << azslParser::Double4x4) - | (1ULL << azslParser::Enum) - | (1ULL << azslParser::Extern))) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & ((1ULL << (azslParser::Float - 66)) - | (1ULL << (azslParser::Float1 - 66)) - | (1ULL << (azslParser::Float2 - 66)) - | (1ULL << (azslParser::Float3 - 66)) - | (1ULL << (azslParser::Float4 - 66)) - | (1ULL << (azslParser::Float1x1 - 66)) - | (1ULL << (azslParser::Float1x2 - 66)) - | (1ULL << (azslParser::Float1x3 - 66)) - | (1ULL << (azslParser::Float1x4 - 66)) - | (1ULL << (azslParser::Float2x1 - 66)) - | (1ULL << (azslParser::Float2x2 - 66)) - | (1ULL << (azslParser::Float2x3 - 66)) - | (1ULL << (azslParser::Float2x4 - 66)) - | (1ULL << (azslParser::Float3x1 - 66)) - | (1ULL << (azslParser::Float3x2 - 66)) - | (1ULL << (azslParser::Float3x3 - 66)) - | (1ULL << (azslParser::Float3x4 - 66)) - | (1ULL << (azslParser::Float4x1 - 66)) - | (1ULL << (azslParser::Float4x2 - 66)) - | (1ULL << (azslParser::Float4x3 - 66)) - | (1ULL << (azslParser::Float4x4 - 66)) - | (1ULL << (azslParser::Groupshared - 66)) - | (1ULL << (azslParser::Half - 66)) - | (1ULL << (azslParser::Half1 - 66)) - | (1ULL << (azslParser::Half2 - 66)) - | (1ULL << (azslParser::Half3 - 66)) - | (1ULL << (azslParser::Half4 - 66)) - | (1ULL << (azslParser::Half1x1 - 66)) - | (1ULL << (azslParser::Half1x2 - 66)) - | (1ULL << (azslParser::Half1x3 - 66)) - | (1ULL << (azslParser::Half1x4 - 66)) - | (1ULL << (azslParser::Half2x1 - 66)) - | (1ULL << (azslParser::Half2x2 - 66)) - | (1ULL << (azslParser::Half2x3 - 66)) - | (1ULL << (azslParser::Half2x4 - 66)) - | (1ULL << (azslParser::Half3x1 - 66)) - | (1ULL << (azslParser::Half3x2 - 66)) - | (1ULL << (azslParser::Half3x3 - 66)) - | (1ULL << (azslParser::Half3x4 - 66)) - | (1ULL << (azslParser::Half4x1 - 66)) - | (1ULL << (azslParser::Half4x2 - 66)) - | (1ULL << (azslParser::Half4x3 - 66)) - | (1ULL << (azslParser::Half4x4 - 66)) - | (1ULL << (azslParser::In - 66)) - | (1ULL << (azslParser::Inline - 66)) - | (1ULL << (azslParser::Rootconstant - 66)) - | (1ULL << (azslParser::Inout - 66)) - | (1ULL << (azslParser::InputPatch - 66)) - | (1ULL << (azslParser::Int - 66)) - | (1ULL << (azslParser::Int32_t - 66)) - | (1ULL << (azslParser::Int64_t - 66)) - | (1ULL << (azslParser::Int1 - 66)) - | (1ULL << (azslParser::Int2 - 66)) - | (1ULL << (azslParser::Int3 - 66)) - | (1ULL << (azslParser::Int4 - 66)) - | (1ULL << (azslParser::Int1x1 - 66)) - | (1ULL << (azslParser::Int1x2 - 66)) - | (1ULL << (azslParser::Int1x3 - 66)) - | (1ULL << (azslParser::Int1x4 - 66)) - | (1ULL << (azslParser::Int2x1 - 66)) - | (1ULL << (azslParser::Int2x2 - 66)))) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & ((1ULL << (azslParser::Int2x3 - 130)) - | (1ULL << (azslParser::Int2x4 - 130)) - | (1ULL << (azslParser::Int3x1 - 130)) - | (1ULL << (azslParser::Int3x2 - 130)) - | (1ULL << (azslParser::Int3x3 - 130)) - | (1ULL << (azslParser::Int3x4 - 130)) - | (1ULL << (azslParser::Int4x1 - 130)) - | (1ULL << (azslParser::Int4x2 - 130)) - | (1ULL << (azslParser::Int4x3 - 130)) - | (1ULL << (azslParser::Int4x4 - 130)) - | (1ULL << (azslParser::Interface - 130)) - | (1ULL << (azslParser::Line_ - 130)) - | (1ULL << (azslParser::LineAdj - 130)) - | (1ULL << (azslParser::Linear - 130)) - | (1ULL << (azslParser::LineStream - 130)) - | (1ULL << (azslParser::Matrix - 130)) - | (1ULL << (azslParser::Nointerpolation - 130)) - | (1ULL << (azslParser::Noperspective - 130)) - | (1ULL << (azslParser::Option - 130)) - | (1ULL << (azslParser::Out - 130)) - | (1ULL << (azslParser::OutputPatch - 130)) - | (1ULL << (azslParser::Point - 130)) - | (1ULL << (azslParser::PointStream - 130)) - | (1ULL << (azslParser::Precise - 130)) - | (1ULL << (azslParser::RasterizerOrderedBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture3D - 130)) - | (1ULL << (azslParser::RayDesc - 130)) - | (1ULL << (azslParser::RaytracingAccelerationStructure - 130)) - | (1ULL << (azslParser::RowMajor - 130)) - | (1ULL << (azslParser::RWBuffer - 130)) - | (1ULL << (azslParser::RWByteAddressBuffer - 130)) - | (1ULL << (azslParser::RWStructuredBuffer - 130)) - | (1ULL << (azslParser::RWTexture1D - 130)) - | (1ULL << (azslParser::RWTexture1DArray - 130)) - | (1ULL << (azslParser::RWTexture2D - 130)) - | (1ULL << (azslParser::RWTexture2DArray - 130)) - | (1ULL << (azslParser::RWTexture3D - 130)) - | (1ULL << (azslParser::Sample - 130)) - | (1ULL << (azslParser::Sampler - 130)) - | (1ULL << (azslParser::SamplerCapitalS - 130)) - | (1ULL << (azslParser::SamplerComparisonState - 130)) - | (1ULL << (azslParser::SamplerState - 130)) - | (1ULL << (azslParser::Shared - 130)) - | (1ULL << (azslParser::Static - 130)) - | (1ULL << (azslParser::Struct - 130)) - | (1ULL << (azslParser::StructuredBuffer - 130)) - | (1ULL << (azslParser::SubpassInput - 130)) - | (1ULL << (azslParser::SubpassInputMS - 130)) - | (1ULL << (azslParser::Texture1D - 130)) - | (1ULL << (azslParser::Texture1DArray - 130)) - | (1ULL << (azslParser::Texture2D - 130)))) != 0) || ((((_la - 194) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 194)) & ((1ULL << (azslParser::Texture2DArray - 194)) - | (1ULL << (azslParser::Texture2DMS - 194)) - | (1ULL << (azslParser::Texture2DMSArray - 194)) - | (1ULL << (azslParser::Texture3D - 194)) - | (1ULL << (azslParser::TextureCube - 194)) - | (1ULL << (azslParser::TextureCubeArray - 194)) - | (1ULL << (azslParser::Triangle - 194)) - | (1ULL << (azslParser::TriangleAdj - 194)) - | (1ULL << (azslParser::TriangleStream - 194)) - | (1ULL << (azslParser::Uniform - 194)) - | (1ULL << (azslParser::Uint - 194)) - | (1ULL << (azslParser::Uint32_t - 194)) - | (1ULL << (azslParser::Uint64_t - 194)) - | (1ULL << (azslParser::UnsignedInt - 194)) - | (1ULL << (azslParser::Uint1 - 194)) - | (1ULL << (azslParser::Uint2 - 194)) - | (1ULL << (azslParser::Uint3 - 194)) - | (1ULL << (azslParser::Uint4 - 194)) - | (1ULL << (azslParser::Uint1x1 - 194)) - | (1ULL << (azslParser::Uint1x2 - 194)) - | (1ULL << (azslParser::Uint1x3 - 194)) - | (1ULL << (azslParser::Uint1x4 - 194)) - | (1ULL << (azslParser::Uint2x1 - 194)) - | (1ULL << (azslParser::Uint2x2 - 194)) - | (1ULL << (azslParser::Uint2x3 - 194)) - | (1ULL << (azslParser::Uint2x4 - 194)) - | (1ULL << (azslParser::Uint3x1 - 194)) - | (1ULL << (azslParser::Uint3x2 - 194)) - | (1ULL << (azslParser::Uint3x3 - 194)) - | (1ULL << (azslParser::Uint3x4 - 194)) - | (1ULL << (azslParser::Uint4x1 - 194)) - | (1ULL << (azslParser::Uint4x2 - 194)) - | (1ULL << (azslParser::Uint4x3 - 194)) - | (1ULL << (azslParser::Uint4x4 - 194)) - | (1ULL << (azslParser::Dword - 194)) - | (1ULL << (azslParser::Dword1 - 194)) - | (1ULL << (azslParser::Dword2 - 194)) - | (1ULL << (azslParser::Dword3 - 194)) - | (1ULL << (azslParser::Dword4 - 194)) - | (1ULL << (azslParser::Dword1x1 - 194)) - | (1ULL << (azslParser::Dword1x2 - 194)) - | (1ULL << (azslParser::Dword1x3 - 194)) - | (1ULL << (azslParser::Dword1x4 - 194)) - | (1ULL << (azslParser::Dword2x1 - 194)) - | (1ULL << (azslParser::Dword2x2 - 194)) - | (1ULL << (azslParser::Dword2x3 - 194)) - | (1ULL << (azslParser::Dword2x4 - 194)) - | (1ULL << (azslParser::Dword3x1 - 194)) - | (1ULL << (azslParser::Dword3x2 - 194)) - | (1ULL << (azslParser::Dword3x3 - 194)) - | (1ULL << (azslParser::Dword3x4 - 194)) - | (1ULL << (azslParser::Dword4x1 - 194)) - | (1ULL << (azslParser::Dword4x2 - 194)) - | (1ULL << (azslParser::Dword4x3 - 194)) - | (1ULL << (azslParser::Dword4x4 - 194)) - | (1ULL << (azslParser::Vector - 194)) - | (1ULL << (azslParser::Volatile - 194)) - | (1ULL << (azslParser::Void - 194)) - | (1ULL << (azslParser::StateObjectConfig - 194)) - | (1ULL << (azslParser::LocalRootSignature - 194)) - | (1ULL << (azslParser::GlobalRootSignature - 194)) - | (1ULL << (azslParser::SubobjectToExportsAssociation - 194)) - | (1ULL << (azslParser::RaytracingShaderConfig - 194)))) != 0) || ((((_la - 258) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 258)) & ((1ULL << (azslParser::RaytracingPipelineConfig - 258)) - | (1ULL << (azslParser::RaytracingPipelineConfig1 - 258)) - | (1ULL << (azslParser::TriangleHitGroup - 258)) - | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 258)) - | (1ULL << (azslParser::LeftBracket - 258)) - | (1ULL << (azslParser::LeftDoubleBracket - 258)))) != 0) || ((((_la - 326) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 326)) & ((1ULL << (azslParser::ColonColon - 326)) - | (1ULL << (azslParser::KW_Typeof - 326)) - | (1ULL << (azslParser::Identifier - 326)))) != 0)) { - setState(993); + | (1ULL << azslParser::Enum))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (azslParser::Extern - 64)) + | (1ULL << (azslParser::Float - 64)) + | (1ULL << (azslParser::Float1 - 64)) + | (1ULL << (azslParser::Float2 - 64)) + | (1ULL << (azslParser::Float3 - 64)) + | (1ULL << (azslParser::Float4 - 64)) + | (1ULL << (azslParser::Float1x1 - 64)) + | (1ULL << (azslParser::Float1x2 - 64)) + | (1ULL << (azslParser::Float1x3 - 64)) + | (1ULL << (azslParser::Float1x4 - 64)) + | (1ULL << (azslParser::Float2x1 - 64)) + | (1ULL << (azslParser::Float2x2 - 64)) + | (1ULL << (azslParser::Float2x3 - 64)) + | (1ULL << (azslParser::Float2x4 - 64)) + | (1ULL << (azslParser::Float3x1 - 64)) + | (1ULL << (azslParser::Float3x2 - 64)) + | (1ULL << (azslParser::Float3x3 - 64)) + | (1ULL << (azslParser::Float3x4 - 64)) + | (1ULL << (azslParser::Float4x1 - 64)) + | (1ULL << (azslParser::Float4x2 - 64)) + | (1ULL << (azslParser::Float4x3 - 64)) + | (1ULL << (azslParser::Float4x4 - 64)) + | (1ULL << (azslParser::Groupshared - 64)) + | (1ULL << (azslParser::Globallycoherent - 64)) + | (1ULL << (azslParser::Half - 64)) + | (1ULL << (azslParser::Half1 - 64)) + | (1ULL << (azslParser::Half2 - 64)) + | (1ULL << (azslParser::Half3 - 64)) + | (1ULL << (azslParser::Half4 - 64)) + | (1ULL << (azslParser::Half1x1 - 64)) + | (1ULL << (azslParser::Half1x2 - 64)) + | (1ULL << (azslParser::Half1x3 - 64)) + | (1ULL << (azslParser::Half1x4 - 64)) + | (1ULL << (azslParser::Half2x1 - 64)) + | (1ULL << (azslParser::Half2x2 - 64)) + | (1ULL << (azslParser::Half2x3 - 64)) + | (1ULL << (azslParser::Half2x4 - 64)) + | (1ULL << (azslParser::Half3x1 - 64)) + | (1ULL << (azslParser::Half3x2 - 64)) + | (1ULL << (azslParser::Half3x3 - 64)) + | (1ULL << (azslParser::Half3x4 - 64)) + | (1ULL << (azslParser::Half4x1 - 64)) + | (1ULL << (azslParser::Half4x2 - 64)) + | (1ULL << (azslParser::Half4x3 - 64)) + | (1ULL << (azslParser::Half4x4 - 64)) + | (1ULL << (azslParser::In - 64)) + | (1ULL << (azslParser::Inline - 64)) + | (1ULL << (azslParser::Rootconstant - 64)) + | (1ULL << (azslParser::Inout - 64)) + | (1ULL << (azslParser::InputPatch - 64)) + | (1ULL << (azslParser::Int - 64)) + | (1ULL << (azslParser::Int16_t - 64)) + | (1ULL << (azslParser::Int32_t - 64)) + | (1ULL << (azslParser::Int64_t - 64)) + | (1ULL << (azslParser::Int1 - 64)) + | (1ULL << (azslParser::Int2 - 64)) + | (1ULL << (azslParser::Int3 - 64)) + | (1ULL << (azslParser::Int4 - 64)) + | (1ULL << (azslParser::Int1x1 - 64)))) != 0) || ((((_la - 128) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 128)) & ((1ULL << (azslParser::Int1x2 - 128)) + | (1ULL << (azslParser::Int1x3 - 128)) + | (1ULL << (azslParser::Int1x4 - 128)) + | (1ULL << (azslParser::Int2x1 - 128)) + | (1ULL << (azslParser::Int2x2 - 128)) + | (1ULL << (azslParser::Int2x3 - 128)) + | (1ULL << (azslParser::Int2x4 - 128)) + | (1ULL << (azslParser::Int3x1 - 128)) + | (1ULL << (azslParser::Int3x2 - 128)) + | (1ULL << (azslParser::Int3x3 - 128)) + | (1ULL << (azslParser::Int3x4 - 128)) + | (1ULL << (azslParser::Int4x1 - 128)) + | (1ULL << (azslParser::Int4x2 - 128)) + | (1ULL << (azslParser::Int4x3 - 128)) + | (1ULL << (azslParser::Int4x4 - 128)) + | (1ULL << (azslParser::Interface - 128)) + | (1ULL << (azslParser::Line_ - 128)) + | (1ULL << (azslParser::LineAdj - 128)) + | (1ULL << (azslParser::Linear - 128)) + | (1ULL << (azslParser::LineStream - 128)) + | (1ULL << (azslParser::Matrix - 128)) + | (1ULL << (azslParser::Nointerpolation - 128)) + | (1ULL << (azslParser::Noperspective - 128)) + | (1ULL << (azslParser::Option - 128)) + | (1ULL << (azslParser::Out - 128)) + | (1ULL << (azslParser::OutputPatch - 128)) + | (1ULL << (azslParser::Point - 128)) + | (1ULL << (azslParser::PointStream - 128)) + | (1ULL << (azslParser::Precise - 128)) + | (1ULL << (azslParser::RasterizerOrderedBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture3D - 128)) + | (1ULL << (azslParser::RayDesc - 128)) + | (1ULL << (azslParser::RaytracingAccelerationStructure - 128)) + | (1ULL << (azslParser::RowMajor - 128)) + | (1ULL << (azslParser::RWBuffer - 128)) + | (1ULL << (azslParser::RWByteAddressBuffer - 128)) + | (1ULL << (azslParser::RWStructuredBuffer - 128)) + | (1ULL << (azslParser::RWTexture1D - 128)) + | (1ULL << (azslParser::RWTexture1DArray - 128)) + | (1ULL << (azslParser::RWTexture2D - 128)) + | (1ULL << (azslParser::RWTexture2DArray - 128)) + | (1ULL << (azslParser::RWTexture3D - 128)) + | (1ULL << (azslParser::Sample - 128)) + | (1ULL << (azslParser::Sampler - 128)) + | (1ULL << (azslParser::SamplerCapitalS - 128)) + | (1ULL << (azslParser::SamplerComparisonState - 128)) + | (1ULL << (azslParser::SamplerStateCamel - 128)) + | (1ULL << (azslParser::SamplerState - 128)) + | (1ULL << (azslParser::Shared - 128)) + | (1ULL << (azslParser::SNorm - 128)) + | (1ULL << (azslParser::Static - 128)) + | (1ULL << (azslParser::Struct - 128)))) != 0) || ((((_la - 192) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 192)) & ((1ULL << (azslParser::StructuredBuffer - 192)) + | (1ULL << (azslParser::SubpassInput - 192)) + | (1ULL << (azslParser::SubpassInputMS - 192)) + | (1ULL << (azslParser::Texture1D - 192)) + | (1ULL << (azslParser::Texture1DArray - 192)) + | (1ULL << (azslParser::Texture2D - 192)) + | (1ULL << (azslParser::Texture2DArray - 192)) + | (1ULL << (azslParser::Texture2DMS - 192)) + | (1ULL << (azslParser::Texture2DMSArray - 192)) + | (1ULL << (azslParser::Texture3D - 192)) + | (1ULL << (azslParser::TextureCube - 192)) + | (1ULL << (azslParser::TextureCubeArray - 192)) + | (1ULL << (azslParser::Triangle - 192)) + | (1ULL << (azslParser::TriangleAdj - 192)) + | (1ULL << (azslParser::TriangleStream - 192)) + | (1ULL << (azslParser::Uniform - 192)) + | (1ULL << (azslParser::Uint - 192)) + | (1ULL << (azslParser::Uint1 - 192)) + | (1ULL << (azslParser::Uint2 - 192)) + | (1ULL << (azslParser::Uint3 - 192)) + | (1ULL << (azslParser::Uint4 - 192)) + | (1ULL << (azslParser::Uint1x1 - 192)) + | (1ULL << (azslParser::Uint1x2 - 192)) + | (1ULL << (azslParser::Uint1x3 - 192)) + | (1ULL << (azslParser::Uint1x4 - 192)) + | (1ULL << (azslParser::Uint2x1 - 192)) + | (1ULL << (azslParser::Uint2x2 - 192)) + | (1ULL << (azslParser::Uint2x3 - 192)) + | (1ULL << (azslParser::Uint2x4 - 192)) + | (1ULL << (azslParser::Uint3x1 - 192)) + | (1ULL << (azslParser::Uint3x2 - 192)) + | (1ULL << (azslParser::Uint3x3 - 192)) + | (1ULL << (azslParser::Uint3x4 - 192)) + | (1ULL << (azslParser::Uint4x1 - 192)) + | (1ULL << (azslParser::Uint4x2 - 192)) + | (1ULL << (azslParser::Uint4x3 - 192)) + | (1ULL << (azslParser::Uint4x4 - 192)) + | (1ULL << (azslParser::Uint16_t - 192)) + | (1ULL << (azslParser::Uint32_t - 192)) + | (1ULL << (azslParser::Uint64_t - 192)) + | (1ULL << (azslParser::UNorm - 192)) + | (1ULL << (azslParser::Unsigned - 192)) + | (1ULL << (azslParser::Dword - 192)) + | (1ULL << (azslParser::Dword1 - 192)) + | (1ULL << (azslParser::Dword2 - 192)) + | (1ULL << (azslParser::Dword3 - 192)) + | (1ULL << (azslParser::Dword4 - 192)) + | (1ULL << (azslParser::Dword1x1 - 192)) + | (1ULL << (azslParser::Dword1x2 - 192)) + | (1ULL << (azslParser::Dword1x3 - 192)) + | (1ULL << (azslParser::Dword1x4 - 192)) + | (1ULL << (azslParser::Dword2x1 - 192)) + | (1ULL << (azslParser::Dword2x2 - 192)) + | (1ULL << (azslParser::Dword2x3 - 192)) + | (1ULL << (azslParser::Dword2x4 - 192)) + | (1ULL << (azslParser::Dword3x1 - 192)) + | (1ULL << (azslParser::Dword3x2 - 192)) + | (1ULL << (azslParser::Dword3x3 - 192)) + | (1ULL << (azslParser::Dword3x4 - 192)) + | (1ULL << (azslParser::Dword4x1 - 192)) + | (1ULL << (azslParser::Dword4x2 - 192)) + | (1ULL << (azslParser::Dword4x3 - 192)))) != 0) || ((((_la - 256) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 256)) & ((1ULL << (azslParser::Dword4x4 - 256)) + | (1ULL << (azslParser::Vector - 256)) + | (1ULL << (azslParser::Volatile - 256)) + | (1ULL << (azslParser::Void - 256)) + | (1ULL << (azslParser::StateObjectConfig - 256)) + | (1ULL << (azslParser::LocalRootSignature - 256)) + | (1ULL << (azslParser::GlobalRootSignature - 256)) + | (1ULL << (azslParser::SubobjectToExportsAssociation - 256)) + | (1ULL << (azslParser::RaytracingShaderConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig1 - 256)) + | (1ULL << (azslParser::TriangleHitGroup - 256)) + | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 256)) + | (1ULL << (azslParser::LeftBracket - 256)) + | (1ULL << (azslParser::LeftDoubleBracket - 256)))) != 0) || ((((_la - 334) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 334)) & ((1ULL << (azslParser::ColonColon - 334)) + | (1ULL << (azslParser::KW_Typeof - 334)) + | (1ULL << (azslParser::Identifier - 334)))) != 0)) { + setState(990); functionParams(); } - setState(996); + setState(993); match(azslParser::RightParen); - setState(998); + setState(995); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::Override) { - setState(997); + setState(994); match(azslParser::Override); } - setState(1001); + setState(998); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::Colon) { - setState(1000); + setState(997); hlslSemantic(); } @@ -13816,375 +13642,86 @@ void azslParser::HlslFunctionDefinitionContext::enterRule(tree::ParseTreeListene void azslParser::HlslFunctionDefinitionContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitHlslFunctionDefinition(this); -} - -azslParser::HlslFunctionDefinitionContext* azslParser::hlslFunctionDefinition() { - HlslFunctionDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 186, azslParser::RuleHlslFunctionDefinition); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(1003); - leadingTypeFunctionSignature(); - setState(1004); - block(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- HlslFunctionDeclarationContext ------------------------------------------------------------------ - -azslParser::HlslFunctionDeclarationContext::HlslFunctionDeclarationContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -azslParser::LeadingTypeFunctionSignatureContext* azslParser::HlslFunctionDeclarationContext::leadingTypeFunctionSignature() { - return getRuleContext(0); -} - -tree::TerminalNode* azslParser::HlslFunctionDeclarationContext::Semi() { - return getToken(azslParser::Semi, 0); -} - - -size_t azslParser::HlslFunctionDeclarationContext::getRuleIndex() const { - return azslParser::RuleHlslFunctionDeclaration; -} - -void azslParser::HlslFunctionDeclarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterHlslFunctionDeclaration(this); -} - -void azslParser::HlslFunctionDeclarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitHlslFunctionDeclaration(this); -} - -azslParser::HlslFunctionDeclarationContext* azslParser::hlslFunctionDeclaration() { - HlslFunctionDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 188, azslParser::RuleHlslFunctionDeclaration); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(1006); - leadingTypeFunctionSignature(); - setState(1007); - match(azslParser::Semi); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- FunctionTypeContext ------------------------------------------------------------------ - -azslParser::FunctionTypeContext::FunctionTypeContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -azslParser::TypeContext* azslParser::FunctionTypeContext::type() { - return getRuleContext(0); -} - -tree::TerminalNode* azslParser::FunctionTypeContext::Void() { - return getToken(azslParser::Void, 0); -} - - -size_t azslParser::FunctionTypeContext::getRuleIndex() const { - return azslParser::RuleFunctionType; -} - -void azslParser::FunctionTypeContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterFunctionType(this); -} - -void azslParser::FunctionTypeContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitFunctionType(this); -} - -azslParser::FunctionTypeContext* azslParser::functionType() { - FunctionTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 190, azslParser::RuleFunctionType); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(1011); - _errHandler->sync(this); - switch (_input->LA(1)) { - case azslParser::AppendStructuredBuffer: - case azslParser::Bool: - case azslParser::Bool1: - case azslParser::Bool2: - case azslParser::Bool3: - case azslParser::Bool4: - case azslParser::Bool1x1: - case azslParser::Bool1x2: - case azslParser::Bool1x3: - case azslParser::Bool1x4: - case azslParser::Bool2x1: - case azslParser::Bool2x2: - case azslParser::Bool2x3: - case azslParser::Bool2x4: - case azslParser::Bool3x1: - case azslParser::Bool3x2: - case azslParser::Bool3x3: - case azslParser::Bool3x4: - case azslParser::Bool4x1: - case azslParser::Bool4x2: - case azslParser::Bool4x3: - case azslParser::Bool4x4: - case azslParser::Buffer: - case azslParser::BuiltInTriangleIntersectionAttributes: - case azslParser::ByteAddressBuffer: - case azslParser::ConstantBuffer: - case azslParser::ConstantBufferCamel: - case azslParser::Class: - case azslParser::ConsumeStructuredBuffer: - case azslParser::Double: - case azslParser::Double1: - case azslParser::Double2: - case azslParser::Double3: - case azslParser::Double4: - case azslParser::Double1x1: - case azslParser::Double1x2: - case azslParser::Double1x3: - case azslParser::Double1x4: - case azslParser::Double2x1: - case azslParser::Double2x2: - case azslParser::Double2x3: - case azslParser::Double2x4: - case azslParser::Double3x1: - case azslParser::Double3x2: - case azslParser::Double3x3: - case azslParser::Double3x4: - case azslParser::Double4x1: - case azslParser::Double4x2: - case azslParser::Double4x3: - case azslParser::Double4x4: - case azslParser::Enum: - case azslParser::Float: - case azslParser::Float1: - case azslParser::Float2: - case azslParser::Float3: - case azslParser::Float4: - case azslParser::Float1x1: - case azslParser::Float1x2: - case azslParser::Float1x3: - case azslParser::Float1x4: - case azslParser::Float2x1: - case azslParser::Float2x2: - case azslParser::Float2x3: - case azslParser::Float2x4: - case azslParser::Float3x1: - case azslParser::Float3x2: - case azslParser::Float3x3: - case azslParser::Float3x4: - case azslParser::Float4x1: - case azslParser::Float4x2: - case azslParser::Float4x3: - case azslParser::Float4x4: - case azslParser::Half: - case azslParser::Half1: - case azslParser::Half2: - case azslParser::Half3: - case azslParser::Half4: - case azslParser::Half1x1: - case azslParser::Half1x2: - case azslParser::Half1x3: - case azslParser::Half1x4: - case azslParser::Half2x1: - case azslParser::Half2x2: - case azslParser::Half2x3: - case azslParser::Half2x4: - case azslParser::Half3x1: - case azslParser::Half3x2: - case azslParser::Half3x3: - case azslParser::Half3x4: - case azslParser::Half4x1: - case azslParser::Half4x2: - case azslParser::Half4x3: - case azslParser::Half4x4: - case azslParser::InputPatch: - case azslParser::Int: - case azslParser::Int32_t: - case azslParser::Int64_t: - case azslParser::Int1: - case azslParser::Int2: - case azslParser::Int3: - case azslParser::Int4: - case azslParser::Int1x1: - case azslParser::Int1x2: - case azslParser::Int1x3: - case azslParser::Int1x4: - case azslParser::Int2x1: - case azslParser::Int2x2: - case azslParser::Int2x3: - case azslParser::Int2x4: - case azslParser::Int3x1: - case azslParser::Int3x2: - case azslParser::Int3x3: - case azslParser::Int3x4: - case azslParser::Int4x1: - case azslParser::Int4x2: - case azslParser::Int4x3: - case azslParser::Int4x4: - case azslParser::Interface: - case azslParser::LineStream: - case azslParser::Matrix: - case azslParser::OutputPatch: - case azslParser::PointStream: - case azslParser::RasterizerOrderedBuffer: - case azslParser::RasterizerOrderedByteAddressBuffer: - case azslParser::RasterizerOrderedStructuredBuffer: - case azslParser::RasterizerOrderedTexture1D: - case azslParser::RasterizerOrderedTexture1DArray: - case azslParser::RasterizerOrderedTexture2D: - case azslParser::RasterizerOrderedTexture2DArray: - case azslParser::RasterizerOrderedTexture3D: - case azslParser::RayDesc: - case azslParser::RaytracingAccelerationStructure: - case azslParser::RWBuffer: - case azslParser::RWByteAddressBuffer: - case azslParser::RWStructuredBuffer: - case azslParser::RWTexture1D: - case azslParser::RWTexture1DArray: - case azslParser::RWTexture2D: - case azslParser::RWTexture2DArray: - case azslParser::RWTexture3D: - case azslParser::Sampler: - case azslParser::SamplerCapitalS: - case azslParser::SamplerComparisonState: - case azslParser::SamplerState: - case azslParser::Struct: - case azslParser::StructuredBuffer: - case azslParser::SubpassInput: - case azslParser::SubpassInputMS: - case azslParser::Texture1D: - case azslParser::Texture1DArray: - case azslParser::Texture2D: - case azslParser::Texture2DArray: - case azslParser::Texture2DMS: - case azslParser::Texture2DMSArray: - case azslParser::Texture3D: - case azslParser::TextureCube: - case azslParser::TextureCubeArray: - case azslParser::TriangleStream: - case azslParser::Uint: - case azslParser::Uint32_t: - case azslParser::Uint64_t: - case azslParser::UnsignedInt: - case azslParser::Uint1: - case azslParser::Uint2: - case azslParser::Uint3: - case azslParser::Uint4: - case azslParser::Uint1x1: - case azslParser::Uint1x2: - case azslParser::Uint1x3: - case azslParser::Uint1x4: - case azslParser::Uint2x1: - case azslParser::Uint2x2: - case azslParser::Uint2x3: - case azslParser::Uint2x4: - case azslParser::Uint3x1: - case azslParser::Uint3x2: - case azslParser::Uint3x3: - case azslParser::Uint3x4: - case azslParser::Uint4x1: - case azslParser::Uint4x2: - case azslParser::Uint4x3: - case azslParser::Uint4x4: - case azslParser::Dword: - case azslParser::Dword1: - case azslParser::Dword2: - case azslParser::Dword3: - case azslParser::Dword4: - case azslParser::Dword1x1: - case azslParser::Dword1x2: - case azslParser::Dword1x3: - case azslParser::Dword1x4: - case azslParser::Dword2x1: - case azslParser::Dword2x2: - case azslParser::Dword2x3: - case azslParser::Dword2x4: - case azslParser::Dword3x1: - case azslParser::Dword3x2: - case azslParser::Dword3x3: - case azslParser::Dword3x4: - case azslParser::Dword4x1: - case azslParser::Dword4x2: - case azslParser::Dword4x3: - case azslParser::Dword4x4: - case azslParser::Vector: - case azslParser::StateObjectConfig: - case azslParser::LocalRootSignature: - case azslParser::GlobalRootSignature: - case azslParser::SubobjectToExportsAssociation: - case azslParser::RaytracingShaderConfig: - case azslParser::RaytracingPipelineConfig: - case azslParser::RaytracingPipelineConfig1: - case azslParser::TriangleHitGroup: - case azslParser::ProceduralPrimitiveHitGroup: - case azslParser::ColonColon: - case azslParser::KW_Typeof: - case azslParser::Identifier: { - enterOuterAlt(_localctx, 1); - setState(1009); - type(); - break; - } + if (parserListener != nullptr) + parserListener->exitHlslFunctionDefinition(this); +} - case azslParser::Void: { - enterOuterAlt(_localctx, 2); - setState(1010); - match(azslParser::Void); - break; - } +azslParser::HlslFunctionDefinitionContext* azslParser::hlslFunctionDefinition() { + HlslFunctionDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 186, azslParser::RuleHlslFunctionDefinition); - default: - throw NoViableAltException(this); - } +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(1000); + leadingTypeFunctionSignature(); + setState(1001); + block(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- HlslFunctionDeclarationContext ------------------------------------------------------------------ + +azslParser::HlslFunctionDeclarationContext::HlslFunctionDeclarationContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +azslParser::LeadingTypeFunctionSignatureContext* azslParser::HlslFunctionDeclarationContext::leadingTypeFunctionSignature() { + return getRuleContext(0); +} + +tree::TerminalNode* azslParser::HlslFunctionDeclarationContext::Semi() { + return getToken(azslParser::Semi, 0); +} + + +size_t azslParser::HlslFunctionDeclarationContext::getRuleIndex() const { + return azslParser::RuleHlslFunctionDeclaration; +} + +void azslParser::HlslFunctionDeclarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterHlslFunctionDeclaration(this); +} + +void azslParser::HlslFunctionDeclarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitHlslFunctionDeclaration(this); +} + +azslParser::HlslFunctionDeclarationContext* azslParser::hlslFunctionDeclaration() { + HlslFunctionDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 188, azslParser::RuleHlslFunctionDeclaration); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(1003); + leadingTypeFunctionSignature(); + setState(1004); + match(azslParser::Semi); } catch (RecognitionException &e) { @@ -14229,7 +13766,7 @@ void azslParser::UserDefinedTypeContext::exitRule(tree::ParseTreeListener *liste azslParser::UserDefinedTypeContext* azslParser::userDefinedType() { UserDefinedTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 192, azslParser::RuleUserDefinedType); + enterRule(_localctx, 190, azslParser::RuleUserDefinedType); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14239,13 +13776,13 @@ azslParser::UserDefinedTypeContext* azslParser::userDefinedType() { exitRule(); }); try { - setState(1015); + setState(1008); _errHandler->sync(this); switch (_input->LA(1)) { case azslParser::ColonColon: case azslParser::Identifier: { enterOuterAlt(_localctx, 1); - setState(1013); + setState(1006); idExpression(); break; } @@ -14255,7 +13792,7 @@ azslParser::UserDefinedTypeContext* azslParser::userDefinedType() { case azslParser::Interface: case azslParser::Struct: { enterOuterAlt(_localctx, 2); - setState(1014); + setState(1007); anyStructuredTypeDefinition(); break; } @@ -14315,7 +13852,7 @@ void azslParser::AssociatedTypeDeclarationContext::exitRule(tree::ParseTreeListe azslParser::AssociatedTypeDeclarationContext* azslParser::associatedTypeDeclaration() { AssociatedTypeDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 194, azslParser::RuleAssociatedTypeDeclaration); + enterRule(_localctx, 192, azslParser::RuleAssociatedTypeDeclaration); size_t _la = 0; #if __cplusplus > 201703L @@ -14327,19 +13864,19 @@ azslParser::AssociatedTypeDeclarationContext* azslParser::associatedTypeDeclarat }); try { enterOuterAlt(_localctx, 1); - setState(1017); + setState(1010); match(azslParser::KW_AssociatedType); - setState(1018); + setState(1011); antlrcpp::downCast(_localctx)->Name = match(azslParser::Identifier); - setState(1020); + setState(1013); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::Colon) { - setState(1019); + setState(1012); genericConstraint(); } - setState(1022); + setState(1015); match(azslParser::Semi); } @@ -14366,8 +13903,8 @@ tree::TerminalNode* azslParser::TypedefStatementContext::Semi() { return getToken(azslParser::Semi, 0); } -azslParser::FunctionTypeContext* azslParser::TypedefStatementContext::functionType() { - return getRuleContext(0); +azslParser::TypeContext* azslParser::TypedefStatementContext::type() { + return getRuleContext(0); } tree::TerminalNode* azslParser::TypedefStatementContext::Identifier() { @@ -14393,7 +13930,7 @@ void azslParser::TypedefStatementContext::exitRule(tree::ParseTreeListener *list azslParser::TypedefStatementContext* azslParser::typedefStatement() { TypedefStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 196, azslParser::RuleTypedefStatement); + enterRule(_localctx, 194, azslParser::RuleTypedefStatement); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14404,13 +13941,13 @@ azslParser::TypedefStatementContext* azslParser::typedefStatement() { }); try { enterOuterAlt(_localctx, 1); - setState(1024); + setState(1017); match(azslParser::KW_Typedef); - setState(1025); - antlrcpp::downCast(_localctx)->ExistingType = functionType(); - setState(1026); + setState(1018); + antlrcpp::downCast(_localctx)->ExistingType = type(); + setState(1019); antlrcpp::downCast(_localctx)->NewTypeName = match(azslParser::Identifier); - setState(1027); + setState(1020); match(azslParser::Semi); } @@ -14445,8 +13982,8 @@ tree::TerminalNode* azslParser::TypealiasStatementContext::Identifier() { return getToken(azslParser::Identifier, 0); } -azslParser::FunctionTypeContext* azslParser::TypealiasStatementContext::functionType() { - return getRuleContext(0); +azslParser::TypeContext* azslParser::TypealiasStatementContext::type() { + return getRuleContext(0); } @@ -14468,7 +14005,7 @@ void azslParser::TypealiasStatementContext::exitRule(tree::ParseTreeListener *li azslParser::TypealiasStatementContext* azslParser::typealiasStatement() { TypealiasStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 198, azslParser::RuleTypealiasStatement); + enterRule(_localctx, 196, azslParser::RuleTypealiasStatement); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14479,15 +14016,15 @@ azslParser::TypealiasStatementContext* azslParser::typealiasStatement() { }); try { enterOuterAlt(_localctx, 1); - setState(1029); + setState(1022); match(azslParser::KW_TypeAlias); - setState(1030); + setState(1023); antlrcpp::downCast(_localctx)->NewTypeName = match(azslParser::Identifier); - setState(1031); + setState(1024); match(azslParser::Assign); - setState(1032); - antlrcpp::downCast(_localctx)->ExistingType = functionType(); - setState(1033); + setState(1025); + antlrcpp::downCast(_localctx)->ExistingType = type(); + setState(1026); match(azslParser::Semi); } @@ -14533,7 +14070,7 @@ void azslParser::TypeAliasingDefinitionStatementContext::exitRule(tree::ParseTre azslParser::TypeAliasingDefinitionStatementContext* azslParser::typeAliasingDefinitionStatement() { TypeAliasingDefinitionStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 200, azslParser::RuleTypeAliasingDefinitionStatement); + enterRule(_localctx, 198, azslParser::RuleTypeAliasingDefinitionStatement); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14543,19 +14080,19 @@ azslParser::TypeAliasingDefinitionStatementContext* azslParser::typeAliasingDefi exitRule(); }); try { - setState(1037); + setState(1030); _errHandler->sync(this); switch (_input->LA(1)) { case azslParser::KW_TypeAlias: { enterOuterAlt(_localctx, 1); - setState(1035); + setState(1028); typealiasStatement(); break; } case azslParser::KW_Typedef: { enterOuterAlt(_localctx, 2); - setState(1036); + setState(1029); typedefStatement(); break; } @@ -14592,8 +14129,8 @@ tree::TerminalNode* azslParser::TypeofExpressionContext::RightParen() { return getToken(azslParser::RightParen, 0); } -azslParser::FunctionTypeContext* azslParser::TypeofExpressionContext::functionType() { - return getRuleContext(0); +azslParser::TypeContext* azslParser::TypeofExpressionContext::type() { + return getRuleContext(0); } azslParser::ExpressionExtContext* azslParser::TypeofExpressionContext::expressionExt() { @@ -14627,7 +14164,7 @@ void azslParser::TypeofExpressionContext::exitRule(tree::ParseTreeListener *list azslParser::TypeofExpressionContext* azslParser::typeofExpression() { TypeofExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 202, azslParser::RuleTypeofExpression); + enterRule(_localctx, 200, azslParser::RuleTypeofExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14638,38 +14175,38 @@ azslParser::TypeofExpressionContext* azslParser::typeofExpression() { }); try { enterOuterAlt(_localctx, 1); - setState(1039); + setState(1032); match(azslParser::KW_Typeof); - setState(1040); + setState(1033); match(azslParser::LeftParen); - setState(1043); + setState(1036); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 87, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 86, _ctx)) { case 1: { - setState(1041); + setState(1034); antlrcpp::downCast(_localctx)->Expr = expressionExt(0); break; } case 2: { - setState(1042); - functionType(); + setState(1035); + type(); break; } default: break; } - setState(1045); + setState(1038); match(azslParser::RightParen); - setState(1048); + setState(1041); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 88, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 87, _ctx)) { case 1: { - setState(1046); + setState(1039); match(azslParser::ColonColon); - setState(1047); + setState(1040); antlrcpp::downCast(_localctx)->SubQualification = idExpression(); break; } @@ -14737,7 +14274,7 @@ void azslParser::GenericParameterListContext::exitRule(tree::ParseTreeListener * azslParser::GenericParameterListContext* azslParser::genericParameterList() { GenericParameterListContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 204, azslParser::RuleGenericParameterList); + enterRule(_localctx, 202, azslParser::RuleGenericParameterList); size_t _la = 0; #if __cplusplus > 201703L @@ -14749,23 +14286,23 @@ azslParser::GenericParameterListContext* azslParser::genericParameterList() { }); try { enterOuterAlt(_localctx, 1); - setState(1050); + setState(1043); match(azslParser::Less); - setState(1051); + setState(1044); genericTypeDefinition(); - setState(1056); + setState(1049); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::Comma) { - setState(1052); + setState(1045); match(azslParser::Comma); - setState(1053); + setState(1046); genericTypeDefinition(); - setState(1058); + setState(1051); _errHandler->sync(this); _la = _input->LA(1); } - setState(1059); + setState(1052); match(azslParser::Greater); } @@ -14811,7 +14348,7 @@ void azslParser::GenericTypeDefinitionContext::exitRule(tree::ParseTreeListener azslParser::GenericTypeDefinitionContext* azslParser::genericTypeDefinition() { GenericTypeDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 206, azslParser::RuleGenericTypeDefinition); + enterRule(_localctx, 204, azslParser::RuleGenericTypeDefinition); size_t _la = 0; #if __cplusplus > 201703L @@ -14823,14 +14360,14 @@ azslParser::GenericTypeDefinitionContext* azslParser::genericTypeDefinition() { }); try { enterOuterAlt(_localctx, 1); - setState(1061); + setState(1054); antlrcpp::downCast(_localctx)->GenericTypeName = match(azslParser::Identifier); - setState(1063); + setState(1056); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::Colon) { - setState(1062); + setState(1055); genericConstraint(); } @@ -14877,7 +14414,7 @@ void azslParser::GenericConstraintContext::exitRule(tree::ParseTreeListener *lis azslParser::GenericConstraintContext* azslParser::genericConstraint() { GenericConstraintContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 208, azslParser::RuleGenericConstraint); + enterRule(_localctx, 206, azslParser::RuleGenericConstraint); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14888,9 +14425,9 @@ azslParser::GenericConstraintContext* azslParser::genericConstraint() { }); try { enterOuterAlt(_localctx, 1); - setState(1065); + setState(1058); match(azslParser::Colon); - setState(1066); + setState(1059); userDefinedType(); } @@ -14932,7 +14469,7 @@ void azslParser::LanguageDefinedConstraintContext::exitRule(tree::ParseTreeListe azslParser::LanguageDefinedConstraintContext* azslParser::languageDefinedConstraint() { LanguageDefinedConstraintContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 210, azslParser::RuleLanguageDefinedConstraint); + enterRule(_localctx, 208, azslParser::RuleLanguageDefinedConstraint); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14943,7 +14480,7 @@ azslParser::LanguageDefinedConstraintContext* azslParser::languageDefinedConstra }); try { enterOuterAlt(_localctx, 1); - setState(1068); + setState(1061); match(azslParser::KW_Fundamental); } @@ -14985,7 +14522,7 @@ void azslParser::FunctionDeclarationContext::exitRule(tree::ParseTreeListener *l azslParser::FunctionDeclarationContext* azslParser::functionDeclaration() { FunctionDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 212, azslParser::RuleFunctionDeclaration); + enterRule(_localctx, 210, azslParser::RuleFunctionDeclaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14996,7 +14533,7 @@ azslParser::FunctionDeclarationContext* azslParser::functionDeclaration() { }); try { enterOuterAlt(_localctx, 1); - setState(1070); + setState(1063); hlslFunctionDeclaration(); } @@ -15046,7 +14583,7 @@ void azslParser::AttributedFunctionDeclarationContext::exitRule(tree::ParseTreeL azslParser::AttributedFunctionDeclarationContext* azslParser::attributedFunctionDeclaration() { AttributedFunctionDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 214, azslParser::RuleAttributedFunctionDeclaration); + enterRule(_localctx, 212, azslParser::RuleAttributedFunctionDeclaration); size_t _la = 0; #if __cplusplus > 201703L @@ -15058,19 +14595,19 @@ azslParser::AttributedFunctionDeclarationContext* azslParser::attributedFunction }); try { enterOuterAlt(_localctx, 1); - setState(1075); + setState(1068); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::LeftBracket || _la == azslParser::LeftDoubleBracket) { - setState(1072); + setState(1065); attributeSpecifierAny(); - setState(1077); + setState(1070); _errHandler->sync(this); _la = _input->LA(1); } - setState(1078); + setState(1071); functionDeclaration(); } @@ -15112,7 +14649,7 @@ void azslParser::FunctionDefinitionContext::exitRule(tree::ParseTreeListener *li azslParser::FunctionDefinitionContext* azslParser::functionDefinition() { FunctionDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 216, azslParser::RuleFunctionDefinition); + enterRule(_localctx, 214, azslParser::RuleFunctionDefinition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -15123,7 +14660,7 @@ azslParser::FunctionDefinitionContext* azslParser::functionDefinition() { }); try { enterOuterAlt(_localctx, 1); - setState(1080); + setState(1073); hlslFunctionDefinition(); } @@ -15173,7 +14710,7 @@ void azslParser::AttributedFunctionDefinitionContext::exitRule(tree::ParseTreeLi azslParser::AttributedFunctionDefinitionContext* azslParser::attributedFunctionDefinition() { AttributedFunctionDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 218, azslParser::RuleAttributedFunctionDefinition); + enterRule(_localctx, 216, azslParser::RuleAttributedFunctionDefinition); size_t _la = 0; #if __cplusplus > 201703L @@ -15185,19 +14722,19 @@ azslParser::AttributedFunctionDefinitionContext* azslParser::attributedFunctionD }); try { enterOuterAlt(_localctx, 1); - setState(1085); + setState(1078); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::LeftBracket || _la == azslParser::LeftDoubleBracket) { - setState(1082); + setState(1075); attributeSpecifierAny(); - setState(1087); + setState(1080); _errHandler->sync(this); _la = _input->LA(1); } - setState(1088); + setState(1081); functionDefinition(); } @@ -15283,7 +14820,7 @@ void azslParser::CompilerExtensionStatementContext::exitRule(tree::ParseTreeList azslParser::CompilerExtensionStatementContext* azslParser::compilerExtensionStatement() { CompilerExtensionStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 220, azslParser::RuleCompilerExtensionStatement); + enterRule(_localctx, 218, azslParser::RuleCompilerExtensionStatement); size_t _la = 0; #if __cplusplus > 201703L @@ -15294,42 +14831,42 @@ azslParser::CompilerExtensionStatementContext* azslParser::compilerExtensionStat exitRule(); }); try { - setState(1106); + setState(1099); _errHandler->sync(this); switch (_input->LA(1)) { case azslParser::KW_ext_print_message: { enterOuterAlt(_localctx, 1); - setState(1090); + setState(1083); match(azslParser::KW_ext_print_message); - setState(1091); + setState(1084); match(azslParser::LeftParen); - setState(1092); + setState(1085); antlrcpp::downCast(_localctx)->Message = match(azslParser::StringLiteral); - setState(1093); + setState(1086); match(azslParser::RightParen); - setState(1094); + setState(1087); match(azslParser::Semi); break; } case azslParser::KW_ext_print_symbol: { enterOuterAlt(_localctx, 2); - setState(1095); + setState(1088); match(azslParser::KW_ext_print_symbol); - setState(1096); + setState(1089); match(azslParser::LeftParen); - setState(1099); + setState(1092); _errHandler->sync(this); switch (_input->LA(1)) { case azslParser::ColonColon: case azslParser::Identifier: { - setState(1097); + setState(1090); idExpression(); break; } case azslParser::KW_Typeof: { - setState(1098); + setState(1091); typeofExpression(); break; } @@ -15337,23 +14874,23 @@ azslParser::CompilerExtensionStatementContext* azslParser::compilerExtensionStat default: throw NoViableAltException(this); } - setState(1101); + setState(1094); match(azslParser::Comma); - setState(1102); + setState(1095); _la = _input->LA(1); - if (!(((((_la - 352) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 352)) & ((1ULL << (azslParser::KW_ext_prtsym_fully_qualified - 352)) - | (1ULL << (azslParser::KW_ext_prtsym_least_qualified - 352)) - | (1ULL << (azslParser::KW_ext_prtsym_constint_value - 352)))) != 0))) { + if (!(((((_la - 364) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 364)) & ((1ULL << (azslParser::KW_ext_prtsym_fully_qualified - 364)) + | (1ULL << (azslParser::KW_ext_prtsym_least_qualified - 364)) + | (1ULL << (azslParser::KW_ext_prtsym_constint_value - 364)))) != 0))) { _errHandler->recoverInline(this); } else { _errHandler->reportMatch(this); consume(); } - setState(1103); + setState(1096); match(azslParser::RightParen); - setState(1104); + setState(1097); match(azslParser::Semi); break; } @@ -15433,7 +14970,7 @@ void azslParser::SrgDefinitionContext::exitRule(tree::ParseTreeListener *listene azslParser::SrgDefinitionContext* azslParser::srgDefinition() { SrgDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 222, azslParser::RuleSrgDefinition); + enterRule(_localctx, 220, azslParser::RuleSrgDefinition); size_t _la = 0; #if __cplusplus > 201703L @@ -15445,31 +14982,31 @@ azslParser::SrgDefinitionContext* azslParser::srgDefinition() { }); try { enterOuterAlt(_localctx, 1); - setState(1109); + setState(1102); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::Partial) { - setState(1108); + setState(1101); match(azslParser::Partial); } - setState(1111); + setState(1104); match(azslParser::ShaderResourceGroup); - setState(1112); + setState(1105); antlrcpp::downCast(_localctx)->Name = match(azslParser::Identifier); - setState(1115); + setState(1108); _errHandler->sync(this); _la = _input->LA(1); if (_la == azslParser::Colon) { - setState(1113); + setState(1106); match(azslParser::Colon); - setState(1114); + setState(1107); antlrcpp::downCast(_localctx)->Semantic = match(azslParser::Identifier); } - setState(1117); + setState(1110); match(azslParser::LeftBrace); - setState(1121); + setState(1114); _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && @@ -15498,9 +15035,9 @@ azslParser::SrgDefinitionContext* azslParser::srgDefinition() { | (1ULL << azslParser::Buffer) | (1ULL << azslParser::BuiltInTriangleIntersectionAttributes) | (1ULL << azslParser::ByteAddressBuffer) + | (1ULL << azslParser::Centroid) | (1ULL << azslParser::ConstantBuffer) | (1ULL << azslParser::ConstantBufferCamel) - | (1ULL << azslParser::Centroid) | (1ULL << azslParser::Class) | (1ULL << azslParser::ColumnMajor) | (1ULL << azslParser::Const) @@ -15526,207 +15063,213 @@ azslParser::SrgDefinitionContext* azslParser::srgDefinition() { | (1ULL << azslParser::Double4x2) | (1ULL << azslParser::Double4x3) | (1ULL << azslParser::Double4x4) - | (1ULL << azslParser::Enum) - | (1ULL << azslParser::Extern))) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & ((1ULL << (azslParser::Float - 66)) - | (1ULL << (azslParser::Float1 - 66)) - | (1ULL << (azslParser::Float2 - 66)) - | (1ULL << (azslParser::Float3 - 66)) - | (1ULL << (azslParser::Float4 - 66)) - | (1ULL << (azslParser::Float1x1 - 66)) - | (1ULL << (azslParser::Float1x2 - 66)) - | (1ULL << (azslParser::Float1x3 - 66)) - | (1ULL << (azslParser::Float1x4 - 66)) - | (1ULL << (azslParser::Float2x1 - 66)) - | (1ULL << (azslParser::Float2x2 - 66)) - | (1ULL << (azslParser::Float2x3 - 66)) - | (1ULL << (azslParser::Float2x4 - 66)) - | (1ULL << (azslParser::Float3x1 - 66)) - | (1ULL << (azslParser::Float3x2 - 66)) - | (1ULL << (azslParser::Float3x3 - 66)) - | (1ULL << (azslParser::Float3x4 - 66)) - | (1ULL << (azslParser::Float4x1 - 66)) - | (1ULL << (azslParser::Float4x2 - 66)) - | (1ULL << (azslParser::Float4x3 - 66)) - | (1ULL << (azslParser::Float4x4 - 66)) - | (1ULL << (azslParser::Groupshared - 66)) - | (1ULL << (azslParser::Half - 66)) - | (1ULL << (azslParser::Half1 - 66)) - | (1ULL << (azslParser::Half2 - 66)) - | (1ULL << (azslParser::Half3 - 66)) - | (1ULL << (azslParser::Half4 - 66)) - | (1ULL << (azslParser::Half1x1 - 66)) - | (1ULL << (azslParser::Half1x2 - 66)) - | (1ULL << (azslParser::Half1x3 - 66)) - | (1ULL << (azslParser::Half1x4 - 66)) - | (1ULL << (azslParser::Half2x1 - 66)) - | (1ULL << (azslParser::Half2x2 - 66)) - | (1ULL << (azslParser::Half2x3 - 66)) - | (1ULL << (azslParser::Half2x4 - 66)) - | (1ULL << (azslParser::Half3x1 - 66)) - | (1ULL << (azslParser::Half3x2 - 66)) - | (1ULL << (azslParser::Half3x3 - 66)) - | (1ULL << (azslParser::Half3x4 - 66)) - | (1ULL << (azslParser::Half4x1 - 66)) - | (1ULL << (azslParser::Half4x2 - 66)) - | (1ULL << (azslParser::Half4x3 - 66)) - | (1ULL << (azslParser::Half4x4 - 66)) - | (1ULL << (azslParser::In - 66)) - | (1ULL << (azslParser::Inline - 66)) - | (1ULL << (azslParser::Rootconstant - 66)) - | (1ULL << (azslParser::Inout - 66)) - | (1ULL << (azslParser::InputPatch - 66)) - | (1ULL << (azslParser::Int - 66)) - | (1ULL << (azslParser::Int32_t - 66)) - | (1ULL << (azslParser::Int64_t - 66)) - | (1ULL << (azslParser::Int1 - 66)) - | (1ULL << (azslParser::Int2 - 66)) - | (1ULL << (azslParser::Int3 - 66)) - | (1ULL << (azslParser::Int4 - 66)) - | (1ULL << (azslParser::Int1x1 - 66)) - | (1ULL << (azslParser::Int1x2 - 66)) - | (1ULL << (azslParser::Int1x3 - 66)) - | (1ULL << (azslParser::Int1x4 - 66)) - | (1ULL << (azslParser::Int2x1 - 66)) - | (1ULL << (azslParser::Int2x2 - 66)))) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & ((1ULL << (azslParser::Int2x3 - 130)) - | (1ULL << (azslParser::Int2x4 - 130)) - | (1ULL << (azslParser::Int3x1 - 130)) - | (1ULL << (azslParser::Int3x2 - 130)) - | (1ULL << (azslParser::Int3x3 - 130)) - | (1ULL << (azslParser::Int3x4 - 130)) - | (1ULL << (azslParser::Int4x1 - 130)) - | (1ULL << (azslParser::Int4x2 - 130)) - | (1ULL << (azslParser::Int4x3 - 130)) - | (1ULL << (azslParser::Int4x4 - 130)) - | (1ULL << (azslParser::Interface - 130)) - | (1ULL << (azslParser::Line_ - 130)) - | (1ULL << (azslParser::LineAdj - 130)) - | (1ULL << (azslParser::Linear - 130)) - | (1ULL << (azslParser::LineStream - 130)) - | (1ULL << (azslParser::Matrix - 130)) - | (1ULL << (azslParser::Nointerpolation - 130)) - | (1ULL << (azslParser::Noperspective - 130)) - | (1ULL << (azslParser::Option - 130)) - | (1ULL << (azslParser::Out - 130)) - | (1ULL << (azslParser::OutputPatch - 130)) - | (1ULL << (azslParser::Point - 130)) - | (1ULL << (azslParser::PointStream - 130)) - | (1ULL << (azslParser::Precise - 130)) - | (1ULL << (azslParser::RasterizerOrderedBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2D - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 130)) - | (1ULL << (azslParser::RasterizerOrderedTexture3D - 130)) - | (1ULL << (azslParser::RayDesc - 130)) - | (1ULL << (azslParser::RaytracingAccelerationStructure - 130)) - | (1ULL << (azslParser::RowMajor - 130)) - | (1ULL << (azslParser::RWBuffer - 130)) - | (1ULL << (azslParser::RWByteAddressBuffer - 130)) - | (1ULL << (azslParser::RWStructuredBuffer - 130)) - | (1ULL << (azslParser::RWTexture1D - 130)) - | (1ULL << (azslParser::RWTexture1DArray - 130)) - | (1ULL << (azslParser::RWTexture2D - 130)) - | (1ULL << (azslParser::RWTexture2DArray - 130)) - | (1ULL << (azslParser::RWTexture3D - 130)) - | (1ULL << (azslParser::Sample - 130)) - | (1ULL << (azslParser::Sampler - 130)) - | (1ULL << (azslParser::SamplerCapitalS - 130)) - | (1ULL << (azslParser::SamplerComparisonState - 130)) - | (1ULL << (azslParser::SamplerState - 130)) - | (1ULL << (azslParser::Shared - 130)) - | (1ULL << (azslParser::Static - 130)) - | (1ULL << (azslParser::Struct - 130)) - | (1ULL << (azslParser::StructuredBuffer - 130)) - | (1ULL << (azslParser::SubpassInput - 130)) - | (1ULL << (azslParser::SubpassInputMS - 130)) - | (1ULL << (azslParser::Texture1D - 130)) - | (1ULL << (azslParser::Texture1DArray - 130)) - | (1ULL << (azslParser::Texture2D - 130)))) != 0) || ((((_la - 194) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 194)) & ((1ULL << (azslParser::Texture2DArray - 194)) - | (1ULL << (azslParser::Texture2DMS - 194)) - | (1ULL << (azslParser::Texture2DMSArray - 194)) - | (1ULL << (azslParser::Texture3D - 194)) - | (1ULL << (azslParser::TextureCube - 194)) - | (1ULL << (azslParser::TextureCubeArray - 194)) - | (1ULL << (azslParser::Triangle - 194)) - | (1ULL << (azslParser::TriangleAdj - 194)) - | (1ULL << (azslParser::TriangleStream - 194)) - | (1ULL << (azslParser::Uniform - 194)) - | (1ULL << (azslParser::Uint - 194)) - | (1ULL << (azslParser::Uint32_t - 194)) - | (1ULL << (azslParser::Uint64_t - 194)) - | (1ULL << (azslParser::UnsignedInt - 194)) - | (1ULL << (azslParser::Uint1 - 194)) - | (1ULL << (azslParser::Uint2 - 194)) - | (1ULL << (azslParser::Uint3 - 194)) - | (1ULL << (azslParser::Uint4 - 194)) - | (1ULL << (azslParser::Uint1x1 - 194)) - | (1ULL << (azslParser::Uint1x2 - 194)) - | (1ULL << (azslParser::Uint1x3 - 194)) - | (1ULL << (azslParser::Uint1x4 - 194)) - | (1ULL << (azslParser::Uint2x1 - 194)) - | (1ULL << (azslParser::Uint2x2 - 194)) - | (1ULL << (azslParser::Uint2x3 - 194)) - | (1ULL << (azslParser::Uint2x4 - 194)) - | (1ULL << (azslParser::Uint3x1 - 194)) - | (1ULL << (azslParser::Uint3x2 - 194)) - | (1ULL << (azslParser::Uint3x3 - 194)) - | (1ULL << (azslParser::Uint3x4 - 194)) - | (1ULL << (azslParser::Uint4x1 - 194)) - | (1ULL << (azslParser::Uint4x2 - 194)) - | (1ULL << (azslParser::Uint4x3 - 194)) - | (1ULL << (azslParser::Uint4x4 - 194)) - | (1ULL << (azslParser::Dword - 194)) - | (1ULL << (azslParser::Dword1 - 194)) - | (1ULL << (azslParser::Dword2 - 194)) - | (1ULL << (azslParser::Dword3 - 194)) - | (1ULL << (azslParser::Dword4 - 194)) - | (1ULL << (azslParser::Dword1x1 - 194)) - | (1ULL << (azslParser::Dword1x2 - 194)) - | (1ULL << (azslParser::Dword1x3 - 194)) - | (1ULL << (azslParser::Dword1x4 - 194)) - | (1ULL << (azslParser::Dword2x1 - 194)) - | (1ULL << (azslParser::Dword2x2 - 194)) - | (1ULL << (azslParser::Dword2x3 - 194)) - | (1ULL << (azslParser::Dword2x4 - 194)) - | (1ULL << (azslParser::Dword3x1 - 194)) - | (1ULL << (azslParser::Dword3x2 - 194)) - | (1ULL << (azslParser::Dword3x3 - 194)) - | (1ULL << (azslParser::Dword3x4 - 194)) - | (1ULL << (azslParser::Dword4x1 - 194)) - | (1ULL << (azslParser::Dword4x2 - 194)) - | (1ULL << (azslParser::Dword4x3 - 194)) - | (1ULL << (azslParser::Dword4x4 - 194)) - | (1ULL << (azslParser::Vector - 194)) - | (1ULL << (azslParser::Volatile - 194)) - | (1ULL << (azslParser::Void - 194)) - | (1ULL << (azslParser::StateObjectConfig - 194)) - | (1ULL << (azslParser::LocalRootSignature - 194)) - | (1ULL << (azslParser::GlobalRootSignature - 194)) - | (1ULL << (azslParser::SubobjectToExportsAssociation - 194)) - | (1ULL << (azslParser::RaytracingShaderConfig - 194)))) != 0) || ((((_la - 258) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 258)) & ((1ULL << (azslParser::RaytracingPipelineConfig - 258)) - | (1ULL << (azslParser::RaytracingPipelineConfig1 - 258)) - | (1ULL << (azslParser::TriangleHitGroup - 258)) - | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 258)) - | (1ULL << (azslParser::LeftBracket - 258)) - | (1ULL << (azslParser::LeftDoubleBracket - 258)))) != 0) || ((((_la - 326) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 326)) & ((1ULL << (azslParser::ColonColon - 326)) - | (1ULL << (azslParser::KW_TypeAlias - 326)) - | (1ULL << (azslParser::KW_Typedef - 326)) - | (1ULL << (azslParser::KW_Typeof - 326)) - | (1ULL << (azslParser::Identifier - 326)))) != 0)) { - setState(1118); + | (1ULL << azslParser::Enum))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (azslParser::Extern - 64)) + | (1ULL << (azslParser::Float - 64)) + | (1ULL << (azslParser::Float1 - 64)) + | (1ULL << (azslParser::Float2 - 64)) + | (1ULL << (azslParser::Float3 - 64)) + | (1ULL << (azslParser::Float4 - 64)) + | (1ULL << (azslParser::Float1x1 - 64)) + | (1ULL << (azslParser::Float1x2 - 64)) + | (1ULL << (azslParser::Float1x3 - 64)) + | (1ULL << (azslParser::Float1x4 - 64)) + | (1ULL << (azslParser::Float2x1 - 64)) + | (1ULL << (azslParser::Float2x2 - 64)) + | (1ULL << (azslParser::Float2x3 - 64)) + | (1ULL << (azslParser::Float2x4 - 64)) + | (1ULL << (azslParser::Float3x1 - 64)) + | (1ULL << (azslParser::Float3x2 - 64)) + | (1ULL << (azslParser::Float3x3 - 64)) + | (1ULL << (azslParser::Float3x4 - 64)) + | (1ULL << (azslParser::Float4x1 - 64)) + | (1ULL << (azslParser::Float4x2 - 64)) + | (1ULL << (azslParser::Float4x3 - 64)) + | (1ULL << (azslParser::Float4x4 - 64)) + | (1ULL << (azslParser::Groupshared - 64)) + | (1ULL << (azslParser::Globallycoherent - 64)) + | (1ULL << (azslParser::Half - 64)) + | (1ULL << (azslParser::Half1 - 64)) + | (1ULL << (azslParser::Half2 - 64)) + | (1ULL << (azslParser::Half3 - 64)) + | (1ULL << (azslParser::Half4 - 64)) + | (1ULL << (azslParser::Half1x1 - 64)) + | (1ULL << (azslParser::Half1x2 - 64)) + | (1ULL << (azslParser::Half1x3 - 64)) + | (1ULL << (azslParser::Half1x4 - 64)) + | (1ULL << (azslParser::Half2x1 - 64)) + | (1ULL << (azslParser::Half2x2 - 64)) + | (1ULL << (azslParser::Half2x3 - 64)) + | (1ULL << (azslParser::Half2x4 - 64)) + | (1ULL << (azslParser::Half3x1 - 64)) + | (1ULL << (azslParser::Half3x2 - 64)) + | (1ULL << (azslParser::Half3x3 - 64)) + | (1ULL << (azslParser::Half3x4 - 64)) + | (1ULL << (azslParser::Half4x1 - 64)) + | (1ULL << (azslParser::Half4x2 - 64)) + | (1ULL << (azslParser::Half4x3 - 64)) + | (1ULL << (azslParser::Half4x4 - 64)) + | (1ULL << (azslParser::In - 64)) + | (1ULL << (azslParser::Inline - 64)) + | (1ULL << (azslParser::Rootconstant - 64)) + | (1ULL << (azslParser::Inout - 64)) + | (1ULL << (azslParser::InputPatch - 64)) + | (1ULL << (azslParser::Int - 64)) + | (1ULL << (azslParser::Int16_t - 64)) + | (1ULL << (azslParser::Int32_t - 64)) + | (1ULL << (azslParser::Int64_t - 64)) + | (1ULL << (azslParser::Int1 - 64)) + | (1ULL << (azslParser::Int2 - 64)) + | (1ULL << (azslParser::Int3 - 64)) + | (1ULL << (azslParser::Int4 - 64)) + | (1ULL << (azslParser::Int1x1 - 64)))) != 0) || ((((_la - 128) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 128)) & ((1ULL << (azslParser::Int1x2 - 128)) + | (1ULL << (azslParser::Int1x3 - 128)) + | (1ULL << (azslParser::Int1x4 - 128)) + | (1ULL << (azslParser::Int2x1 - 128)) + | (1ULL << (azslParser::Int2x2 - 128)) + | (1ULL << (azslParser::Int2x3 - 128)) + | (1ULL << (azslParser::Int2x4 - 128)) + | (1ULL << (azslParser::Int3x1 - 128)) + | (1ULL << (azslParser::Int3x2 - 128)) + | (1ULL << (azslParser::Int3x3 - 128)) + | (1ULL << (azslParser::Int3x4 - 128)) + | (1ULL << (azslParser::Int4x1 - 128)) + | (1ULL << (azslParser::Int4x2 - 128)) + | (1ULL << (azslParser::Int4x3 - 128)) + | (1ULL << (azslParser::Int4x4 - 128)) + | (1ULL << (azslParser::Interface - 128)) + | (1ULL << (azslParser::Line_ - 128)) + | (1ULL << (azslParser::LineAdj - 128)) + | (1ULL << (azslParser::Linear - 128)) + | (1ULL << (azslParser::LineStream - 128)) + | (1ULL << (azslParser::Matrix - 128)) + | (1ULL << (azslParser::Nointerpolation - 128)) + | (1ULL << (azslParser::Noperspective - 128)) + | (1ULL << (azslParser::Option - 128)) + | (1ULL << (azslParser::Out - 128)) + | (1ULL << (azslParser::OutputPatch - 128)) + | (1ULL << (azslParser::Point - 128)) + | (1ULL << (azslParser::PointStream - 128)) + | (1ULL << (azslParser::Precise - 128)) + | (1ULL << (azslParser::RasterizerOrderedBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedByteAddressBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedStructuredBuffer - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture1DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2D - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture2DArray - 128)) + | (1ULL << (azslParser::RasterizerOrderedTexture3D - 128)) + | (1ULL << (azslParser::RayDesc - 128)) + | (1ULL << (azslParser::RaytracingAccelerationStructure - 128)) + | (1ULL << (azslParser::RowMajor - 128)) + | (1ULL << (azslParser::RWBuffer - 128)) + | (1ULL << (azslParser::RWByteAddressBuffer - 128)) + | (1ULL << (azslParser::RWStructuredBuffer - 128)) + | (1ULL << (azslParser::RWTexture1D - 128)) + | (1ULL << (azslParser::RWTexture1DArray - 128)) + | (1ULL << (azslParser::RWTexture2D - 128)) + | (1ULL << (azslParser::RWTexture2DArray - 128)) + | (1ULL << (azslParser::RWTexture3D - 128)) + | (1ULL << (azslParser::Sample - 128)) + | (1ULL << (azslParser::Sampler - 128)) + | (1ULL << (azslParser::SamplerCapitalS - 128)) + | (1ULL << (azslParser::SamplerComparisonState - 128)) + | (1ULL << (azslParser::SamplerStateCamel - 128)) + | (1ULL << (azslParser::SamplerState - 128)) + | (1ULL << (azslParser::Shared - 128)) + | (1ULL << (azslParser::SNorm - 128)) + | (1ULL << (azslParser::Static - 128)) + | (1ULL << (azslParser::Struct - 128)))) != 0) || ((((_la - 192) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 192)) & ((1ULL << (azslParser::StructuredBuffer - 192)) + | (1ULL << (azslParser::SubpassInput - 192)) + | (1ULL << (azslParser::SubpassInputMS - 192)) + | (1ULL << (azslParser::Texture1D - 192)) + | (1ULL << (azslParser::Texture1DArray - 192)) + | (1ULL << (azslParser::Texture2D - 192)) + | (1ULL << (azslParser::Texture2DArray - 192)) + | (1ULL << (azslParser::Texture2DMS - 192)) + | (1ULL << (azslParser::Texture2DMSArray - 192)) + | (1ULL << (azslParser::Texture3D - 192)) + | (1ULL << (azslParser::TextureCube - 192)) + | (1ULL << (azslParser::TextureCubeArray - 192)) + | (1ULL << (azslParser::Triangle - 192)) + | (1ULL << (azslParser::TriangleAdj - 192)) + | (1ULL << (azslParser::TriangleStream - 192)) + | (1ULL << (azslParser::Uniform - 192)) + | (1ULL << (azslParser::Uint - 192)) + | (1ULL << (azslParser::Uint1 - 192)) + | (1ULL << (azslParser::Uint2 - 192)) + | (1ULL << (azslParser::Uint3 - 192)) + | (1ULL << (azslParser::Uint4 - 192)) + | (1ULL << (azslParser::Uint1x1 - 192)) + | (1ULL << (azslParser::Uint1x2 - 192)) + | (1ULL << (azslParser::Uint1x3 - 192)) + | (1ULL << (azslParser::Uint1x4 - 192)) + | (1ULL << (azslParser::Uint2x1 - 192)) + | (1ULL << (azslParser::Uint2x2 - 192)) + | (1ULL << (azslParser::Uint2x3 - 192)) + | (1ULL << (azslParser::Uint2x4 - 192)) + | (1ULL << (azslParser::Uint3x1 - 192)) + | (1ULL << (azslParser::Uint3x2 - 192)) + | (1ULL << (azslParser::Uint3x3 - 192)) + | (1ULL << (azslParser::Uint3x4 - 192)) + | (1ULL << (azslParser::Uint4x1 - 192)) + | (1ULL << (azslParser::Uint4x2 - 192)) + | (1ULL << (azslParser::Uint4x3 - 192)) + | (1ULL << (azslParser::Uint4x4 - 192)) + | (1ULL << (azslParser::Uint16_t - 192)) + | (1ULL << (azslParser::Uint32_t - 192)) + | (1ULL << (azslParser::Uint64_t - 192)) + | (1ULL << (azslParser::UNorm - 192)) + | (1ULL << (azslParser::Unsigned - 192)) + | (1ULL << (azslParser::Dword - 192)) + | (1ULL << (azslParser::Dword1 - 192)) + | (1ULL << (azslParser::Dword2 - 192)) + | (1ULL << (azslParser::Dword3 - 192)) + | (1ULL << (azslParser::Dword4 - 192)) + | (1ULL << (azslParser::Dword1x1 - 192)) + | (1ULL << (azslParser::Dword1x2 - 192)) + | (1ULL << (azslParser::Dword1x3 - 192)) + | (1ULL << (azslParser::Dword1x4 - 192)) + | (1ULL << (azslParser::Dword2x1 - 192)) + | (1ULL << (azslParser::Dword2x2 - 192)) + | (1ULL << (azslParser::Dword2x3 - 192)) + | (1ULL << (azslParser::Dword2x4 - 192)) + | (1ULL << (azslParser::Dword3x1 - 192)) + | (1ULL << (azslParser::Dword3x2 - 192)) + | (1ULL << (azslParser::Dword3x3 - 192)) + | (1ULL << (azslParser::Dword3x4 - 192)) + | (1ULL << (azslParser::Dword4x1 - 192)) + | (1ULL << (azslParser::Dword4x2 - 192)) + | (1ULL << (azslParser::Dword4x3 - 192)))) != 0) || ((((_la - 256) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 256)) & ((1ULL << (azslParser::Dword4x4 - 256)) + | (1ULL << (azslParser::Vector - 256)) + | (1ULL << (azslParser::Volatile - 256)) + | (1ULL << (azslParser::Void - 256)) + | (1ULL << (azslParser::StateObjectConfig - 256)) + | (1ULL << (azslParser::LocalRootSignature - 256)) + | (1ULL << (azslParser::GlobalRootSignature - 256)) + | (1ULL << (azslParser::SubobjectToExportsAssociation - 256)) + | (1ULL << (azslParser::RaytracingShaderConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig - 256)) + | (1ULL << (azslParser::RaytracingPipelineConfig1 - 256)) + | (1ULL << (azslParser::TriangleHitGroup - 256)) + | (1ULL << (azslParser::ProceduralPrimitiveHitGroup - 256)) + | (1ULL << (azslParser::LeftBracket - 256)) + | (1ULL << (azslParser::LeftDoubleBracket - 256)))) != 0) || ((((_la - 334) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 334)) & ((1ULL << (azslParser::ColonColon - 334)) + | (1ULL << (azslParser::KW_TypeAlias - 334)) + | (1ULL << (azslParser::KW_Typedef - 334)) + | (1ULL << (azslParser::KW_Typeof - 334)) + | (1ULL << (azslParser::Identifier - 334)))) != 0)) { + setState(1111); srgMemberDeclaration(); - setState(1123); + setState(1116); _errHandler->sync(this); _la = _input->LA(1); } - setState(1124); + setState(1117); match(azslParser::RightBrace); } @@ -15776,7 +15319,7 @@ void azslParser::AttributedSrgDefinitionContext::exitRule(tree::ParseTreeListene azslParser::AttributedSrgDefinitionContext* azslParser::attributedSrgDefinition() { AttributedSrgDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 224, azslParser::RuleAttributedSrgDefinition); + enterRule(_localctx, 222, azslParser::RuleAttributedSrgDefinition); size_t _la = 0; #if __cplusplus > 201703L @@ -15788,19 +15331,19 @@ azslParser::AttributedSrgDefinitionContext* azslParser::attributedSrgDefinition( }); try { enterOuterAlt(_localctx, 1); - setState(1129); + setState(1122); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::LeftBracket || _la == azslParser::LeftDoubleBracket) { - setState(1126); + setState(1119); attributeSpecifierAny(); - setState(1131); + setState(1124); _errHandler->sync(this); _la = _input->LA(1); } - setState(1132); + setState(1125); srgDefinition(); } @@ -15866,7 +15409,7 @@ void azslParser::SrgMemberDeclarationContext::exitRule(tree::ParseTreeListener * azslParser::SrgMemberDeclarationContext* azslParser::srgMemberDeclaration() { SrgMemberDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 226, azslParser::RuleSrgMemberDeclaration); + enterRule(_localctx, 224, azslParser::RuleSrgMemberDeclaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -15876,54 +15419,54 @@ azslParser::SrgMemberDeclarationContext* azslParser::srgMemberDeclaration() { exitRule(); }); try { - setState(1141); + setState(1134); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 99, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 98, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1134); + setState(1127); structDefinitionStatement(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1135); + setState(1128); attributedFunctionDeclaration(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(1136); + setState(1129); attributedFunctionDefinition(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(1137); + setState(1130); variableDeclarationStatement(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(1138); + setState(1131); enumDefinitionStatement(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(1139); + setState(1132); typeAliasingDefinitionStatement(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(1140); + setState(1133); attributeSpecifierAny(); break; } @@ -15979,7 +15522,7 @@ void azslParser::SrgSemanticContext::exitRule(tree::ParseTreeListener *listener) azslParser::SrgSemanticContext* azslParser::srgSemantic() { SrgSemanticContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 228, azslParser::RuleSrgSemantic); + enterRule(_localctx, 226, azslParser::RuleSrgSemantic); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -15990,11 +15533,11 @@ azslParser::SrgSemanticContext* azslParser::srgSemantic() { }); try { enterOuterAlt(_localctx, 1); - setState(1143); + setState(1136); match(azslParser::ShaderResourceGroupSemantic); - setState(1144); + setState(1137); antlrcpp::downCast(_localctx)->Name = match(azslParser::Identifier); - setState(1145); + setState(1138); srgSemanticBodyDeclaration(); } @@ -16044,7 +15587,7 @@ void azslParser::AttributedSrgSemanticContext::exitRule(tree::ParseTreeListener azslParser::AttributedSrgSemanticContext* azslParser::attributedSrgSemantic() { AttributedSrgSemanticContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 230, azslParser::RuleAttributedSrgSemantic); + enterRule(_localctx, 228, azslParser::RuleAttributedSrgSemantic); size_t _la = 0; #if __cplusplus > 201703L @@ -16056,19 +15599,19 @@ azslParser::AttributedSrgSemanticContext* azslParser::attributedSrgSemantic() { }); try { enterOuterAlt(_localctx, 1); - setState(1150); + setState(1143); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::LeftBracket || _la == azslParser::LeftDoubleBracket) { - setState(1147); + setState(1140); attributeSpecifierAny(); - setState(1152); + setState(1145); _errHandler->sync(this); _la = _input->LA(1); } - setState(1153); + setState(1146); srgSemantic(); } @@ -16122,7 +15665,7 @@ void azslParser::SrgSemanticBodyDeclarationContext::exitRule(tree::ParseTreeList azslParser::SrgSemanticBodyDeclarationContext* azslParser::srgSemanticBodyDeclaration() { SrgSemanticBodyDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 232, azslParser::RuleSrgSemanticBodyDeclaration); + enterRule(_localctx, 230, azslParser::RuleSrgSemanticBodyDeclaration); size_t _la = 0; #if __cplusplus > 201703L @@ -16134,21 +15677,21 @@ azslParser::SrgSemanticBodyDeclarationContext* azslParser::srgSemanticBodyDeclar }); try { enterOuterAlt(_localctx, 1); - setState(1155); + setState(1148); match(azslParser::LeftBrace); - setState(1159); + setState(1152); _errHandler->sync(this); _la = _input->LA(1); while (_la == azslParser::FrequencyId || _la == azslParser::ShaderVariantFallback) { - setState(1156); + setState(1149); srgSemanticMemberDeclaration(); - setState(1161); + setState(1154); _errHandler->sync(this); _la = _input->LA(1); } - setState(1162); + setState(1155); match(azslParser::RightBrace); } @@ -16206,7 +15749,7 @@ void azslParser::SrgSemanticMemberDeclarationContext::exitRule(tree::ParseTreeLi azslParser::SrgSemanticMemberDeclarationContext* azslParser::srgSemanticMemberDeclaration() { SrgSemanticMemberDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 234, azslParser::RuleSrgSemanticMemberDeclaration); + enterRule(_localctx, 232, azslParser::RuleSrgSemanticMemberDeclaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -16216,31 +15759,31 @@ azslParser::SrgSemanticMemberDeclarationContext* azslParser::srgSemanticMemberDe exitRule(); }); try { - setState(1174); + setState(1167); _errHandler->sync(this); switch (_input->LA(1)) { case azslParser::FrequencyId: { enterOuterAlt(_localctx, 1); - setState(1164); + setState(1157); antlrcpp::downCast(_localctx)->Frequency = match(azslParser::FrequencyId); - setState(1165); + setState(1158); match(azslParser::Assign); - setState(1166); + setState(1159); antlrcpp::downCast(_localctx)->FrequencyValue = literal(); - setState(1167); + setState(1160); match(azslParser::Semi); break; } case azslParser::ShaderVariantFallback: { enterOuterAlt(_localctx, 2); - setState(1169); + setState(1162); antlrcpp::downCast(_localctx)->VariantFallback = match(azslParser::ShaderVariantFallback); - setState(1170); + setState(1163); match(azslParser::Assign); - setState(1171); + setState(1164); antlrcpp::downCast(_localctx)->VariantFallbackValue = literal(); - setState(1172); + setState(1165); match(azslParser::Semi); break; } @@ -16300,7 +15843,7 @@ void azslParser::SamplerBodyDeclarationContext::exitRule(tree::ParseTreeListener azslParser::SamplerBodyDeclarationContext* azslParser::samplerBodyDeclaration() { SamplerBodyDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 236, azslParser::RuleSamplerBodyDeclaration); + enterRule(_localctx, 234, azslParser::RuleSamplerBodyDeclaration); size_t _la = 0; #if __cplusplus > 201703L @@ -16312,32 +15855,32 @@ azslParser::SamplerBodyDeclarationContext* azslParser::samplerBodyDeclaration() }); try { enterOuterAlt(_localctx, 1); - setState(1176); + setState(1169); match(azslParser::LeftBrace); - setState(1180); + setState(1173); _errHandler->sync(this); _la = _input->LA(1); - while (((((_la - 262) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 262)) & ((1ULL << (azslParser::ADDRESS_U - 262)) - | (1ULL << (azslParser::ADDRESS_V - 262)) - | (1ULL << (azslParser::ADDRESS_W - 262)) - | (1ULL << (azslParser::BORDER_COLOR - 262)) - | (1ULL << (azslParser::MIN_FILTER - 262)) - | (1ULL << (azslParser::MAG_FILTER - 262)) - | (1ULL << (azslParser::MIP_FILTER - 262)) - | (1ULL << (azslParser::MAX_ANISOTROPY - 262)) - | (1ULL << (azslParser::MAX_LOD - 262)) - | (1ULL << (azslParser::MIN_LOD - 262)) - | (1ULL << (azslParser::MIP_LOD_BIAS - 262)) - | (1ULL << (azslParser::COMPARISON_FUNC - 262)) - | (1ULL << (azslParser::REDUCTION_TYPE - 262)))) != 0)) { - setState(1177); + while (((((_la - 270) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 270)) & ((1ULL << (azslParser::ADDRESS_U - 270)) + | (1ULL << (azslParser::ADDRESS_V - 270)) + | (1ULL << (azslParser::ADDRESS_W - 270)) + | (1ULL << (azslParser::BORDER_COLOR - 270)) + | (1ULL << (azslParser::MIN_FILTER - 270)) + | (1ULL << (azslParser::MAG_FILTER - 270)) + | (1ULL << (azslParser::MIP_FILTER - 270)) + | (1ULL << (azslParser::MAX_ANISOTROPY - 270)) + | (1ULL << (azslParser::MAX_LOD - 270)) + | (1ULL << (azslParser::MIN_LOD - 270)) + | (1ULL << (azslParser::MIP_LOD_BIAS - 270)) + | (1ULL << (azslParser::COMPARISON_FUNC - 270)) + | (1ULL << (azslParser::REDUCTION_TYPE - 270)))) != 0)) { + setState(1170); samplerMemberDeclaration(); - setState(1182); + setState(1175); _errHandler->sync(this); _la = _input->LA(1); } - setState(1183); + setState(1176); match(azslParser::RightBrace); } @@ -16427,7 +15970,7 @@ void azslParser::SamplerMemberDeclarationContext::exitRule(tree::ParseTreeListen azslParser::SamplerMemberDeclarationContext* azslParser::samplerMemberDeclaration() { SamplerMemberDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 238, azslParser::RuleSamplerMemberDeclaration); + enterRule(_localctx, 236, azslParser::RuleSamplerMemberDeclaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -16437,96 +15980,96 @@ azslParser::SamplerMemberDeclarationContext* azslParser::samplerMemberDeclaratio exitRule(); }); try { - setState(1198); + setState(1191); _errHandler->sync(this); switch (_input->LA(1)) { case azslParser::MAX_ANISOTROPY: { enterOuterAlt(_localctx, 1); - setState(1185); + setState(1178); maxAnisotropyOption(); break; } case azslParser::MIN_FILTER: { enterOuterAlt(_localctx, 2); - setState(1186); + setState(1179); minFilterOption(); break; } case azslParser::MAG_FILTER: { enterOuterAlt(_localctx, 3); - setState(1187); + setState(1180); magFilterOption(); break; } case azslParser::MIP_FILTER: { enterOuterAlt(_localctx, 4); - setState(1188); + setState(1181); mipFilterOption(); break; } case azslParser::REDUCTION_TYPE: { enterOuterAlt(_localctx, 5); - setState(1189); + setState(1182); reductionTypeOption(); break; } case azslParser::COMPARISON_FUNC: { enterOuterAlt(_localctx, 6); - setState(1190); + setState(1183); comparisonFunctionOption(); break; } case azslParser::ADDRESS_U: { enterOuterAlt(_localctx, 7); - setState(1191); + setState(1184); addressUOption(); break; } case azslParser::ADDRESS_V: { enterOuterAlt(_localctx, 8); - setState(1192); + setState(1185); addressVOption(); break; } case azslParser::ADDRESS_W: { enterOuterAlt(_localctx, 9); - setState(1193); + setState(1186); addressWOption(); break; } case azslParser::MIN_LOD: { enterOuterAlt(_localctx, 10); - setState(1194); + setState(1187); minLodOption(); break; } case azslParser::MAX_LOD: { enterOuterAlt(_localctx, 11); - setState(1195); + setState(1188); maxLodOption(); break; } case azslParser::MIP_LOD_BIAS: { enterOuterAlt(_localctx, 12); - setState(1196); + setState(1189); mipLodBiasOption(); break; } case azslParser::BORDER_COLOR: { enterOuterAlt(_localctx, 13); - setState(1197); + setState(1190); borderColorOption(); break; } @@ -16586,7 +16129,7 @@ void azslParser::MaxAnisotropyOptionContext::exitRule(tree::ParseTreeListener *l azslParser::MaxAnisotropyOptionContext* azslParser::maxAnisotropyOption() { MaxAnisotropyOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 240, azslParser::RuleMaxAnisotropyOption); + enterRule(_localctx, 238, azslParser::RuleMaxAnisotropyOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -16597,13 +16140,13 @@ azslParser::MaxAnisotropyOptionContext* azslParser::maxAnisotropyOption() { }); try { enterOuterAlt(_localctx, 1); - setState(1200); + setState(1193); match(azslParser::MAX_ANISOTROPY); - setState(1201); + setState(1194); match(azslParser::Assign); - setState(1202); + setState(1195); match(azslParser::IntegerLiteral); - setState(1203); + setState(1196); match(azslParser::Semi); } @@ -16657,7 +16200,7 @@ void azslParser::MinFilterOptionContext::exitRule(tree::ParseTreeListener *liste azslParser::MinFilterOptionContext* azslParser::minFilterOption() { MinFilterOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 242, azslParser::RuleMinFilterOption); + enterRule(_localctx, 240, azslParser::RuleMinFilterOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -16668,13 +16211,13 @@ azslParser::MinFilterOptionContext* azslParser::minFilterOption() { }); try { enterOuterAlt(_localctx, 1); - setState(1205); + setState(1198); match(azslParser::MIN_FILTER); - setState(1206); + setState(1199); match(azslParser::Assign); - setState(1207); + setState(1200); filterModeEnum(); - setState(1208); + setState(1201); match(azslParser::Semi); } @@ -16728,7 +16271,7 @@ void azslParser::MagFilterOptionContext::exitRule(tree::ParseTreeListener *liste azslParser::MagFilterOptionContext* azslParser::magFilterOption() { MagFilterOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 244, azslParser::RuleMagFilterOption); + enterRule(_localctx, 242, azslParser::RuleMagFilterOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -16739,13 +16282,13 @@ azslParser::MagFilterOptionContext* azslParser::magFilterOption() { }); try { enterOuterAlt(_localctx, 1); - setState(1210); + setState(1203); match(azslParser::MAG_FILTER); - setState(1211); + setState(1204); match(azslParser::Assign); - setState(1212); + setState(1205); filterModeEnum(); - setState(1213); + setState(1206); match(azslParser::Semi); } @@ -16799,7 +16342,7 @@ void azslParser::MipFilterOptionContext::exitRule(tree::ParseTreeListener *liste azslParser::MipFilterOptionContext* azslParser::mipFilterOption() { MipFilterOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 246, azslParser::RuleMipFilterOption); + enterRule(_localctx, 244, azslParser::RuleMipFilterOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -16810,13 +16353,13 @@ azslParser::MipFilterOptionContext* azslParser::mipFilterOption() { }); try { enterOuterAlt(_localctx, 1); - setState(1215); + setState(1208); match(azslParser::MIP_FILTER); - setState(1216); + setState(1209); match(azslParser::Assign); - setState(1217); + setState(1210); filterModeEnum(); - setState(1218); + setState(1211); match(azslParser::Semi); } @@ -16870,7 +16413,7 @@ void azslParser::ReductionTypeOptionContext::exitRule(tree::ParseTreeListener *l azslParser::ReductionTypeOptionContext* azslParser::reductionTypeOption() { ReductionTypeOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 248, azslParser::RuleReductionTypeOption); + enterRule(_localctx, 246, azslParser::RuleReductionTypeOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -16881,13 +16424,13 @@ azslParser::ReductionTypeOptionContext* azslParser::reductionTypeOption() { }); try { enterOuterAlt(_localctx, 1); - setState(1220); + setState(1213); match(azslParser::REDUCTION_TYPE); - setState(1221); + setState(1214); match(azslParser::Assign); - setState(1222); + setState(1215); reductionTypeEnum(); - setState(1223); + setState(1216); match(azslParser::Semi); } @@ -16941,7 +16484,7 @@ void azslParser::ComparisonFunctionOptionContext::exitRule(tree::ParseTreeListen azslParser::ComparisonFunctionOptionContext* azslParser::comparisonFunctionOption() { ComparisonFunctionOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 250, azslParser::RuleComparisonFunctionOption); + enterRule(_localctx, 248, azslParser::RuleComparisonFunctionOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -16952,13 +16495,13 @@ azslParser::ComparisonFunctionOptionContext* azslParser::comparisonFunctionOptio }); try { enterOuterAlt(_localctx, 1); - setState(1225); + setState(1218); match(azslParser::COMPARISON_FUNC); - setState(1226); + setState(1219); match(azslParser::Assign); - setState(1227); + setState(1220); comparisonFunctionEnum(); - setState(1228); + setState(1221); match(azslParser::Semi); } @@ -17012,7 +16555,7 @@ void azslParser::AddressUOptionContext::exitRule(tree::ParseTreeListener *listen azslParser::AddressUOptionContext* azslParser::addressUOption() { AddressUOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 252, azslParser::RuleAddressUOption); + enterRule(_localctx, 250, azslParser::RuleAddressUOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -17023,13 +16566,13 @@ azslParser::AddressUOptionContext* azslParser::addressUOption() { }); try { enterOuterAlt(_localctx, 1); - setState(1230); + setState(1223); match(azslParser::ADDRESS_U); - setState(1231); + setState(1224); match(azslParser::Assign); - setState(1232); + setState(1225); addressModeEnum(); - setState(1233); + setState(1226); match(azslParser::Semi); } @@ -17083,7 +16626,7 @@ void azslParser::AddressVOptionContext::exitRule(tree::ParseTreeListener *listen azslParser::AddressVOptionContext* azslParser::addressVOption() { AddressVOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 254, azslParser::RuleAddressVOption); + enterRule(_localctx, 252, azslParser::RuleAddressVOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -17094,13 +16637,13 @@ azslParser::AddressVOptionContext* azslParser::addressVOption() { }); try { enterOuterAlt(_localctx, 1); - setState(1235); + setState(1228); match(azslParser::ADDRESS_V); - setState(1236); + setState(1229); match(azslParser::Assign); - setState(1237); + setState(1230); addressModeEnum(); - setState(1238); + setState(1231); match(azslParser::Semi); } @@ -17154,7 +16697,7 @@ void azslParser::AddressWOptionContext::exitRule(tree::ParseTreeListener *listen azslParser::AddressWOptionContext* azslParser::addressWOption() { AddressWOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 256, azslParser::RuleAddressWOption); + enterRule(_localctx, 254, azslParser::RuleAddressWOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -17165,13 +16708,13 @@ azslParser::AddressWOptionContext* azslParser::addressWOption() { }); try { enterOuterAlt(_localctx, 1); - setState(1240); + setState(1233); match(azslParser::ADDRESS_W); - setState(1241); + setState(1234); match(azslParser::Assign); - setState(1242); + setState(1235); addressModeEnum(); - setState(1243); + setState(1236); match(azslParser::Semi); } @@ -17225,7 +16768,7 @@ void azslParser::MinLodOptionContext::exitRule(tree::ParseTreeListener *listener azslParser::MinLodOptionContext* azslParser::minLodOption() { MinLodOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 258, azslParser::RuleMinLodOption); + enterRule(_localctx, 256, azslParser::RuleMinLodOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -17236,13 +16779,13 @@ azslParser::MinLodOptionContext* azslParser::minLodOption() { }); try { enterOuterAlt(_localctx, 1); - setState(1245); + setState(1238); match(azslParser::MIN_LOD); - setState(1246); + setState(1239); match(azslParser::Assign); - setState(1247); + setState(1240); match(azslParser::FloatLiteral); - setState(1248); + setState(1241); match(azslParser::Semi); } @@ -17296,7 +16839,7 @@ void azslParser::MaxLodOptionContext::exitRule(tree::ParseTreeListener *listener azslParser::MaxLodOptionContext* azslParser::maxLodOption() { MaxLodOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 260, azslParser::RuleMaxLodOption); + enterRule(_localctx, 258, azslParser::RuleMaxLodOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -17307,13 +16850,13 @@ azslParser::MaxLodOptionContext* azslParser::maxLodOption() { }); try { enterOuterAlt(_localctx, 1); - setState(1250); + setState(1243); match(azslParser::MAX_LOD); - setState(1251); + setState(1244); match(azslParser::Assign); - setState(1252); + setState(1245); match(azslParser::FloatLiteral); - setState(1253); + setState(1246); match(azslParser::Semi); } @@ -17367,7 +16910,7 @@ void azslParser::MipLodBiasOptionContext::exitRule(tree::ParseTreeListener *list azslParser::MipLodBiasOptionContext* azslParser::mipLodBiasOption() { MipLodBiasOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 262, azslParser::RuleMipLodBiasOption); + enterRule(_localctx, 260, azslParser::RuleMipLodBiasOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -17378,13 +16921,13 @@ azslParser::MipLodBiasOptionContext* azslParser::mipLodBiasOption() { }); try { enterOuterAlt(_localctx, 1); - setState(1255); + setState(1248); match(azslParser::MIP_LOD_BIAS); - setState(1256); + setState(1249); match(azslParser::Assign); - setState(1257); + setState(1250); match(azslParser::FloatLiteral); - setState(1258); + setState(1251); match(azslParser::Semi); } @@ -17438,7 +16981,7 @@ void azslParser::BorderColorOptionContext::exitRule(tree::ParseTreeListener *lis azslParser::BorderColorOptionContext* azslParser::borderColorOption() { BorderColorOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 264, azslParser::RuleBorderColorOption); + enterRule(_localctx, 262, azslParser::RuleBorderColorOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -17449,13 +16992,13 @@ azslParser::BorderColorOptionContext* azslParser::borderColorOption() { }); try { enterOuterAlt(_localctx, 1); - setState(1260); + setState(1253); match(azslParser::BORDER_COLOR); - setState(1261); + setState(1254); match(azslParser::Assign); - setState(1262); + setState(1255); borderColorEnum(); - setState(1263); + setState(1256); match(azslParser::Semi); } @@ -17501,7 +17044,7 @@ void azslParser::FilterModeEnumContext::exitRule(tree::ParseTreeListener *listen azslParser::FilterModeEnumContext* azslParser::filterModeEnum() { FilterModeEnumContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 266, azslParser::RuleFilterModeEnum); + enterRule(_localctx, 264, azslParser::RuleFilterModeEnum); size_t _la = 0; #if __cplusplus > 201703L @@ -17513,7 +17056,7 @@ azslParser::FilterModeEnumContext* azslParser::filterModeEnum() { }); try { enterOuterAlt(_localctx, 1); - setState(1265); + setState(1258); _la = _input->LA(1); if (!(_la == azslParser::FILTER_MODE_POINT @@ -17576,7 +17119,7 @@ void azslParser::ReductionTypeEnumContext::exitRule(tree::ParseTreeListener *lis azslParser::ReductionTypeEnumContext* azslParser::reductionTypeEnum() { ReductionTypeEnumContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 268, azslParser::RuleReductionTypeEnum); + enterRule(_localctx, 266, azslParser::RuleReductionTypeEnum); size_t _la = 0; #if __cplusplus > 201703L @@ -17588,13 +17131,13 @@ azslParser::ReductionTypeEnumContext* azslParser::reductionTypeEnum() { }); try { enterOuterAlt(_localctx, 1); - setState(1267); + setState(1260); _la = _input->LA(1); - if (!(((((_la - 277) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 277)) & ((1ULL << (azslParser::REDUCTION_TYPE_FILTER - 277)) - | (1ULL << (azslParser::REDUCTION_TYPE_COMPARISON - 277)) - | (1ULL << (azslParser::REDUCTION_TYPE_MINIMUM - 277)) - | (1ULL << (azslParser::REDUCTION_TYPE_MAXIMUM - 277)))) != 0))) { + if (!(((((_la - 285) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 285)) & ((1ULL << (azslParser::REDUCTION_TYPE_FILTER - 285)) + | (1ULL << (azslParser::REDUCTION_TYPE_COMPARISON - 285)) + | (1ULL << (azslParser::REDUCTION_TYPE_MINIMUM - 285)) + | (1ULL << (azslParser::REDUCTION_TYPE_MAXIMUM - 285)))) != 0))) { _errHandler->recoverInline(this); } else { @@ -17657,7 +17200,7 @@ void azslParser::AddressModeEnumContext::exitRule(tree::ParseTreeListener *liste azslParser::AddressModeEnumContext* azslParser::addressModeEnum() { AddressModeEnumContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 270, azslParser::RuleAddressModeEnum); + enterRule(_localctx, 268, azslParser::RuleAddressModeEnum); size_t _la = 0; #if __cplusplus > 201703L @@ -17669,14 +17212,14 @@ azslParser::AddressModeEnumContext* azslParser::addressModeEnum() { }); try { enterOuterAlt(_localctx, 1); - setState(1269); + setState(1262); _la = _input->LA(1); - if (!(((((_la - 281) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 281)) & ((1ULL << (azslParser::ADDRESS_MODE_WRAP - 281)) - | (1ULL << (azslParser::ADDRESS_MODE_MIRROR - 281)) - | (1ULL << (azslParser::ADDRESS_MODE_CLAMP - 281)) - | (1ULL << (azslParser::ADDRESS_MODE_BORDER - 281)) - | (1ULL << (azslParser::ADDRESS_MODE_MIRROR_ONCE - 281)))) != 0))) { + if (!(((((_la - 289) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 289)) & ((1ULL << (azslParser::ADDRESS_MODE_WRAP - 289)) + | (1ULL << (azslParser::ADDRESS_MODE_MIRROR - 289)) + | (1ULL << (azslParser::ADDRESS_MODE_CLAMP - 289)) + | (1ULL << (azslParser::ADDRESS_MODE_BORDER - 289)) + | (1ULL << (azslParser::ADDRESS_MODE_MIRROR_ONCE - 289)))) != 0))) { _errHandler->recoverInline(this); } else { @@ -17751,7 +17294,7 @@ void azslParser::ComparisonFunctionEnumContext::exitRule(tree::ParseTreeListener azslParser::ComparisonFunctionEnumContext* azslParser::comparisonFunctionEnum() { ComparisonFunctionEnumContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 272, azslParser::RuleComparisonFunctionEnum); + enterRule(_localctx, 270, azslParser::RuleComparisonFunctionEnum); size_t _la = 0; #if __cplusplus > 201703L @@ -17763,17 +17306,17 @@ azslParser::ComparisonFunctionEnumContext* azslParser::comparisonFunctionEnum() }); try { enterOuterAlt(_localctx, 1); - setState(1271); + setState(1264); _la = _input->LA(1); - if (!(((((_la - 286) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 286)) & ((1ULL << (azslParser::COMPARISON_FUNCTION_NEVER - 286)) - | (1ULL << (azslParser::COMPARISON_FUNCTION_LESS - 286)) - | (1ULL << (azslParser::COMPARISON_FUNCTION_EQUAL - 286)) - | (1ULL << (azslParser::COMPARISON_FUNCTION_LESS_EQUAL - 286)) - | (1ULL << (azslParser::COMPARISON_FUNCTION_GREATER - 286)) - | (1ULL << (azslParser::COMPARISON_FUNCTION_NOT_EQUAL - 286)) - | (1ULL << (azslParser::COMPARISON_FUNCTION_GREATER_EQUAL - 286)) - | (1ULL << (azslParser::COMPARISON_FUNCTION_ALWAYS - 286)))) != 0))) { + if (!(((((_la - 294) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 294)) & ((1ULL << (azslParser::COMPARISON_FUNCTION_NEVER - 294)) + | (1ULL << (azslParser::COMPARISON_FUNCTION_LESS - 294)) + | (1ULL << (azslParser::COMPARISON_FUNCTION_EQUAL - 294)) + | (1ULL << (azslParser::COMPARISON_FUNCTION_LESS_EQUAL - 294)) + | (1ULL << (azslParser::COMPARISON_FUNCTION_GREATER - 294)) + | (1ULL << (azslParser::COMPARISON_FUNCTION_NOT_EQUAL - 294)) + | (1ULL << (azslParser::COMPARISON_FUNCTION_GREATER_EQUAL - 294)) + | (1ULL << (azslParser::COMPARISON_FUNCTION_ALWAYS - 294)))) != 0))) { _errHandler->recoverInline(this); } else { @@ -17828,7 +17371,7 @@ void azslParser::BorderColorEnumContext::exitRule(tree::ParseTreeListener *liste azslParser::BorderColorEnumContext* azslParser::borderColorEnum() { BorderColorEnumContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 274, azslParser::RuleBorderColorEnum); + enterRule(_localctx, 272, azslParser::RuleBorderColorEnum); size_t _la = 0; #if __cplusplus > 201703L @@ -17840,12 +17383,12 @@ azslParser::BorderColorEnumContext* azslParser::borderColorEnum() { }); try { enterOuterAlt(_localctx, 1); - setState(1273); + setState(1266); _la = _input->LA(1); - if (!(((((_la - 294) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 294)) & ((1ULL << (azslParser::BORDER_COLOR_OPAQUE_BLACK - 294)) - | (1ULL << (azslParser::BORDER_COLOR_TRANSPARENT_BLACK - 294)) - | (1ULL << (azslParser::BORDER_COLOR_OPAQUE_WHITE - 294)))) != 0))) { + if (!(((((_la - 302) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 302)) & ((1ULL << (azslParser::BORDER_COLOR_OPAQUE_BLACK - 302)) + | (1ULL << (azslParser::BORDER_COLOR_TRANSPARENT_BLACK - 302)) + | (1ULL << (azslParser::BORDER_COLOR_OPAQUE_WHITE - 302)))) != 0))) { _errHandler->recoverInline(this); } else { @@ -17933,7 +17476,7 @@ std::vector azslParser::_ruleNames = { "textureTypeMS", "msTexturePredefinedType", "vectorType", "genericVectorType", "scalarOrVectorType", "scalarOrVectorOrMatrixType", "matrixType", "genericMatrixPredefinedType", "registerAllocation", "samplerStateProperty", "literal", "leadingTypeFunctionSignature", - "hlslFunctionDefinition", "hlslFunctionDeclaration", "functionType", "userDefinedType", + "hlslFunctionDefinition", "hlslFunctionDeclaration", "userDefinedType", "associatedTypeDeclaration", "typedefStatement", "typealiasStatement", "typeAliasingDefinitionStatement", "typeofExpression", "genericParameterList", "genericTypeDefinition", "genericConstraint", "languageDefinedConstraint", @@ -17954,46 +17497,47 @@ std::vector azslParser::_literalNames = { "'bool2x2'", "'bool2x3'", "'bool2x4'", "'bool3x1'", "'bool3x2'", "'bool3x3'", "'bool3x4'", "'bool4x1'", "'bool4x2'", "'bool4x3'", "'bool4x4'", "'Buffer'", "'BuiltInTriangleIntersectionAttributes'", "'ByteAddressBuffer'", "'break'", - "'case'", "'cbuffer'", "'constantbuffer'", "'ConstantBuffer'", "'centroid'", + "'case'", "'cbuffer'", "'centroid'", "'constantbuffer'", "'ConstantBuffer'", "'class'", "'column_major'", "'const'", "'ConsumeStructuredBuffer'", "'continue'", "'default'", "'discard'", "'do'", "'double'", "'double1'", "'double2'", "'double3'", "'double4'", "'double1x1'", "'double1x2'", "'double1x3'", "'double1x4'", "'double2x1'", "'double2x2'", "'double2x3'", "'double2x4'", "'double3x1'", "'double3x2'", "'double3x3'", "'double3x4'", "'double4x1'", - "'double4x2'", "'double4x3'", "'double4x4'", "'else'", "'enum'", "'extern'", - "'FeedbackTexture2D'", "'FeedbackTexture2DArray'", "'float'", "'float1'", - "'float2'", "'float3'", "'float4'", "'float1x1'", "'float1x2'", "'float1x3'", - "'float1x4'", "'float2x1'", "'float2x2'", "'float2x3'", "'float2x4'", - "'float3x1'", "'float3x2'", "'float3x3'", "'float3x4'", "'float4x1'", - "'float4x2'", "'float4x3'", "'float4x4'", "'for'", "'groupshared'", "'global'", - "'half'", "'half1'", "'half2'", "'half3'", "'half4'", "'half1x1'", "'half1x2'", - "'half1x3'", "'half1x4'", "'half2x1'", "'half2x2'", "'half2x3'", "'half2x4'", - "'half3x1'", "'half3x2'", "'half3x3'", "'half3x4'", "'half4x1'", "'half4x2'", - "'half4x3'", "'half4x4'", "'if'", "'in'", "'inline'", "'rootconstant'", - "", "'InputPatch'", "'int'", "'int32_t'", "'int64_t'", "'int1'", "'int2'", - "'int3'", "'int4'", "'int1x1'", "'int1x2'", "'int1x3'", "'int1x4'", "'int2x1'", - "'int2x2'", "'int2x3'", "'int2x4'", "'int3x1'", "'int3x2'", "'int3x3'", - "'int3x4'", "'int4x1'", "'int4x2'", "'int4x3'", "'int4x4'", "'interface'", - "'line'", "'lineadj'", "'linear'", "'LineStream'", "'long'", "'matrix'", - "'nointerpolation'", "'noperspective'", "'option'", "'out'", "'OutputPatch'", - "'override'", "'partial'", "'packoffset'", "'point'", "'PointStream'", - "'precise'", "'RasterizerOrderedBuffer'", "'RasterizerOrderedByteAddressBuffer'", - "'RasterizerOrderedStructuredBuffer'", "'RasterizerOrderedTexture1D'", - "'RasterizerOrderedTexture1DArray'", "'RasterizerOrderedTexture2D'", "'RasterizerOrderedTexture2DArray'", - "'RasterizerOrderedTexture3D'", "'RayDesc'", "'RaytracingAccelerationStructure'", - "'register'", "'return'", "'row_major'", "'RWBuffer'", "'RWByteAddressBuffer'", - "'RWStructuredBuffer'", "'RWTexture1D'", "'RWTexture1DArray'", "'RWTexture2D'", - "'RWTexture2DArray'", "'RWTexture3D'", "'sample'", "'sampler'", "'Sampler'", - "'SamplerComparisonState'", "'SamplerState'", "'shared'", "'static'", - "'struct'", "'StructuredBuffer'", "'SubpassInput'", "'SubpassInputMS'", - "'switch'", "'Texture1D'", "'Texture1DArray'", "'Texture2D'", "'Texture2DArray'", - "'Texture2DMS'", "'Texture2DMSArray'", "'Texture3D'", "'TextureCube'", - "'TextureCubeArray'", "'triangle'", "'triangleadj'", "'TriangleStream'", - "'uniform'", "'uint'", "'uint32_t'", "'uint64_t'", "'unsigned int'", "'uint1'", - "'uint2'", "'uint3'", "'uint4'", "'uint1x1'", "'uint1x2'", "'uint1x3'", - "'uint1x4'", "'uint2x1'", "'uint2x2'", "'uint2x3'", "'uint2x4'", "'uint3x1'", - "'uint3x2'", "'uint3x3'", "'uint3x4'", "'uint4x1'", "'uint4x2'", "'uint4x3'", - "'uint4x4'", "'dword'", "'dword1'", "'dword2'", "'dword3'", "'dword4'", + "'double4x2'", "'double4x3'", "'double4x4'", "'else'", "'enum'", "'export'", + "'extern'", "'FeedbackTexture2D'", "'FeedbackTexture2DArray'", "'float'", + "'float1'", "'float2'", "'float3'", "'float4'", "'float1x1'", "'float1x2'", + "'float1x3'", "'float1x4'", "'float2x1'", "'float2x2'", "'float2x3'", + "'float2x4'", "'float3x1'", "'float3x2'", "'float3x3'", "'float3x4'", + "'float4x1'", "'float4x2'", "'float4x3'", "'float4x4'", "'for'", "'groupshared'", + "'globallycoherent'", "'global'", "'half'", "'half1'", "'half2'", "'half3'", + "'half4'", "'half1x1'", "'half1x2'", "'half1x3'", "'half1x4'", "'half2x1'", + "'half2x2'", "'half2x3'", "'half2x4'", "'half3x1'", "'half3x2'", "'half3x3'", + "'half3x4'", "'half4x1'", "'half4x2'", "'half4x3'", "'half4x4'", "'if'", + "'in'", "'inline'", "'rootconstant'", "", "'InputPatch'", "'int'", "'int16_t'", + "'int32_t'", "'int64_t'", "'int1'", "'int2'", "'int3'", "'int4'", "'int1x1'", + "'int1x2'", "'int1x3'", "'int1x4'", "'int2x1'", "'int2x2'", "'int2x3'", + "'int2x4'", "'int3x1'", "'int3x2'", "'int3x3'", "'int3x4'", "'int4x1'", + "'int4x2'", "'int4x3'", "'int4x4'", "'interface'", "'line'", "'lineadj'", + "'linear'", "'LineStream'", "'long'", "'matrix'", "'nointerpolation'", + "'noperspective'", "'option'", "'out'", "'OutputPatch'", "'override'", + "'partial'", "'packoffset'", "'point'", "'PointStream'", "'precise'", + "'RasterizerOrderedBuffer'", "'RasterizerOrderedByteAddressBuffer'", "'RasterizerOrderedStructuredBuffer'", + "'RasterizerOrderedTexture1D'", "'RasterizerOrderedTexture1DArray'", "'RasterizerOrderedTexture2D'", + "'RasterizerOrderedTexture2DArray'", "'RasterizerOrderedTexture3D'", "'RayDesc'", + "'RaytracingAccelerationStructure'", "'register'", "'return'", "'row_major'", + "'RWBuffer'", "'RWByteAddressBuffer'", "'RWStructuredBuffer'", "'RWTexture1D'", + "'RWTexture1DArray'", "'RWTexture2D'", "'RWTexture2DArray'", "'RWTexture3D'", + "'sample'", "'sampler'", "'Sampler'", "'SamplerComparisonState'", "'SamplerState'", + "'sampler_state'", "'shared'", "'snorm'", "'static'", "'struct'", "'StructuredBuffer'", + "'SubpassInput'", "'SubpassInputMS'", "'switch'", "'tbuffer'", "'Texture1D'", + "'Texture1DArray'", "'Texture2D'", "'Texture2DArray'", "'Texture2DMS'", + "'Texture2DMSArray'", "'Texture3D'", "'TextureCube'", "'TextureCubeArray'", + "'triangle'", "'triangleadj'", "'TriangleStream'", "'uniform'", "'uint'", + "'uint1'", "'uint2'", "'uint3'", "'uint4'", "'uint1x1'", "'uint1x2'", + "'uint1x3'", "'uint1x4'", "'uint2x1'", "'uint2x2'", "'uint2x3'", "'uint2x4'", + "'uint3x1'", "'uint3x2'", "'uint3x3'", "'uint3x4'", "'uint4x1'", "'uint4x2'", + "'uint4x3'", "'uint4x4'", "'uint16_t'", "'uint32_t'", "'uint64_t'", "'unorm'", + "'unsigned'", "'dword'", "'dword1'", "'dword2'", "'dword3'", "'dword4'", "'dword1x1'", "'dword1x2'", "'dword1x3'", "'dword1x4'", "'dword2x1'", "'dword2x2'", "'dword2x3'", "'dword2x4'", "'dword3x1'", "'dword3x2'", "'dword3x3'", "'dword3x4'", "'dword4x1'", "'dword4x2'", "'dword4x3'", @@ -18013,10 +17557,10 @@ std::vector azslParser::_literalNames = { "':'", "'::'", "';'", "','", "'='", "'*='", "'/='", "'%='", "'+='", "'-='", "'<<='", "'>>='", "'&='", "'^='", "'|='", "'=='", "'!='", "'.'", "'true'", "'false'", "'associatedtype'", "'typealias'", "'typedef'", "'fundamental'", - "'typeof'", "'__azslc_print_message'", "'__azslc_print_symbol'", "'__azslc_prtsym_fully_qualified'", - "'__azslc_prtsym_least_qualified'", "'__azslc_prtsym_constint_value'", - "'FrequencyId'", "'ShaderVariantFallback'", "'ShaderResourceGroupSemantic'", - "'ShaderResourceGroup'" + "'typeof'", "'FrequencyId'", "'ShaderVariantFallback'", "'ShaderResourceGroupSemantic'", + "'ShaderResourceGroup'", "'__azslc_print_message'", "'__azslc_print_symbol'", + "'__azslc_prtsym_fully_qualified'", "'__azslc_prtsym_least_qualified'", + "'__azslc_prtsym_constint_value'" }; std::vector azslParser::_symbolicNames = { @@ -18024,71 +17568,72 @@ std::vector azslParser::_symbolicNames = { "Bool1x1", "Bool1x2", "Bool1x3", "Bool1x4", "Bool2x1", "Bool2x2", "Bool2x3", "Bool2x4", "Bool3x1", "Bool3x2", "Bool3x3", "Bool3x4", "Bool4x1", "Bool4x2", "Bool4x3", "Bool4x4", "Buffer", "BuiltInTriangleIntersectionAttributes", - "ByteAddressBuffer", "Break", "Case", "CBuffer", "ConstantBuffer", "ConstantBufferCamel", - "Centroid", "Class", "ColumnMajor", "Const", "ConsumeStructuredBuffer", + "ByteAddressBuffer", "Break", "Case", "CBuffer", "Centroid", "ConstantBuffer", + "ConstantBufferCamel", "Class", "ColumnMajor", "Const", "ConsumeStructuredBuffer", "Continue", "Default", "Discard", "Do", "Double", "Double1", "Double2", "Double3", "Double4", "Double1x1", "Double1x2", "Double1x3", "Double1x4", "Double2x1", "Double2x2", "Double2x3", "Double2x4", "Double3x1", "Double3x2", "Double3x3", "Double3x4", "Double4x1", "Double4x2", "Double4x3", "Double4x4", - "Else", "Enum", "Extern", "FeedbackTexture2D", "FeedbackTexture2DArray", + "Else", "Enum", "Export", "Extern", "FeedbackTexture2D", "FeedbackTexture2DArray", "Float", "Float1", "Float2", "Float3", "Float4", "Float1x1", "Float1x2", "Float1x3", "Float1x4", "Float2x1", "Float2x2", "Float2x3", "Float2x4", "Float3x1", "Float3x2", "Float3x3", "Float3x4", "Float4x1", "Float4x2", - "Float4x3", "Float4x4", "For", "Groupshared", "Global", "Half", "Half1", - "Half2", "Half3", "Half4", "Half1x1", "Half1x2", "Half1x3", "Half1x4", - "Half2x1", "Half2x2", "Half2x3", "Half2x4", "Half3x1", "Half3x2", "Half3x3", - "Half3x4", "Half4x1", "Half4x2", "Half4x3", "Half4x4", "If", "In", "Inline", - "Rootconstant", "Inout", "InputPatch", "Int", "Int32_t", "Int64_t", "Int1", - "Int2", "Int3", "Int4", "Int1x1", "Int1x2", "Int1x3", "Int1x4", "Int2x1", - "Int2x2", "Int2x3", "Int2x4", "Int3x1", "Int3x2", "Int3x3", "Int3x4", - "Int4x1", "Int4x2", "Int4x3", "Int4x4", "Interface", "Line_", "LineAdj", - "Linear", "LineStream", "Long", "Matrix", "Nointerpolation", "Noperspective", - "Option", "Out", "OutputPatch", "Override", "Partial", "Packoffset", "Point", - "PointStream", "Precise", "RasterizerOrderedBuffer", "RasterizerOrderedByteAddressBuffer", - "RasterizerOrderedStructuredBuffer", "RasterizerOrderedTexture1D", "RasterizerOrderedTexture1DArray", - "RasterizerOrderedTexture2D", "RasterizerOrderedTexture2DArray", "RasterizerOrderedTexture3D", - "RayDesc", "RaytracingAccelerationStructure", "Register", "Return", "RowMajor", - "RWBuffer", "RWByteAddressBuffer", "RWStructuredBuffer", "RWTexture1D", - "RWTexture1DArray", "RWTexture2D", "RWTexture2DArray", "RWTexture3D", - "Sample", "Sampler", "SamplerCapitalS", "SamplerComparisonState", "SamplerState", - "Shared", "Static", "Struct", "StructuredBuffer", "SubpassInput", "SubpassInputMS", - "Switch", "Texture1D", "Texture1DArray", "Texture2D", "Texture2DArray", - "Texture2DMS", "Texture2DMSArray", "Texture3D", "TextureCube", "TextureCubeArray", - "Triangle", "TriangleAdj", "TriangleStream", "Uniform", "Uint", "Uint32_t", - "Uint64_t", "UnsignedInt", "Uint1", "Uint2", "Uint3", "Uint4", "Uint1x1", - "Uint1x2", "Uint1x3", "Uint1x4", "Uint2x1", "Uint2x2", "Uint2x3", "Uint2x4", - "Uint3x1", "Uint3x2", "Uint3x3", "Uint3x4", "Uint4x1", "Uint4x2", "Uint4x3", - "Uint4x4", "Dword", "Dword1", "Dword2", "Dword3", "Dword4", "Dword1x1", - "Dword1x2", "Dword1x3", "Dword1x4", "Dword2x1", "Dword2x2", "Dword2x3", - "Dword2x4", "Dword3x1", "Dword3x2", "Dword3x3", "Dword3x4", "Dword4x1", - "Dword4x2", "Dword4x3", "Dword4x4", "Vector", "Volatile", "Void", "While", - "StateObjectConfig", "LocalRootSignature", "GlobalRootSignature", "SubobjectToExportsAssociation", - "RaytracingShaderConfig", "RaytracingPipelineConfig", "RaytracingPipelineConfig1", - "TriangleHitGroup", "ProceduralPrimitiveHitGroup", "ADDRESS_U", "ADDRESS_V", - "ADDRESS_W", "BORDER_COLOR", "MIN_FILTER", "MAG_FILTER", "MIP_FILTER", - "MAX_ANISOTROPY", "MAX_LOD", "MIN_LOD", "MIP_LOD_BIAS", "COMPARISON_FUNC", - "REDUCTION_TYPE", "FILTER_MODE_POINT", "FILTER_MODE_LINEAR", "REDUCTION_TYPE_FILTER", - "REDUCTION_TYPE_COMPARISON", "REDUCTION_TYPE_MINIMUM", "REDUCTION_TYPE_MAXIMUM", - "ADDRESS_MODE_WRAP", "ADDRESS_MODE_MIRROR", "ADDRESS_MODE_CLAMP", "ADDRESS_MODE_BORDER", - "ADDRESS_MODE_MIRROR_ONCE", "COMPARISON_FUNCTION_NEVER", "COMPARISON_FUNCTION_LESS", - "COMPARISON_FUNCTION_EQUAL", "COMPARISON_FUNCTION_LESS_EQUAL", "COMPARISON_FUNCTION_GREATER", - "COMPARISON_FUNCTION_NOT_EQUAL", "COMPARISON_FUNCTION_GREATER_EQUAL", - "COMPARISON_FUNCTION_ALWAYS", "BORDER_COLOR_OPAQUE_BLACK", "BORDER_COLOR_TRANSPARENT_BLACK", - "BORDER_COLOR_OPAQUE_WHITE", "LeftParen", "RightParen", "LeftBracket", - "RightBracket", "LeftBrace", "RightBrace", "LeftDoubleBracket", "Less", - "LessEqual", "Greater", "GreaterEqual", "LeftShift", "RightShift", "Plus", - "PlusPlus", "Minus", "MinusMinus", "Star", "Div", "Mod", "And", "Or", - "AndAnd", "OrOr", "Caret", "Not", "Tilde", "Question", "Colon", "ColonColon", - "Semi", "Comma", "Assign", "StarAssign", "DivAssign", "ModAssign", "PlusAssign", - "MinusAssign", "LeftShiftAssign", "RightShiftAssign", "AndAssign", "XorAssign", - "OrAssign", "Equal", "NotEqual", "Dot", "True", "False", "KW_AssociatedType", - "KW_TypeAlias", "KW_Typedef", "KW_Fundamental", "KW_Typeof", "KW_ext_print_message", - "KW_ext_print_symbol", "KW_ext_prtsym_fully_qualified", "KW_ext_prtsym_least_qualified", - "KW_ext_prtsym_constint_value", "FrequencyId", "ShaderVariantFallback", - "ShaderResourceGroupSemantic", "ShaderResourceGroup", "HLSLSemanticStream", - "HLSLSemanticSystem", "Identifier", "IntegerLiteral", "FloatLiteral", - "StringLiteral", "PragmaDirective", "LineDirective", "Whitespace", "Newline", - "BlockComment", "LineComment" + "Float4x3", "Float4x4", "For", "Groupshared", "Globallycoherent", "Global", + "Half", "Half1", "Half2", "Half3", "Half4", "Half1x1", "Half1x2", "Half1x3", + "Half1x4", "Half2x1", "Half2x2", "Half2x3", "Half2x4", "Half3x1", "Half3x2", + "Half3x3", "Half3x4", "Half4x1", "Half4x2", "Half4x3", "Half4x4", "If", + "In", "Inline", "Rootconstant", "Inout", "InputPatch", "Int", "Int16_t", + "Int32_t", "Int64_t", "Int1", "Int2", "Int3", "Int4", "Int1x1", "Int1x2", + "Int1x3", "Int1x4", "Int2x1", "Int2x2", "Int2x3", "Int2x4", "Int3x1", + "Int3x2", "Int3x3", "Int3x4", "Int4x1", "Int4x2", "Int4x3", "Int4x4", + "Interface", "Line_", "LineAdj", "Linear", "LineStream", "Long", "Matrix", + "Nointerpolation", "Noperspective", "Option", "Out", "OutputPatch", "Override", + "Partial", "Packoffset", "Point", "PointStream", "Precise", "RasterizerOrderedBuffer", + "RasterizerOrderedByteAddressBuffer", "RasterizerOrderedStructuredBuffer", + "RasterizerOrderedTexture1D", "RasterizerOrderedTexture1DArray", "RasterizerOrderedTexture2D", + "RasterizerOrderedTexture2DArray", "RasterizerOrderedTexture3D", "RayDesc", + "RaytracingAccelerationStructure", "Register", "Return", "RowMajor", "RWBuffer", + "RWByteAddressBuffer", "RWStructuredBuffer", "RWTexture1D", "RWTexture1DArray", + "RWTexture2D", "RWTexture2DArray", "RWTexture3D", "Sample", "Sampler", + "SamplerCapitalS", "SamplerComparisonState", "SamplerStateCamel", "SamplerState", + "Shared", "SNorm", "Static", "Struct", "StructuredBuffer", "SubpassInput", + "SubpassInputMS", "Switch", "TBuffer", "Texture1D", "Texture1DArray", + "Texture2D", "Texture2DArray", "Texture2DMS", "Texture2DMSArray", "Texture3D", + "TextureCube", "TextureCubeArray", "Triangle", "TriangleAdj", "TriangleStream", + "Uniform", "Uint", "Uint1", "Uint2", "Uint3", "Uint4", "Uint1x1", "Uint1x2", + "Uint1x3", "Uint1x4", "Uint2x1", "Uint2x2", "Uint2x3", "Uint2x4", "Uint3x1", + "Uint3x2", "Uint3x3", "Uint3x4", "Uint4x1", "Uint4x2", "Uint4x3", "Uint4x4", + "Uint16_t", "Uint32_t", "Uint64_t", "UNorm", "Unsigned", "Dword", "Dword1", + "Dword2", "Dword3", "Dword4", "Dword1x1", "Dword1x2", "Dword1x3", "Dword1x4", + "Dword2x1", "Dword2x2", "Dword2x3", "Dword2x4", "Dword3x1", "Dword3x2", + "Dword3x3", "Dword3x4", "Dword4x1", "Dword4x2", "Dword4x3", "Dword4x4", + "Vector", "Volatile", "Void", "While", "StateObjectConfig", "LocalRootSignature", + "GlobalRootSignature", "SubobjectToExportsAssociation", "RaytracingShaderConfig", + "RaytracingPipelineConfig", "RaytracingPipelineConfig1", "TriangleHitGroup", + "ProceduralPrimitiveHitGroup", "ADDRESS_U", "ADDRESS_V", "ADDRESS_W", + "BORDER_COLOR", "MIN_FILTER", "MAG_FILTER", "MIP_FILTER", "MAX_ANISOTROPY", + "MAX_LOD", "MIN_LOD", "MIP_LOD_BIAS", "COMPARISON_FUNC", "REDUCTION_TYPE", + "FILTER_MODE_POINT", "FILTER_MODE_LINEAR", "REDUCTION_TYPE_FILTER", "REDUCTION_TYPE_COMPARISON", + "REDUCTION_TYPE_MINIMUM", "REDUCTION_TYPE_MAXIMUM", "ADDRESS_MODE_WRAP", + "ADDRESS_MODE_MIRROR", "ADDRESS_MODE_CLAMP", "ADDRESS_MODE_BORDER", "ADDRESS_MODE_MIRROR_ONCE", + "COMPARISON_FUNCTION_NEVER", "COMPARISON_FUNCTION_LESS", "COMPARISON_FUNCTION_EQUAL", + "COMPARISON_FUNCTION_LESS_EQUAL", "COMPARISON_FUNCTION_GREATER", "COMPARISON_FUNCTION_NOT_EQUAL", + "COMPARISON_FUNCTION_GREATER_EQUAL", "COMPARISON_FUNCTION_ALWAYS", "BORDER_COLOR_OPAQUE_BLACK", + "BORDER_COLOR_TRANSPARENT_BLACK", "BORDER_COLOR_OPAQUE_WHITE", "LeftParen", + "RightParen", "LeftBracket", "RightBracket", "LeftBrace", "RightBrace", + "LeftDoubleBracket", "Less", "LessEqual", "Greater", "GreaterEqual", "LeftShift", + "RightShift", "Plus", "PlusPlus", "Minus", "MinusMinus", "Star", "Div", + "Mod", "And", "Or", "AndAnd", "OrOr", "Caret", "Not", "Tilde", "Question", + "Colon", "ColonColon", "Semi", "Comma", "Assign", "StarAssign", "DivAssign", + "ModAssign", "PlusAssign", "MinusAssign", "LeftShiftAssign", "RightShiftAssign", + "AndAssign", "XorAssign", "OrAssign", "Equal", "NotEqual", "Dot", "True", + "False", "KW_AssociatedType", "KW_TypeAlias", "KW_Typedef", "KW_Fundamental", + "KW_Typeof", "FrequencyId", "ShaderVariantFallback", "ShaderResourceGroupSemantic", + "ShaderResourceGroup", "KW_ext_print_message", "KW_ext_print_symbol", + "KW_ext_prtsym_fully_qualified", "KW_ext_prtsym_least_qualified", "KW_ext_prtsym_constint_value", + "HLSLSemanticStream", "HLSLSemanticSystem", "Identifier", "IntegerLiteral", + "FloatLiteral", "StringLiteral", "PragmaDirective", "LineDirective", "Whitespace", + "Newline", "BlockComment", "LineComment" }; dfa::Vocabulary azslParser::_vocabulary(_literalNames, _symbolicNames); @@ -18111,7 +17656,7 @@ azslParser::Initializer::Initializer() { static const uint16_t serializedATNSegment0[] = { 0x3, 0x608b, 0xa72a, 0x8133, 0xb9ed, 0x417c, 0x3be7, 0x7786, 0x5964, - 0x3, 0x174, 0x4fe, 0x4, 0x2, 0x9, 0x2, 0x4, 0x3, 0x9, 0x3, 0x4, 0x4, + 0x3, 0x17c, 0x4f7, 0x4, 0x2, 0x9, 0x2, 0x4, 0x3, 0x9, 0x3, 0x4, 0x4, 0x9, 0x4, 0x4, 0x5, 0x9, 0x5, 0x4, 0x6, 0x9, 0x6, 0x4, 0x7, 0x9, 0x7, 0x4, 0x8, 0x9, 0x8, 0x4, 0x9, 0x9, 0x9, 0x4, 0xa, 0x9, 0xa, 0x4, 0xb, 0x9, 0xb, 0x4, 0xc, 0x9, 0xc, 0x4, 0xd, 0x9, 0xd, 0x4, @@ -18156,185 +17701,184 @@ azslParser::Initializer::Initializer() { 0x9, 0x80, 0x4, 0x81, 0x9, 0x81, 0x4, 0x82, 0x9, 0x82, 0x4, 0x83, 0x9, 0x83, 0x4, 0x84, 0x9, 0x84, 0x4, 0x85, 0x9, 0x85, 0x4, 0x86, 0x9, 0x86, 0x4, 0x87, 0x9, 0x87, 0x4, 0x88, 0x9, 0x88, 0x4, 0x89, - 0x9, 0x89, 0x4, 0x8a, 0x9, 0x8a, 0x4, 0x8b, 0x9, 0x8b, 0x3, 0x2, - 0x7, 0x2, 0x118, 0xa, 0x2, 0xc, 0x2, 0xe, 0x2, 0x11b, 0xb, 0x2, 0x3, - 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, - 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x3, 0x129, - 0xa, 0x3, 0x3, 0x4, 0x3, 0x4, 0x5, 0x4, 0x12d, 0xa, 0x4, 0x3, 0x5, - 0x3, 0x5, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x7, 0x5, 0x7, 0x135, - 0xa, 0x7, 0x3, 0x7, 0x3, 0x7, 0x7, 0x7, 0x139, 0xa, 0x7, 0xc, 0x7, - 0xe, 0x7, 0x13c, 0xb, 0x7, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x9, - 0x3, 0x9, 0x3, 0x9, 0x5, 0x9, 0x144, 0xa, 0x9, 0x3, 0x9, 0x3, 0x9, - 0x7, 0x9, 0x148, 0xa, 0x9, 0xc, 0x9, 0xe, 0x9, 0x14b, 0xb, 0x9, 0x3, - 0x9, 0x3, 0x9, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x7, 0xa, - 0x153, 0xa, 0xa, 0xc, 0xa, 0xe, 0xa, 0x156, 0xb, 0xa, 0x3, 0xb, 0x3, - 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x5, 0xb, 0x15e, 0xa, - 0xb, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, - 0x3, 0xd, 0x7, 0xd, 0x167, 0xa, 0xd, 0xc, 0xd, 0xe, 0xd, 0x16a, 0xb, - 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, - 0x3, 0xe, 0x3, 0xe, 0x5, 0xe, 0x174, 0xa, 0xe, 0x3, 0xf, 0x7, 0xf, - 0x177, 0xa, 0xf, 0xc, 0xf, 0xe, 0xf, 0x17a, 0xb, 0xf, 0x3, 0xf, 0x3, - 0xf, 0x3, 0xf, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x11, 0x3, 0x11, - 0x3, 0x11, 0x3, 0x11, 0x5, 0x11, 0x186, 0xa, 0x11, 0x3, 0x11, 0x3, - 0x11, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x5, 0x12, 0x18d, 0xa, 0x12, - 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x7, 0x13, 0x192, 0xa, 0x13, 0xc, - 0x13, 0xe, 0x13, 0x195, 0xb, 0x13, 0x3, 0x13, 0x5, 0x13, 0x198, 0xa, - 0x13, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x5, 0x14, 0x19d, 0xa, 0x14, - 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x5, 0x15, 0x1a3, 0xa, - 0x15, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x17, 0x3, 0x17, 0x3, - 0x17, 0x3, 0x17, 0x7, 0x17, 0x1ac, 0xa, 0x17, 0xc, 0x17, 0xe, 0x17, - 0x1af, 0xb, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x18, 0x3, 0x18, 0x3, - 0x18, 0x5, 0x18, 0x1b6, 0xa, 0x18, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, - 0x3, 0x19, 0x3, 0x19, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1b, - 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x7, 0x1b, 0x1c4, 0xa, 0x1b, 0xc, - 0x1b, 0xe, 0x1b, 0x1c7, 0xb, 0x1b, 0x5, 0x1b, 0x1c9, 0xa, 0x1b, 0x3, - 0x1c, 0x7, 0x1c, 0x1cc, 0xa, 0x1c, 0xc, 0x1c, 0xe, 0x1c, 0x1cf, 0xb, - 0x1c, 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1c, 0x5, 0x1c, 0x1d4, 0xa, 0x1c, - 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1e, - 0x3, 0x1e, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x7, 0x1f, 0x1e0, 0xa, - 0x1f, 0xc, 0x1f, 0xe, 0x1f, 0x1e3, 0xb, 0x1f, 0x3, 0x20, 0x3, 0x20, - 0x3, 0x20, 0x3, 0x20, 0x3, 0x21, 0x3, 0x21, 0x3, 0x21, 0x3, 0x21, - 0x5, 0x21, 0x1ed, 0xa, 0x21, 0x3, 0x21, 0x3, 0x21, 0x5, 0x21, 0x1f1, - 0xa, 0x21, 0x3, 0x21, 0x3, 0x21, 0x5, 0x21, 0x1f5, 0xa, 0x21, 0x3, - 0x21, 0x3, 0x21, 0x5, 0x21, 0x1f9, 0xa, 0x21, 0x5, 0x21, 0x1fb, 0xa, - 0x21, 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, 0x3, 0x23, 0x3, - 0x23, 0x3, 0x23, 0x3, 0x23, 0x7, 0x23, 0x205, 0xa, 0x23, 0xc, 0x23, - 0xe, 0x23, 0x208, 0xb, 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, - 0x24, 0x3, 0x24, 0x5, 0x24, 0x20f, 0xa, 0x24, 0x3, 0x25, 0x3, 0x25, - 0x7, 0x25, 0x213, 0xa, 0x25, 0xc, 0x25, 0xe, 0x25, 0x216, 0xb, 0x25, - 0x3, 0x25, 0x3, 0x25, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x5, 0x26, - 0x21d, 0xa, 0x26, 0x3, 0x27, 0x3, 0x27, 0x5, 0x27, 0x221, 0xa, 0x27, - 0x3, 0x28, 0x3, 0x28, 0x3, 0x28, 0x3, 0x28, 0x3, 0x28, 0x3, 0x28, - 0x5, 0x28, 0x229, 0xa, 0x28, 0x3, 0x29, 0x6, 0x29, 0x22c, 0xa, 0x29, - 0xd, 0x29, 0xe, 0x29, 0x22d, 0x3, 0x29, 0x6, 0x29, 0x231, 0xa, 0x29, - 0xd, 0x29, 0xe, 0x29, 0x232, 0x3, 0x2a, 0x3, 0x2a, 0x7, 0x2a, 0x237, - 0xa, 0x2a, 0xc, 0x2a, 0xe, 0x2a, 0x23a, 0xb, 0x2a, 0x3, 0x2a, 0x3, - 0x2a, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, - 0x2b, 0x7, 0x2b, 0x244, 0xa, 0x2b, 0xc, 0x2b, 0xe, 0x2b, 0x247, 0xb, + 0x9, 0x89, 0x4, 0x8a, 0x9, 0x8a, 0x3, 0x2, 0x7, 0x2, 0x116, 0xa, + 0x2, 0xc, 0x2, 0xe, 0x2, 0x119, 0xb, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, + 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, + 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x3, 0x127, 0xa, 0x3, 0x3, 0x4, + 0x3, 0x4, 0x5, 0x4, 0x12b, 0xa, 0x4, 0x3, 0x5, 0x3, 0x5, 0x3, 0x6, + 0x3, 0x6, 0x3, 0x6, 0x3, 0x7, 0x5, 0x7, 0x133, 0xa, 0x7, 0x3, 0x7, + 0x3, 0x7, 0x7, 0x7, 0x137, 0xa, 0x7, 0xc, 0x7, 0xe, 0x7, 0x13a, 0xb, + 0x7, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, + 0x5, 0x9, 0x142, 0xa, 0x9, 0x3, 0x9, 0x3, 0x9, 0x7, 0x9, 0x146, 0xa, + 0x9, 0xc, 0x9, 0xe, 0x9, 0x149, 0xb, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, + 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x7, 0xa, 0x151, 0xa, 0xa, 0xc, + 0xa, 0xe, 0xa, 0x154, 0xb, 0xa, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, + 0xb, 0x3, 0xb, 0x3, 0xb, 0x5, 0xb, 0x15c, 0xa, 0xb, 0x3, 0xc, 0x3, + 0xc, 0x3, 0xc, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x7, 0xd, + 0x165, 0xa, 0xd, 0xc, 0xd, 0xe, 0xd, 0x168, 0xb, 0xd, 0x3, 0xd, 0x3, + 0xd, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, + 0x5, 0xe, 0x172, 0xa, 0xe, 0x3, 0xf, 0x7, 0xf, 0x175, 0xa, 0xf, 0xc, + 0xf, 0xe, 0xf, 0x178, 0xb, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, + 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, + 0x11, 0x5, 0x11, 0x184, 0xa, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x12, + 0x3, 0x12, 0x3, 0x12, 0x5, 0x12, 0x18b, 0xa, 0x12, 0x3, 0x13, 0x3, + 0x13, 0x3, 0x13, 0x7, 0x13, 0x190, 0xa, 0x13, 0xc, 0x13, 0xe, 0x13, + 0x193, 0xb, 0x13, 0x3, 0x13, 0x5, 0x13, 0x196, 0xa, 0x13, 0x3, 0x14, + 0x3, 0x14, 0x3, 0x14, 0x5, 0x14, 0x19b, 0xa, 0x14, 0x3, 0x15, 0x3, + 0x15, 0x3, 0x15, 0x3, 0x15, 0x5, 0x15, 0x1a1, 0xa, 0x15, 0x3, 0x16, + 0x3, 0x16, 0x3, 0x16, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, + 0x7, 0x17, 0x1aa, 0xa, 0x17, 0xc, 0x17, 0xe, 0x17, 0x1ad, 0xb, 0x17, + 0x3, 0x17, 0x3, 0x17, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x5, 0x18, + 0x1b4, 0xa, 0x18, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, + 0x19, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1b, 0x3, 0x1b, 0x3, + 0x1b, 0x3, 0x1b, 0x7, 0x1b, 0x1c2, 0xa, 0x1b, 0xc, 0x1b, 0xe, 0x1b, + 0x1c5, 0xb, 0x1b, 0x5, 0x1b, 0x1c7, 0xa, 0x1b, 0x3, 0x1c, 0x7, 0x1c, + 0x1ca, 0xa, 0x1c, 0xc, 0x1c, 0xe, 0x1c, 0x1cd, 0xb, 0x1c, 0x3, 0x1c, + 0x3, 0x1c, 0x5, 0x1c, 0x1d1, 0xa, 0x1c, 0x3, 0x1c, 0x3, 0x1c, 0x3, + 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1f, 0x3, + 0x1f, 0x3, 0x1f, 0x7, 0x1f, 0x1dd, 0xa, 0x1f, 0xc, 0x1f, 0xe, 0x1f, + 0x1e0, 0xb, 0x1f, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, + 0x21, 0x3, 0x21, 0x3, 0x21, 0x3, 0x21, 0x5, 0x21, 0x1ea, 0xa, 0x21, + 0x3, 0x21, 0x3, 0x21, 0x5, 0x21, 0x1ee, 0xa, 0x21, 0x3, 0x21, 0x3, + 0x21, 0x5, 0x21, 0x1f2, 0xa, 0x21, 0x3, 0x21, 0x3, 0x21, 0x5, 0x21, + 0x1f6, 0xa, 0x21, 0x5, 0x21, 0x1f8, 0xa, 0x21, 0x3, 0x22, 0x3, 0x22, + 0x3, 0x22, 0x3, 0x22, 0x3, 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, 0x23, + 0x7, 0x23, 0x202, 0xa, 0x23, 0xc, 0x23, 0xe, 0x23, 0x205, 0xb, 0x23, + 0x3, 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, 0x24, 0x3, 0x24, 0x5, 0x24, + 0x20c, 0xa, 0x24, 0x3, 0x25, 0x3, 0x25, 0x7, 0x25, 0x210, 0xa, 0x25, + 0xc, 0x25, 0xe, 0x25, 0x213, 0xb, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, + 0x26, 0x3, 0x26, 0x3, 0x26, 0x5, 0x26, 0x21a, 0xa, 0x26, 0x3, 0x27, + 0x3, 0x27, 0x5, 0x27, 0x21e, 0xa, 0x27, 0x3, 0x28, 0x3, 0x28, 0x3, + 0x28, 0x3, 0x28, 0x3, 0x28, 0x3, 0x28, 0x5, 0x28, 0x226, 0xa, 0x28, + 0x3, 0x29, 0x6, 0x29, 0x229, 0xa, 0x29, 0xd, 0x29, 0xe, 0x29, 0x22a, + 0x3, 0x29, 0x6, 0x29, 0x22e, 0xa, 0x29, 0xd, 0x29, 0xe, 0x29, 0x22f, + 0x3, 0x2a, 0x3, 0x2a, 0x7, 0x2a, 0x234, 0xa, 0x2a, 0xc, 0x2a, 0xe, + 0x2a, 0x237, 0xb, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2b, 0x3, 0x2b, + 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x7, 0x2b, 0x241, 0xa, + 0x2b, 0xc, 0x2b, 0xe, 0x2b, 0x244, 0xb, 0x2b, 0x3, 0x2b, 0x3, 0x2b, + 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x5, 0x2b, 0x24c, 0xa, + 0x2b, 0x3, 0x2b, 0x7, 0x2b, 0x24f, 0xa, 0x2b, 0xc, 0x2b, 0xe, 0x2b, + 0x252, 0xb, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, + 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x7, 0x2b, 0x25b, 0xa, 0x2b, 0xc, 0x2b, + 0xe, 0x2b, 0x25e, 0xb, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, + 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x7, 0x2b, 0x267, 0xa, 0x2b, + 0xc, 0x2b, 0xe, 0x2b, 0x26a, 0xb, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, - 0x2b, 0x5, 0x2b, 0x24f, 0xa, 0x2b, 0x3, 0x2b, 0x7, 0x2b, 0x252, 0xa, - 0x2b, 0xc, 0x2b, 0xe, 0x2b, 0x255, 0xb, 0x2b, 0x3, 0x2b, 0x3, 0x2b, - 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x7, 0x2b, - 0x25e, 0xa, 0x2b, 0xc, 0x2b, 0xe, 0x2b, 0x261, 0xb, 0x2b, 0x3, 0x2b, + 0x2b, 0x7, 0x2b, 0x275, 0xa, 0x2b, 0xc, 0x2b, 0xe, 0x2b, 0x278, 0xb, + 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x5, 0x2b, 0x27d, 0xa, 0x2b, + 0x3, 0x2b, 0x3, 0x2b, 0x5, 0x2b, 0x281, 0xa, 0x2b, 0x3, 0x2b, 0x3, + 0x2b, 0x5, 0x2b, 0x285, 0xa, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, - 0x7, 0x2b, 0x26a, 0xa, 0x2b, 0xc, 0x2b, 0xe, 0x2b, 0x26d, 0xb, 0x2b, - 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, - 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x7, 0x2b, 0x278, 0xa, 0x2b, 0xc, - 0x2b, 0xe, 0x2b, 0x27b, 0xb, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, - 0x5, 0x2b, 0x280, 0xa, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x5, 0x2b, 0x284, - 0xa, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x5, 0x2b, 0x288, 0xa, 0x2b, 0x3, - 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, - 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x5, 0x2b, 0x294, 0xa, 0x2b, - 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x5, 0x2b, 0x299, 0xa, 0x2b, 0x3, - 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, - 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, - 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x7, 0x2d, 0x2ab, 0xa, 0x2d, - 0xc, 0x2d, 0xe, 0x2d, 0x2ae, 0xb, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, - 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x5, 0x2d, 0x2b6, 0xa, 0x2d, - 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, + 0x3, 0x2b, 0x5, 0x2b, 0x291, 0xa, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, + 0x2b, 0x5, 0x2b, 0x296, 0xa, 0x2b, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, - 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, - 0x3, 0x2d, 0x3, 0x2d, 0x7, 0x2d, 0x2d2, 0xa, 0x2d, 0xc, 0x2d, 0xe, - 0x2d, 0x2d5, 0xb, 0x2d, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, - 0x3, 0x2e, 0x3, 0x2e, 0x7, 0x2e, 0x2dd, 0xa, 0x2e, 0xc, 0x2e, 0xe, - 0x2e, 0x2e0, 0xb, 0x2e, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x30, 0x3, 0x30, - 0x3, 0x31, 0x3, 0x31, 0x3, 0x32, 0x3, 0x32, 0x3, 0x33, 0x3, 0x33, - 0x5, 0x33, 0x2ec, 0xa, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x34, 0x3, - 0x34, 0x3, 0x34, 0x7, 0x34, 0x2f3, 0xa, 0x34, 0xc, 0x34, 0xe, 0x34, - 0x2f6, 0xb, 0x34, 0x3, 0x35, 0x7, 0x35, 0x2f9, 0xa, 0x35, 0xc, 0x35, - 0xe, 0x35, 0x2fc, 0xb, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, - 0x35, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, 0x7, 0x36, 0x305, 0xa, 0x36, - 0xc, 0x36, 0xe, 0x36, 0x308, 0xb, 0x36, 0x3, 0x37, 0x7, 0x37, 0x30b, - 0xa, 0x37, 0xc, 0x37, 0xe, 0x37, 0x30e, 0xb, 0x37, 0x3, 0x37, 0x5, - 0x37, 0x311, 0xa, 0x37, 0x3, 0x37, 0x5, 0x37, 0x314, 0xa, 0x37, 0x3, - 0x37, 0x5, 0x37, 0x317, 0xa, 0x37, 0x3, 0x37, 0x5, 0x37, 0x31a, 0xa, - 0x37, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x39, 0x3, 0x39, 0x3, - 0x39, 0x5, 0x39, 0x322, 0xa, 0x39, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, - 0x3, 0x3a, 0x3, 0x3a, 0x5, 0x3a, 0x329, 0xa, 0x3a, 0x3, 0x3b, 0x3, - 0x3b, 0x3, 0x3b, 0x7, 0x3b, 0x32e, 0xa, 0x3b, 0xc, 0x3b, 0xe, 0x3b, - 0x331, 0xb, 0x3b, 0x3, 0x3b, 0x5, 0x3b, 0x334, 0xa, 0x3b, 0x3, 0x3c, - 0x3, 0x3c, 0x5, 0x3c, 0x338, 0xa, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, - 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x5, - 0x3d, 0x342, 0xa, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3e, 0x7, 0x3e, - 0x347, 0xa, 0x3e, 0xc, 0x3e, 0xe, 0x3e, 0x34a, 0xb, 0x3e, 0x3, 0x3f, - 0x3, 0x3f, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x5, 0x40, 0x351, 0xa, - 0x40, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, - 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, - 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, - 0x41, 0x5, 0x41, 0x365, 0xa, 0x41, 0x3, 0x42, 0x3, 0x42, 0x3, 0x43, - 0x3, 0x43, 0x3, 0x44, 0x3, 0x44, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, - 0x3, 0x45, 0x3, 0x45, 0x3, 0x46, 0x3, 0x46, 0x3, 0x47, 0x3, 0x47, - 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, - 0x3, 0x48, 0x3, 0x49, 0x3, 0x49, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4b, - 0x3, 0x4b, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, - 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, - 0x3, 0x4e, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x50, 0x3, 0x50, 0x3, 0x51, - 0x3, 0x51, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, - 0x3, 0x53, 0x3, 0x53, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, - 0x3, 0x54, 0x5, 0x54, 0x3a1, 0xa, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, - 0x55, 0x3, 0x55, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, - 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x57, 0x3, 0x57, 0x5, 0x57, 0x3b0, - 0xa, 0x57, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x5, 0x58, 0x3b5, 0xa, - 0x58, 0x3, 0x59, 0x3, 0x59, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, - 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, - 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, - 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5d, 0x3, - 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x6, 0x5d, 0x3d2, 0xa, 0x5d, - 0xd, 0x5d, 0xe, 0x5d, 0x3d3, 0x5, 0x5d, 0x3d6, 0xa, 0x5d, 0x3, 0x5e, - 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x5, 0x5e, 0x3dd, 0xa, - 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x5, 0x5e, 0x3e1, 0xa, 0x5e, 0x3, 0x5e, - 0x3, 0x5e, 0x5, 0x5e, 0x3e5, 0xa, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x5, - 0x5e, 0x3e9, 0xa, 0x5e, 0x3, 0x5e, 0x5, 0x5e, 0x3ec, 0xa, 0x5e, 0x3, - 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, - 0x61, 0x3, 0x61, 0x5, 0x61, 0x3f6, 0xa, 0x61, 0x3, 0x62, 0x3, 0x62, - 0x5, 0x62, 0x3fa, 0xa, 0x62, 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, 0x5, - 0x63, 0x3ff, 0xa, 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, 0x64, 0x3, 0x64, - 0x3, 0x64, 0x3, 0x64, 0x3, 0x64, 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, - 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, 0x66, 0x3, 0x66, 0x5, 0x66, - 0x410, 0xa, 0x66, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, 0x5, - 0x67, 0x416, 0xa, 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, 0x5, 0x67, - 0x41b, 0xa, 0x67, 0x3, 0x68, 0x3, 0x68, 0x3, 0x68, 0x3, 0x68, 0x7, - 0x68, 0x421, 0xa, 0x68, 0xc, 0x68, 0xe, 0x68, 0x424, 0xb, 0x68, 0x3, - 0x68, 0x3, 0x68, 0x3, 0x69, 0x3, 0x69, 0x5, 0x69, 0x42a, 0xa, 0x69, - 0x3, 0x6a, 0x3, 0x6a, 0x3, 0x6a, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6c, - 0x3, 0x6c, 0x3, 0x6d, 0x7, 0x6d, 0x434, 0xa, 0x6d, 0xc, 0x6d, 0xe, - 0x6d, 0x437, 0xb, 0x6d, 0x3, 0x6d, 0x3, 0x6d, 0x3, 0x6e, 0x3, 0x6e, - 0x3, 0x6f, 0x7, 0x6f, 0x43e, 0xa, 0x6f, 0xc, 0x6f, 0xe, 0x6f, 0x441, - 0xb, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, - 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, - 0x5, 0x70, 0x44e, 0xa, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, - 0x70, 0x3, 0x70, 0x5, 0x70, 0x455, 0xa, 0x70, 0x3, 0x71, 0x5, 0x71, - 0x458, 0xa, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x5, - 0x71, 0x45e, 0xa, 0x71, 0x3, 0x71, 0x3, 0x71, 0x7, 0x71, 0x462, 0xa, - 0x71, 0xc, 0x71, 0xe, 0x71, 0x465, 0xb, 0x71, 0x3, 0x71, 0x3, 0x71, - 0x3, 0x72, 0x7, 0x72, 0x46a, 0xa, 0x72, 0xc, 0x72, 0xe, 0x72, 0x46d, - 0xb, 0x72, 0x3, 0x72, 0x3, 0x72, 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, - 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, 0x5, 0x73, 0x478, 0xa, - 0x73, 0x3, 0x74, 0x3, 0x74, 0x3, 0x74, 0x3, 0x74, 0x3, 0x75, 0x7, - 0x75, 0x47f, 0xa, 0x75, 0xc, 0x75, 0xe, 0x75, 0x482, 0xb, 0x75, 0x3, - 0x75, 0x3, 0x75, 0x3, 0x76, 0x3, 0x76, 0x7, 0x76, 0x488, 0xa, 0x76, - 0xc, 0x76, 0xe, 0x76, 0x48b, 0xb, 0x76, 0x3, 0x76, 0x3, 0x76, 0x3, - 0x77, 0x3, 0x77, 0x3, 0x77, 0x3, 0x77, 0x3, 0x77, 0x3, 0x77, 0x3, - 0x77, 0x3, 0x77, 0x3, 0x77, 0x3, 0x77, 0x5, 0x77, 0x499, 0xa, 0x77, - 0x3, 0x78, 0x3, 0x78, 0x7, 0x78, 0x49d, 0xa, 0x78, 0xc, 0x78, 0xe, - 0x78, 0x4a0, 0xb, 0x78, 0x3, 0x78, 0x3, 0x78, 0x3, 0x79, 0x3, 0x79, - 0x3, 0x79, 0x3, 0x79, 0x3, 0x79, 0x3, 0x79, 0x3, 0x79, 0x3, 0x79, - 0x3, 0x79, 0x3, 0x79, 0x3, 0x79, 0x3, 0x79, 0x3, 0x79, 0x5, 0x79, - 0x4b1, 0xa, 0x79, 0x3, 0x7a, 0x3, 0x7a, 0x3, 0x7a, 0x3, 0x7a, 0x3, - 0x7a, 0x3, 0x7b, 0x3, 0x7b, 0x3, 0x7b, 0x3, 0x7b, 0x3, 0x7b, 0x3, - 0x7c, 0x3, 0x7c, 0x3, 0x7c, 0x3, 0x7c, 0x3, 0x7c, 0x3, 0x7d, 0x3, - 0x7d, 0x3, 0x7d, 0x3, 0x7d, 0x3, 0x7d, 0x3, 0x7e, 0x3, 0x7e, 0x3, - 0x7e, 0x3, 0x7e, 0x3, 0x7e, 0x3, 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, - 0x7f, 0x3, 0x7f, 0x3, 0x80, 0x3, 0x80, 0x3, 0x80, 0x3, 0x80, 0x3, - 0x80, 0x3, 0x81, 0x3, 0x81, 0x3, 0x81, 0x3, 0x81, 0x3, 0x81, 0x3, - 0x82, 0x3, 0x82, 0x3, 0x82, 0x3, 0x82, 0x3, 0x82, 0x3, 0x83, 0x3, - 0x83, 0x3, 0x83, 0x3, 0x83, 0x3, 0x83, 0x3, 0x84, 0x3, 0x84, 0x3, - 0x84, 0x3, 0x84, 0x3, 0x84, 0x3, 0x85, 0x3, 0x85, 0x3, 0x85, 0x3, - 0x85, 0x3, 0x85, 0x3, 0x86, 0x3, 0x86, 0x3, 0x86, 0x3, 0x86, 0x3, - 0x86, 0x3, 0x87, 0x3, 0x87, 0x3, 0x88, 0x3, 0x88, 0x3, 0x89, 0x3, - 0x89, 0x3, 0x8a, 0x3, 0x8a, 0x3, 0x8b, 0x3, 0x8b, 0x3, 0x8b, 0x2, - 0x4, 0x58, 0x5a, 0x8c, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, + 0x3, 0x2d, 0x7, 0x2d, 0x2a8, 0xa, 0x2d, 0xc, 0x2d, 0xe, 0x2d, 0x2ab, + 0xb, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, + 0x3, 0x2d, 0x5, 0x2d, 0x2b3, 0xa, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, + 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, + 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, + 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, + 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x7, + 0x2d, 0x2cf, 0xa, 0x2d, 0xc, 0x2d, 0xe, 0x2d, 0x2d2, 0xb, 0x2d, 0x3, + 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x7, + 0x2e, 0x2da, 0xa, 0x2e, 0xc, 0x2e, 0xe, 0x2e, 0x2dd, 0xb, 0x2e, 0x3, + 0x2f, 0x3, 0x2f, 0x3, 0x30, 0x3, 0x30, 0x3, 0x31, 0x3, 0x31, 0x3, + 0x32, 0x3, 0x32, 0x3, 0x33, 0x3, 0x33, 0x5, 0x33, 0x2e9, 0xa, 0x33, + 0x3, 0x33, 0x3, 0x33, 0x3, 0x34, 0x3, 0x34, 0x3, 0x34, 0x7, 0x34, + 0x2f0, 0xa, 0x34, 0xc, 0x34, 0xe, 0x34, 0x2f3, 0xb, 0x34, 0x3, 0x35, + 0x7, 0x35, 0x2f6, 0xa, 0x35, 0xc, 0x35, 0xe, 0x35, 0x2f9, 0xb, 0x35, + 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, + 0x7, 0x36, 0x301, 0xa, 0x36, 0xc, 0x36, 0xe, 0x36, 0x304, 0xb, 0x36, + 0x3, 0x37, 0x7, 0x37, 0x307, 0xa, 0x37, 0xc, 0x37, 0xe, 0x37, 0x30a, + 0xb, 0x37, 0x3, 0x37, 0x5, 0x37, 0x30d, 0xa, 0x37, 0x3, 0x37, 0x5, + 0x37, 0x310, 0xa, 0x37, 0x3, 0x37, 0x5, 0x37, 0x313, 0xa, 0x37, 0x3, + 0x37, 0x5, 0x37, 0x316, 0xa, 0x37, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, + 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x5, 0x39, 0x31e, 0xa, 0x39, 0x3, + 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x5, 0x3a, 0x325, + 0xa, 0x3a, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x7, 0x3b, 0x32a, 0xa, + 0x3b, 0xc, 0x3b, 0xe, 0x3b, 0x32d, 0xb, 0x3b, 0x3, 0x3b, 0x5, 0x3b, + 0x330, 0xa, 0x3b, 0x3, 0x3c, 0x3, 0x3c, 0x5, 0x3c, 0x334, 0xa, 0x3c, + 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, + 0x3, 0x3d, 0x3, 0x3d, 0x5, 0x3d, 0x33e, 0xa, 0x3d, 0x3, 0x3d, 0x3, + 0x3d, 0x3, 0x3e, 0x7, 0x3e, 0x343, 0xa, 0x3e, 0xc, 0x3e, 0xe, 0x3e, + 0x346, 0xb, 0x3e, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x40, 0x3, 0x40, 0x3, + 0x40, 0x3, 0x40, 0x3, 0x40, 0x5, 0x40, 0x34f, 0xa, 0x40, 0x3, 0x41, + 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, + 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, + 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x5, 0x41, + 0x363, 0xa, 0x41, 0x3, 0x42, 0x3, 0x42, 0x3, 0x43, 0x3, 0x43, 0x3, + 0x44, 0x3, 0x44, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, + 0x45, 0x3, 0x46, 0x3, 0x46, 0x3, 0x47, 0x3, 0x47, 0x3, 0x48, 0x3, + 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, + 0x49, 0x3, 0x49, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4b, 0x3, 0x4b, 0x3, + 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4d, 0x3, + 0x4d, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, + 0x4f, 0x3, 0x4f, 0x3, 0x50, 0x3, 0x50, 0x3, 0x51, 0x3, 0x51, 0x3, + 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x53, 0x3, + 0x53, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x5, + 0x54, 0x39f, 0xa, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x55, 0x3, 0x55, + 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, + 0x3, 0x56, 0x3, 0x57, 0x3, 0x57, 0x5, 0x57, 0x3ae, 0xa, 0x57, 0x3, + 0x58, 0x3, 0x58, 0x3, 0x58, 0x5, 0x58, 0x3b3, 0xa, 0x58, 0x3, 0x59, + 0x3, 0x59, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, + 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5b, 0x3, 0x5b, + 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5c, 0x3, 0x5c, + 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, + 0x3, 0x5d, 0x3, 0x5d, 0x6, 0x5d, 0x3d0, 0xa, 0x5d, 0xd, 0x5d, 0xe, + 0x5d, 0x3d1, 0x5, 0x5d, 0x3d4, 0xa, 0x5d, 0x3, 0x5e, 0x3, 0x5e, 0x3, + 0x5e, 0x3, 0x5e, 0x5, 0x5e, 0x3da, 0xa, 0x5e, 0x3, 0x5e, 0x3, 0x5e, + 0x5, 0x5e, 0x3de, 0xa, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x5, 0x5e, 0x3e2, + 0xa, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x5, 0x5e, 0x3e6, 0xa, 0x5e, 0x3, + 0x5e, 0x5, 0x5e, 0x3e9, 0xa, 0x5e, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, + 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x61, 0x3, 0x61, 0x5, 0x61, + 0x3f3, 0xa, 0x61, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x5, 0x62, 0x3f8, + 0xa, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, + 0x3, 0x63, 0x3, 0x63, 0x3, 0x64, 0x3, 0x64, 0x3, 0x64, 0x3, 0x64, + 0x3, 0x64, 0x3, 0x64, 0x3, 0x65, 0x3, 0x65, 0x5, 0x65, 0x409, 0xa, + 0x65, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x5, 0x66, 0x40f, + 0xa, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x5, 0x66, 0x414, 0xa, + 0x66, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, 0x7, 0x67, 0x41a, + 0xa, 0x67, 0xc, 0x67, 0xe, 0x67, 0x41d, 0xb, 0x67, 0x3, 0x67, 0x3, + 0x67, 0x3, 0x68, 0x3, 0x68, 0x5, 0x68, 0x423, 0xa, 0x68, 0x3, 0x69, + 0x3, 0x69, 0x3, 0x69, 0x3, 0x6a, 0x3, 0x6a, 0x3, 0x6b, 0x3, 0x6b, + 0x3, 0x6c, 0x7, 0x6c, 0x42d, 0xa, 0x6c, 0xc, 0x6c, 0xe, 0x6c, 0x430, + 0xb, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6d, 0x3, 0x6d, 0x3, 0x6e, + 0x7, 0x6e, 0x437, 0xa, 0x6e, 0xc, 0x6e, 0xe, 0x6e, 0x43a, 0xb, 0x6e, + 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, + 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x5, 0x6f, + 0x447, 0xa, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, + 0x6f, 0x5, 0x6f, 0x44e, 0xa, 0x6f, 0x3, 0x70, 0x5, 0x70, 0x451, 0xa, + 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x5, 0x70, 0x457, + 0xa, 0x70, 0x3, 0x70, 0x3, 0x70, 0x7, 0x70, 0x45b, 0xa, 0x70, 0xc, + 0x70, 0xe, 0x70, 0x45e, 0xb, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x71, + 0x7, 0x71, 0x463, 0xa, 0x71, 0xc, 0x71, 0xe, 0x71, 0x466, 0xb, 0x71, + 0x3, 0x71, 0x3, 0x71, 0x3, 0x72, 0x3, 0x72, 0x3, 0x72, 0x3, 0x72, + 0x3, 0x72, 0x3, 0x72, 0x3, 0x72, 0x5, 0x72, 0x471, 0xa, 0x72, 0x3, + 0x73, 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, 0x3, 0x74, 0x7, 0x74, 0x478, + 0xa, 0x74, 0xc, 0x74, 0xe, 0x74, 0x47b, 0xb, 0x74, 0x3, 0x74, 0x3, + 0x74, 0x3, 0x75, 0x3, 0x75, 0x7, 0x75, 0x481, 0xa, 0x75, 0xc, 0x75, + 0xe, 0x75, 0x484, 0xb, 0x75, 0x3, 0x75, 0x3, 0x75, 0x3, 0x76, 0x3, + 0x76, 0x3, 0x76, 0x3, 0x76, 0x3, 0x76, 0x3, 0x76, 0x3, 0x76, 0x3, + 0x76, 0x3, 0x76, 0x3, 0x76, 0x5, 0x76, 0x492, 0xa, 0x76, 0x3, 0x77, + 0x3, 0x77, 0x7, 0x77, 0x496, 0xa, 0x77, 0xc, 0x77, 0xe, 0x77, 0x499, + 0xb, 0x77, 0x3, 0x77, 0x3, 0x77, 0x3, 0x78, 0x3, 0x78, 0x3, 0x78, + 0x3, 0x78, 0x3, 0x78, 0x3, 0x78, 0x3, 0x78, 0x3, 0x78, 0x3, 0x78, + 0x3, 0x78, 0x3, 0x78, 0x3, 0x78, 0x3, 0x78, 0x5, 0x78, 0x4aa, 0xa, + 0x78, 0x3, 0x79, 0x3, 0x79, 0x3, 0x79, 0x3, 0x79, 0x3, 0x79, 0x3, + 0x7a, 0x3, 0x7a, 0x3, 0x7a, 0x3, 0x7a, 0x3, 0x7a, 0x3, 0x7b, 0x3, + 0x7b, 0x3, 0x7b, 0x3, 0x7b, 0x3, 0x7b, 0x3, 0x7c, 0x3, 0x7c, 0x3, + 0x7c, 0x3, 0x7c, 0x3, 0x7c, 0x3, 0x7d, 0x3, 0x7d, 0x3, 0x7d, 0x3, + 0x7d, 0x3, 0x7d, 0x3, 0x7e, 0x3, 0x7e, 0x3, 0x7e, 0x3, 0x7e, 0x3, + 0x7e, 0x3, 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, + 0x80, 0x3, 0x80, 0x3, 0x80, 0x3, 0x80, 0x3, 0x80, 0x3, 0x81, 0x3, + 0x81, 0x3, 0x81, 0x3, 0x81, 0x3, 0x81, 0x3, 0x82, 0x3, 0x82, 0x3, + 0x82, 0x3, 0x82, 0x3, 0x82, 0x3, 0x83, 0x3, 0x83, 0x3, 0x83, 0x3, + 0x83, 0x3, 0x83, 0x3, 0x84, 0x3, 0x84, 0x3, 0x84, 0x3, 0x84, 0x3, + 0x84, 0x3, 0x85, 0x3, 0x85, 0x3, 0x85, 0x3, 0x85, 0x3, 0x85, 0x3, + 0x86, 0x3, 0x86, 0x3, 0x87, 0x3, 0x87, 0x3, 0x88, 0x3, 0x88, 0x3, + 0x89, 0x3, 0x89, 0x3, 0x8a, 0x3, 0x8a, 0x3, 0x8a, 0x3, 0x344, 0x4, + 0x58, 0x5a, 0x8b, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, 0x40, 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e, 0x50, 0x52, 0x54, @@ -18346,715 +17890,712 @@ azslParser::Initializer::Initializer() { 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0xfe, 0x100, 0x102, 0x104, - 0x106, 0x108, 0x10a, 0x10c, 0x10e, 0x110, 0x112, 0x114, 0x2, 0x1d, - 0x4, 0x2, 0x22, 0x22, 0xbc, 0xbc, 0x3, 0x2, 0x1f, 0x20, 0x3, 0x2, - 0x169, 0x16b, 0x4, 0x2, 0x139, 0x139, 0x13b, 0x13b, 0x4, 0x2, 0x138, - 0x13b, 0x144, 0x145, 0x6, 0x2, 0x132, 0x138, 0x13a, 0x13a, 0x13c, - 0x143, 0x156, 0x157, 0x3, 0x2, 0x14b, 0x155, 0x11, 0x2, 0x21, 0x21, - 0x23, 0x24, 0x41, 0x41, 0x5a, 0x5a, 0x72, 0x75, 0x8f, 0x91, 0x95, - 0x98, 0x9d, 0x9d, 0x9f, 0x9f, 0xac, 0xac, 0xb5, 0xb5, 0xba, 0xbb, - 0xca, 0xcb, 0xcd, 0xcd, 0xfc, 0xfc, 0x3, 0x2, 0xff, 0x107, 0x4, 0x2, - 0x1a, 0x1a, 0xa8, 0xa8, 0x5, 0x2, 0x19, 0x19, 0xa0, 0xa0, 0xad, 0xad, - 0x5, 0x2, 0x1b, 0x1b, 0xa1, 0xa1, 0xae, 0xae, 0x4, 0x2, 0x76, 0x76, - 0x99, 0x99, 0x3, 0x2, 0xb6, 0xb9, 0x9, 0x2, 0x4, 0x4, 0x2a, 0x2a, - 0x44, 0x44, 0x5c, 0x5c, 0x77, 0x79, 0xce, 0xd1, 0xe6, 0xe6, 0x5, - 0x2, 0x92, 0x92, 0x9e, 0x9e, 0xcc, 0xcc, 0x7, 0x2, 0x3, 0x3, 0x25, - 0x25, 0xa2, 0xa2, 0xaf, 0xaf, 0xbd, 0xbd, 0x7, 0x2, 0xa3, 0xa7, 0xb0, - 0xb4, 0xbe, 0xbf, 0xc1, 0xc4, 0xc7, 0xc9, 0x3, 0x2, 0xc5, 0xc6, 0xa, - 0x2, 0x5, 0x8, 0x2b, 0x2e, 0x45, 0x48, 0x5d, 0x60, 0x7a, 0x7d, 0xd2, - 0xd5, 0xe7, 0xea, 0xfb, 0xfb, 0xa, 0x2, 0x9, 0x18, 0x2f, 0x3e, 0x49, - 0x58, 0x61, 0x70, 0x7e, 0x8d, 0x94, 0x94, 0xd6, 0xe5, 0xeb, 0xfa, - 0x3, 0x2, 0x162, 0x164, 0x3, 0x2, 0x115, 0x116, 0x3, 0x2, 0x117, - 0x11a, 0x3, 0x2, 0x11b, 0x11f, 0x3, 0x2, 0x120, 0x127, 0x3, 0x2, - 0x128, 0x12a, 0x2, 0x52a, 0x2, 0x119, 0x3, 0x2, 0x2, 0x2, 0x4, 0x128, - 0x3, 0x2, 0x2, 0x2, 0x6, 0x12c, 0x3, 0x2, 0x2, 0x2, 0x8, 0x12e, 0x3, - 0x2, 0x2, 0x2, 0xa, 0x130, 0x3, 0x2, 0x2, 0x2, 0xc, 0x134, 0x3, 0x2, - 0x2, 0x2, 0xe, 0x13d, 0x3, 0x2, 0x2, 0x2, 0x10, 0x140, 0x3, 0x2, - 0x2, 0x2, 0x12, 0x14e, 0x3, 0x2, 0x2, 0x2, 0x14, 0x15d, 0x3, 0x2, - 0x2, 0x2, 0x16, 0x15f, 0x3, 0x2, 0x2, 0x2, 0x18, 0x162, 0x3, 0x2, - 0x2, 0x2, 0x1a, 0x173, 0x3, 0x2, 0x2, 0x2, 0x1c, 0x178, 0x3, 0x2, - 0x2, 0x2, 0x1e, 0x17e, 0x3, 0x2, 0x2, 0x2, 0x20, 0x181, 0x3, 0x2, - 0x2, 0x2, 0x22, 0x18c, 0x3, 0x2, 0x2, 0x2, 0x24, 0x18e, 0x3, 0x2, - 0x2, 0x2, 0x26, 0x199, 0x3, 0x2, 0x2, 0x2, 0x28, 0x1a2, 0x3, 0x2, - 0x2, 0x2, 0x2a, 0x1a4, 0x3, 0x2, 0x2, 0x2, 0x2c, 0x1a7, 0x3, 0x2, - 0x2, 0x2, 0x2e, 0x1b5, 0x3, 0x2, 0x2, 0x2, 0x30, 0x1b7, 0x3, 0x2, - 0x2, 0x2, 0x32, 0x1bc, 0x3, 0x2, 0x2, 0x2, 0x34, 0x1c8, 0x3, 0x2, - 0x2, 0x2, 0x36, 0x1cd, 0x3, 0x2, 0x2, 0x2, 0x38, 0x1d7, 0x3, 0x2, - 0x2, 0x2, 0x3a, 0x1da, 0x3, 0x2, 0x2, 0x2, 0x3c, 0x1dc, 0x3, 0x2, - 0x2, 0x2, 0x3e, 0x1e4, 0x3, 0x2, 0x2, 0x2, 0x40, 0x1fa, 0x3, 0x2, - 0x2, 0x2, 0x42, 0x1fc, 0x3, 0x2, 0x2, 0x2, 0x44, 0x200, 0x3, 0x2, - 0x2, 0x2, 0x46, 0x20e, 0x3, 0x2, 0x2, 0x2, 0x48, 0x210, 0x3, 0x2, - 0x2, 0x2, 0x4a, 0x21c, 0x3, 0x2, 0x2, 0x2, 0x4c, 0x220, 0x3, 0x2, - 0x2, 0x2, 0x4e, 0x228, 0x3, 0x2, 0x2, 0x2, 0x50, 0x22b, 0x3, 0x2, - 0x2, 0x2, 0x52, 0x234, 0x3, 0x2, 0x2, 0x2, 0x54, 0x298, 0x3, 0x2, - 0x2, 0x2, 0x56, 0x29a, 0x3, 0x2, 0x2, 0x2, 0x58, 0x2b5, 0x3, 0x2, - 0x2, 0x2, 0x5a, 0x2d6, 0x3, 0x2, 0x2, 0x2, 0x5c, 0x2e1, 0x3, 0x2, - 0x2, 0x2, 0x5e, 0x2e3, 0x3, 0x2, 0x2, 0x2, 0x60, 0x2e5, 0x3, 0x2, - 0x2, 0x2, 0x62, 0x2e7, 0x3, 0x2, 0x2, 0x2, 0x64, 0x2e9, 0x3, 0x2, - 0x2, 0x2, 0x66, 0x2ef, 0x3, 0x2, 0x2, 0x2, 0x68, 0x2fa, 0x3, 0x2, - 0x2, 0x2, 0x6a, 0x301, 0x3, 0x2, 0x2, 0x2, 0x6c, 0x30c, 0x3, 0x2, - 0x2, 0x2, 0x6e, 0x31b, 0x3, 0x2, 0x2, 0x2, 0x70, 0x321, 0x3, 0x2, - 0x2, 0x2, 0x72, 0x328, 0x3, 0x2, 0x2, 0x2, 0x74, 0x32a, 0x3, 0x2, - 0x2, 0x2, 0x76, 0x335, 0x3, 0x2, 0x2, 0x2, 0x78, 0x33b, 0x3, 0x2, - 0x2, 0x2, 0x7a, 0x348, 0x3, 0x2, 0x2, 0x2, 0x7c, 0x34b, 0x3, 0x2, - 0x2, 0x2, 0x7e, 0x350, 0x3, 0x2, 0x2, 0x2, 0x80, 0x364, 0x3, 0x2, - 0x2, 0x2, 0x82, 0x366, 0x3, 0x2, 0x2, 0x2, 0x84, 0x368, 0x3, 0x2, - 0x2, 0x2, 0x86, 0x36a, 0x3, 0x2, 0x2, 0x2, 0x88, 0x36c, 0x3, 0x2, - 0x2, 0x2, 0x8a, 0x371, 0x3, 0x2, 0x2, 0x2, 0x8c, 0x373, 0x3, 0x2, - 0x2, 0x2, 0x8e, 0x375, 0x3, 0x2, 0x2, 0x2, 0x90, 0x37c, 0x3, 0x2, - 0x2, 0x2, 0x92, 0x37e, 0x3, 0x2, 0x2, 0x2, 0x94, 0x380, 0x3, 0x2, - 0x2, 0x2, 0x96, 0x382, 0x3, 0x2, 0x2, 0x2, 0x98, 0x387, 0x3, 0x2, - 0x2, 0x2, 0x9a, 0x389, 0x3, 0x2, 0x2, 0x2, 0x9c, 0x38e, 0x3, 0x2, - 0x2, 0x2, 0x9e, 0x390, 0x3, 0x2, 0x2, 0x2, 0xa0, 0x392, 0x3, 0x2, - 0x2, 0x2, 0xa2, 0x394, 0x3, 0x2, 0x2, 0x2, 0xa4, 0x399, 0x3, 0x2, - 0x2, 0x2, 0xa6, 0x39b, 0x3, 0x2, 0x2, 0x2, 0xa8, 0x3a4, 0x3, 0x2, - 0x2, 0x2, 0xaa, 0x3a6, 0x3, 0x2, 0x2, 0x2, 0xac, 0x3af, 0x3, 0x2, - 0x2, 0x2, 0xae, 0x3b4, 0x3, 0x2, 0x2, 0x2, 0xb0, 0x3b6, 0x3, 0x2, - 0x2, 0x2, 0xb2, 0x3b8, 0x3, 0x2, 0x2, 0x2, 0xb4, 0x3c1, 0x3, 0x2, - 0x2, 0x2, 0xb6, 0x3c7, 0x3, 0x2, 0x2, 0x2, 0xb8, 0x3d5, 0x3, 0x2, - 0x2, 0x2, 0xba, 0x3d7, 0x3, 0x2, 0x2, 0x2, 0xbc, 0x3ed, 0x3, 0x2, - 0x2, 0x2, 0xbe, 0x3f0, 0x3, 0x2, 0x2, 0x2, 0xc0, 0x3f5, 0x3, 0x2, - 0x2, 0x2, 0xc2, 0x3f9, 0x3, 0x2, 0x2, 0x2, 0xc4, 0x3fb, 0x3, 0x2, - 0x2, 0x2, 0xc6, 0x402, 0x3, 0x2, 0x2, 0x2, 0xc8, 0x407, 0x3, 0x2, - 0x2, 0x2, 0xca, 0x40f, 0x3, 0x2, 0x2, 0x2, 0xcc, 0x411, 0x3, 0x2, - 0x2, 0x2, 0xce, 0x41c, 0x3, 0x2, 0x2, 0x2, 0xd0, 0x427, 0x3, 0x2, - 0x2, 0x2, 0xd2, 0x42b, 0x3, 0x2, 0x2, 0x2, 0xd4, 0x42e, 0x3, 0x2, - 0x2, 0x2, 0xd6, 0x430, 0x3, 0x2, 0x2, 0x2, 0xd8, 0x435, 0x3, 0x2, - 0x2, 0x2, 0xda, 0x43a, 0x3, 0x2, 0x2, 0x2, 0xdc, 0x43f, 0x3, 0x2, - 0x2, 0x2, 0xde, 0x454, 0x3, 0x2, 0x2, 0x2, 0xe0, 0x457, 0x3, 0x2, - 0x2, 0x2, 0xe2, 0x46b, 0x3, 0x2, 0x2, 0x2, 0xe4, 0x477, 0x3, 0x2, - 0x2, 0x2, 0xe6, 0x479, 0x3, 0x2, 0x2, 0x2, 0xe8, 0x480, 0x3, 0x2, - 0x2, 0x2, 0xea, 0x485, 0x3, 0x2, 0x2, 0x2, 0xec, 0x498, 0x3, 0x2, - 0x2, 0x2, 0xee, 0x49a, 0x3, 0x2, 0x2, 0x2, 0xf0, 0x4b0, 0x3, 0x2, - 0x2, 0x2, 0xf2, 0x4b2, 0x3, 0x2, 0x2, 0x2, 0xf4, 0x4b7, 0x3, 0x2, - 0x2, 0x2, 0xf6, 0x4bc, 0x3, 0x2, 0x2, 0x2, 0xf8, 0x4c1, 0x3, 0x2, - 0x2, 0x2, 0xfa, 0x4c6, 0x3, 0x2, 0x2, 0x2, 0xfc, 0x4cb, 0x3, 0x2, - 0x2, 0x2, 0xfe, 0x4d0, 0x3, 0x2, 0x2, 0x2, 0x100, 0x4d5, 0x3, 0x2, - 0x2, 0x2, 0x102, 0x4da, 0x3, 0x2, 0x2, 0x2, 0x104, 0x4df, 0x3, 0x2, - 0x2, 0x2, 0x106, 0x4e4, 0x3, 0x2, 0x2, 0x2, 0x108, 0x4e9, 0x3, 0x2, - 0x2, 0x2, 0x10a, 0x4ee, 0x3, 0x2, 0x2, 0x2, 0x10c, 0x4f3, 0x3, 0x2, - 0x2, 0x2, 0x10e, 0x4f5, 0x3, 0x2, 0x2, 0x2, 0x110, 0x4f7, 0x3, 0x2, - 0x2, 0x2, 0x112, 0x4f9, 0x3, 0x2, 0x2, 0x2, 0x114, 0x4fb, 0x3, 0x2, - 0x2, 0x2, 0x116, 0x118, 0x5, 0x4, 0x3, 0x2, 0x117, 0x116, 0x3, 0x2, - 0x2, 0x2, 0x118, 0x11b, 0x3, 0x2, 0x2, 0x2, 0x119, 0x117, 0x3, 0x2, - 0x2, 0x2, 0x119, 0x11a, 0x3, 0x2, 0x2, 0x2, 0x11a, 0x11c, 0x3, 0x2, - 0x2, 0x2, 0x11b, 0x119, 0x3, 0x2, 0x2, 0x2, 0x11c, 0x11d, 0x7, 0x2, - 0x2, 0x3, 0x11d, 0x3, 0x3, 0x2, 0x2, 0x2, 0x11e, 0x129, 0x5, 0x1c, - 0xf, 0x2, 0x11f, 0x129, 0x5, 0x32, 0x1a, 0x2, 0x120, 0x129, 0x5, - 0xdc, 0x6f, 0x2, 0x121, 0x129, 0x5, 0xd8, 0x6d, 0x2, 0x122, 0x129, - 0x5, 0x44, 0x23, 0x2, 0x123, 0x129, 0x5, 0xde, 0x70, 0x2, 0x124, - 0x129, 0x5, 0xca, 0x66, 0x2, 0x125, 0x129, 0x5, 0xe2, 0x72, 0x2, - 0x126, 0x129, 0x5, 0xe8, 0x75, 0x2, 0x127, 0x129, 0x7, 0x149, 0x2, - 0x2, 0x128, 0x11e, 0x3, 0x2, 0x2, 0x2, 0x128, 0x11f, 0x3, 0x2, 0x2, - 0x2, 0x128, 0x120, 0x3, 0x2, 0x2, 0x2, 0x128, 0x121, 0x3, 0x2, 0x2, - 0x2, 0x128, 0x122, 0x3, 0x2, 0x2, 0x2, 0x128, 0x123, 0x3, 0x2, 0x2, - 0x2, 0x128, 0x124, 0x3, 0x2, 0x2, 0x2, 0x128, 0x125, 0x3, 0x2, 0x2, - 0x2, 0x128, 0x126, 0x3, 0x2, 0x2, 0x2, 0x128, 0x127, 0x3, 0x2, 0x2, - 0x2, 0x129, 0x5, 0x3, 0x2, 0x2, 0x2, 0x12a, 0x12d, 0x5, 0x8, 0x5, - 0x2, 0x12b, 0x12d, 0x5, 0xa, 0x6, 0x2, 0x12c, 0x12a, 0x3, 0x2, 0x2, - 0x2, 0x12c, 0x12b, 0x3, 0x2, 0x2, 0x2, 0x12d, 0x7, 0x3, 0x2, 0x2, - 0x2, 0x12e, 0x12f, 0x7, 0x16b, 0x2, 0x2, 0x12f, 0x9, 0x3, 0x2, 0x2, - 0x2, 0x130, 0x131, 0x5, 0xc, 0x7, 0x2, 0x131, 0x132, 0x5, 0x8, 0x5, - 0x2, 0x132, 0xb, 0x3, 0x2, 0x2, 0x2, 0x133, 0x135, 0x7, 0x148, 0x2, - 0x2, 0x134, 0x133, 0x3, 0x2, 0x2, 0x2, 0x134, 0x135, 0x3, 0x2, 0x2, - 0x2, 0x135, 0x13a, 0x3, 0x2, 0x2, 0x2, 0x136, 0x137, 0x7, 0x16b, - 0x2, 0x2, 0x137, 0x139, 0x7, 0x148, 0x2, 0x2, 0x138, 0x136, 0x3, - 0x2, 0x2, 0x2, 0x139, 0x13c, 0x3, 0x2, 0x2, 0x2, 0x13a, 0x138, 0x3, - 0x2, 0x2, 0x2, 0x13a, 0x13b, 0x3, 0x2, 0x2, 0x2, 0x13b, 0xd, 0x3, - 0x2, 0x2, 0x2, 0x13c, 0x13a, 0x3, 0x2, 0x2, 0x2, 0x13d, 0x13e, 0x5, - 0x10, 0x9, 0x2, 0x13e, 0x13f, 0x7, 0x149, 0x2, 0x2, 0x13f, 0xf, 0x3, - 0x2, 0x2, 0x2, 0x140, 0x141, 0x7, 0x22, 0x2, 0x2, 0x141, 0x143, 0x7, - 0x16b, 0x2, 0x2, 0x142, 0x144, 0x5, 0x12, 0xa, 0x2, 0x143, 0x142, - 0x3, 0x2, 0x2, 0x2, 0x143, 0x144, 0x3, 0x2, 0x2, 0x2, 0x144, 0x145, - 0x3, 0x2, 0x2, 0x2, 0x145, 0x149, 0x7, 0x12f, 0x2, 0x2, 0x146, 0x148, - 0x5, 0x14, 0xb, 0x2, 0x147, 0x146, 0x3, 0x2, 0x2, 0x2, 0x148, 0x14b, - 0x3, 0x2, 0x2, 0x2, 0x149, 0x147, 0x3, 0x2, 0x2, 0x2, 0x149, 0x14a, - 0x3, 0x2, 0x2, 0x2, 0x14a, 0x14c, 0x3, 0x2, 0x2, 0x2, 0x14b, 0x149, - 0x3, 0x2, 0x2, 0x2, 0x14c, 0x14d, 0x7, 0x130, 0x2, 0x2, 0x14d, 0x11, - 0x3, 0x2, 0x2, 0x2, 0x14e, 0x14f, 0x7, 0x147, 0x2, 0x2, 0x14f, 0x154, - 0x5, 0x6, 0x4, 0x2, 0x150, 0x151, 0x7, 0x14a, 0x2, 0x2, 0x151, 0x153, - 0x5, 0x6, 0x4, 0x2, 0x152, 0x150, 0x3, 0x2, 0x2, 0x2, 0x153, 0x156, - 0x3, 0x2, 0x2, 0x2, 0x154, 0x152, 0x3, 0x2, 0x2, 0x2, 0x154, 0x155, - 0x3, 0x2, 0x2, 0x2, 0x155, 0x13, 0x3, 0x2, 0x2, 0x2, 0x156, 0x154, - 0x3, 0x2, 0x2, 0x2, 0x157, 0x15e, 0x5, 0x32, 0x1a, 0x2, 0x158, 0x15e, - 0x5, 0xdc, 0x6f, 0x2, 0x159, 0x15e, 0x5, 0xd8, 0x6d, 0x2, 0x15a, - 0x15e, 0x5, 0xca, 0x66, 0x2, 0x15b, 0x15e, 0x5, 0x1c, 0xf, 0x2, 0x15c, - 0x15e, 0x5, 0x46, 0x24, 0x2, 0x15d, 0x157, 0x3, 0x2, 0x2, 0x2, 0x15d, - 0x158, 0x3, 0x2, 0x2, 0x2, 0x15d, 0x159, 0x3, 0x2, 0x2, 0x2, 0x15d, - 0x15a, 0x3, 0x2, 0x2, 0x2, 0x15d, 0x15b, 0x3, 0x2, 0x2, 0x2, 0x15d, - 0x15c, 0x3, 0x2, 0x2, 0x2, 0x15e, 0x15, 0x3, 0x2, 0x2, 0x2, 0x15f, - 0x160, 0x5, 0x18, 0xd, 0x2, 0x160, 0x161, 0x7, 0x149, 0x2, 0x2, 0x161, - 0x17, 0x3, 0x2, 0x2, 0x2, 0x162, 0x163, 0x7, 0xbc, 0x2, 0x2, 0x163, - 0x164, 0x7, 0x16b, 0x2, 0x2, 0x164, 0x168, 0x7, 0x12f, 0x2, 0x2, - 0x165, 0x167, 0x5, 0x1a, 0xe, 0x2, 0x166, 0x165, 0x3, 0x2, 0x2, 0x2, - 0x167, 0x16a, 0x3, 0x2, 0x2, 0x2, 0x168, 0x166, 0x3, 0x2, 0x2, 0x2, - 0x168, 0x169, 0x3, 0x2, 0x2, 0x2, 0x169, 0x16b, 0x3, 0x2, 0x2, 0x2, - 0x16a, 0x168, 0x3, 0x2, 0x2, 0x2, 0x16b, 0x16c, 0x7, 0x130, 0x2, - 0x2, 0x16c, 0x19, 0x3, 0x2, 0x2, 0x2, 0x16d, 0x174, 0x5, 0x32, 0x1a, - 0x2, 0x16e, 0x174, 0x5, 0xdc, 0x6f, 0x2, 0x16f, 0x174, 0x5, 0xd8, - 0x6d, 0x2, 0x170, 0x174, 0x5, 0x1c, 0xf, 0x2, 0x171, 0x174, 0x5, - 0xca, 0x66, 0x2, 0x172, 0x174, 0x5, 0x46, 0x24, 0x2, 0x173, 0x16d, - 0x3, 0x2, 0x2, 0x2, 0x173, 0x16e, 0x3, 0x2, 0x2, 0x2, 0x173, 0x16f, - 0x3, 0x2, 0x2, 0x2, 0x173, 0x170, 0x3, 0x2, 0x2, 0x2, 0x173, 0x171, - 0x3, 0x2, 0x2, 0x2, 0x173, 0x172, 0x3, 0x2, 0x2, 0x2, 0x174, 0x1b, - 0x3, 0x2, 0x2, 0x2, 0x175, 0x177, 0x5, 0x46, 0x24, 0x2, 0x176, 0x175, - 0x3, 0x2, 0x2, 0x2, 0x177, 0x17a, 0x3, 0x2, 0x2, 0x2, 0x178, 0x176, - 0x3, 0x2, 0x2, 0x2, 0x178, 0x179, 0x3, 0x2, 0x2, 0x2, 0x179, 0x17b, - 0x3, 0x2, 0x2, 0x2, 0x17a, 0x178, 0x3, 0x2, 0x2, 0x2, 0x17b, 0x17c, - 0x5, 0x28, 0x15, 0x2, 0x17c, 0x17d, 0x7, 0x149, 0x2, 0x2, 0x17d, - 0x1d, 0x3, 0x2, 0x2, 0x2, 0x17e, 0x17f, 0x5, 0x20, 0x11, 0x2, 0x17f, - 0x180, 0x7, 0x149, 0x2, 0x2, 0x180, 0x1f, 0x3, 0x2, 0x2, 0x2, 0x181, - 0x182, 0x5, 0x22, 0x12, 0x2, 0x182, 0x183, 0x7, 0x16b, 0x2, 0x2, - 0x183, 0x185, 0x7, 0x12f, 0x2, 0x2, 0x184, 0x186, 0x5, 0x24, 0x13, - 0x2, 0x185, 0x184, 0x3, 0x2, 0x2, 0x2, 0x185, 0x186, 0x3, 0x2, 0x2, - 0x2, 0x186, 0x187, 0x3, 0x2, 0x2, 0x2, 0x187, 0x188, 0x7, 0x130, - 0x2, 0x2, 0x188, 0x21, 0x3, 0x2, 0x2, 0x2, 0x189, 0x18d, 0x7, 0x40, - 0x2, 0x2, 0x18a, 0x18b, 0x7, 0x40, 0x2, 0x2, 0x18b, 0x18d, 0x9, 0x2, - 0x2, 0x2, 0x18c, 0x189, 0x3, 0x2, 0x2, 0x2, 0x18c, 0x18a, 0x3, 0x2, - 0x2, 0x2, 0x18d, 0x23, 0x3, 0x2, 0x2, 0x2, 0x18e, 0x193, 0x5, 0x26, - 0x14, 0x2, 0x18f, 0x190, 0x7, 0x14a, 0x2, 0x2, 0x190, 0x192, 0x5, - 0x26, 0x14, 0x2, 0x191, 0x18f, 0x3, 0x2, 0x2, 0x2, 0x192, 0x195, - 0x3, 0x2, 0x2, 0x2, 0x193, 0x191, 0x3, 0x2, 0x2, 0x2, 0x193, 0x194, - 0x3, 0x2, 0x2, 0x2, 0x194, 0x197, 0x3, 0x2, 0x2, 0x2, 0x195, 0x193, - 0x3, 0x2, 0x2, 0x2, 0x196, 0x198, 0x7, 0x14a, 0x2, 0x2, 0x197, 0x196, - 0x3, 0x2, 0x2, 0x2, 0x197, 0x198, 0x3, 0x2, 0x2, 0x2, 0x198, 0x25, - 0x3, 0x2, 0x2, 0x2, 0x199, 0x19c, 0x7, 0x16b, 0x2, 0x2, 0x19a, 0x19b, - 0x7, 0x14b, 0x2, 0x2, 0x19b, 0x19d, 0x5, 0x58, 0x2d, 0x2, 0x19c, - 0x19a, 0x3, 0x2, 0x2, 0x2, 0x19c, 0x19d, 0x3, 0x2, 0x2, 0x2, 0x19d, - 0x27, 0x3, 0x2, 0x2, 0x2, 0x19e, 0x1a3, 0x5, 0x10, 0x9, 0x2, 0x19f, - 0x1a3, 0x5, 0x2c, 0x17, 0x2, 0x1a0, 0x1a3, 0x5, 0x18, 0xd, 0x2, 0x1a1, - 0x1a3, 0x5, 0x20, 0x11, 0x2, 0x1a2, 0x19e, 0x3, 0x2, 0x2, 0x2, 0x1a2, - 0x19f, 0x3, 0x2, 0x2, 0x2, 0x1a2, 0x1a0, 0x3, 0x2, 0x2, 0x2, 0x1a2, - 0x1a1, 0x3, 0x2, 0x2, 0x2, 0x1a3, 0x29, 0x3, 0x2, 0x2, 0x2, 0x1a4, - 0x1a5, 0x5, 0x2c, 0x17, 0x2, 0x1a5, 0x1a6, 0x7, 0x149, 0x2, 0x2, - 0x1a6, 0x2b, 0x3, 0x2, 0x2, 0x2, 0x1a7, 0x1a8, 0x7, 0x8e, 0x2, 0x2, - 0x1a8, 0x1a9, 0x7, 0x16b, 0x2, 0x2, 0x1a9, 0x1ad, 0x7, 0x12f, 0x2, - 0x2, 0x1aa, 0x1ac, 0x5, 0x2e, 0x18, 0x2, 0x1ab, 0x1aa, 0x3, 0x2, - 0x2, 0x2, 0x1ac, 0x1af, 0x3, 0x2, 0x2, 0x2, 0x1ad, 0x1ab, 0x3, 0x2, - 0x2, 0x2, 0x1ad, 0x1ae, 0x3, 0x2, 0x2, 0x2, 0x1ae, 0x1b0, 0x3, 0x2, - 0x2, 0x2, 0x1af, 0x1ad, 0x3, 0x2, 0x2, 0x2, 0x1b0, 0x1b1, 0x7, 0x130, - 0x2, 0x2, 0x1b1, 0x2d, 0x3, 0x2, 0x2, 0x2, 0x1b2, 0x1b6, 0x5, 0xd8, - 0x6d, 0x2, 0x1b3, 0x1b6, 0x5, 0xc4, 0x63, 0x2, 0x1b4, 0x1b6, 0x5, - 0x1c, 0xf, 0x2, 0x1b5, 0x1b2, 0x3, 0x2, 0x2, 0x2, 0x1b5, 0x1b3, 0x3, - 0x2, 0x2, 0x2, 0x1b5, 0x1b4, 0x3, 0x2, 0x2, 0x2, 0x1b6, 0x2f, 0x3, - 0x2, 0x2, 0x2, 0x1b7, 0x1b8, 0x9, 0x3, 0x2, 0x2, 0x1b8, 0x1b9, 0x7, - 0x132, 0x2, 0x2, 0x1b9, 0x1ba, 0x5, 0x7e, 0x40, 0x2, 0x1ba, 0x1bb, - 0x7, 0x134, 0x2, 0x2, 0x1bb, 0x31, 0x3, 0x2, 0x2, 0x2, 0x1bc, 0x1bd, - 0x5, 0x68, 0x35, 0x2, 0x1bd, 0x1be, 0x7, 0x149, 0x2, 0x2, 0x1be, - 0x33, 0x3, 0x2, 0x2, 0x2, 0x1bf, 0x1c9, 0x7, 0xfd, 0x2, 0x2, 0x1c0, - 0x1c5, 0x5, 0x36, 0x1c, 0x2, 0x1c1, 0x1c2, 0x7, 0x14a, 0x2, 0x2, - 0x1c2, 0x1c4, 0x5, 0x36, 0x1c, 0x2, 0x1c3, 0x1c1, 0x3, 0x2, 0x2, - 0x2, 0x1c4, 0x1c7, 0x3, 0x2, 0x2, 0x2, 0x1c5, 0x1c3, 0x3, 0x2, 0x2, - 0x2, 0x1c5, 0x1c6, 0x3, 0x2, 0x2, 0x2, 0x1c6, 0x1c9, 0x3, 0x2, 0x2, - 0x2, 0x1c7, 0x1c5, 0x3, 0x2, 0x2, 0x2, 0x1c8, 0x1bf, 0x3, 0x2, 0x2, - 0x2, 0x1c8, 0x1c0, 0x3, 0x2, 0x2, 0x2, 0x1c9, 0x35, 0x3, 0x2, 0x2, - 0x2, 0x1ca, 0x1cc, 0x5, 0x46, 0x24, 0x2, 0x1cb, 0x1ca, 0x3, 0x2, - 0x2, 0x2, 0x1cc, 0x1cf, 0x3, 0x2, 0x2, 0x2, 0x1cd, 0x1cb, 0x3, 0x2, - 0x2, 0x2, 0x1cd, 0x1ce, 0x3, 0x2, 0x2, 0x2, 0x1ce, 0x1d0, 0x3, 0x2, - 0x2, 0x2, 0x1cf, 0x1cd, 0x3, 0x2, 0x2, 0x2, 0x1d0, 0x1d1, 0x5, 0x7a, - 0x3e, 0x2, 0x1d1, 0x1d3, 0x5, 0x7e, 0x40, 0x2, 0x1d2, 0x1d4, 0x7, - 0x16b, 0x2, 0x2, 0x1d3, 0x1d2, 0x3, 0x2, 0x2, 0x2, 0x1d3, 0x1d4, - 0x3, 0x2, 0x2, 0x2, 0x1d4, 0x1d5, 0x3, 0x2, 0x2, 0x2, 0x1d5, 0x1d6, - 0x5, 0x6c, 0x37, 0x2, 0x1d6, 0x37, 0x3, 0x2, 0x2, 0x2, 0x1d7, 0x1d8, - 0x7, 0x147, 0x2, 0x2, 0x1d8, 0x1d9, 0x5, 0x3a, 0x1e, 0x2, 0x1d9, - 0x39, 0x3, 0x2, 0x2, 0x2, 0x1da, 0x1db, 0x9, 0x4, 0x2, 0x2, 0x1db, - 0x3b, 0x3, 0x2, 0x2, 0x2, 0x1dc, 0x1e1, 0x5, 0xb8, 0x5d, 0x2, 0x1dd, - 0x1de, 0x7, 0x14a, 0x2, 0x2, 0x1de, 0x1e0, 0x5, 0xb8, 0x5d, 0x2, - 0x1df, 0x1dd, 0x3, 0x2, 0x2, 0x2, 0x1e0, 0x1e3, 0x3, 0x2, 0x2, 0x2, - 0x1e1, 0x1df, 0x3, 0x2, 0x2, 0x2, 0x1e1, 0x1e2, 0x3, 0x2, 0x2, 0x2, - 0x1e2, 0x3d, 0x3, 0x2, 0x2, 0x2, 0x1e3, 0x1e1, 0x3, 0x2, 0x2, 0x2, - 0x1e4, 0x1e5, 0x7, 0x12b, 0x2, 0x2, 0x1e5, 0x1e6, 0x5, 0x3c, 0x1f, - 0x2, 0x1e6, 0x1e7, 0x7, 0x12c, 0x2, 0x2, 0x1e7, 0x3f, 0x3, 0x2, 0x2, - 0x2, 0x1e8, 0x1e9, 0x7, 0x5b, 0x2, 0x2, 0x1e9, 0x1ec, 0x7, 0x148, - 0x2, 0x2, 0x1ea, 0x1eb, 0x7, 0x16b, 0x2, 0x2, 0x1eb, 0x1ed, 0x7, - 0x148, 0x2, 0x2, 0x1ec, 0x1ea, 0x3, 0x2, 0x2, 0x2, 0x1ec, 0x1ed, - 0x3, 0x2, 0x2, 0x2, 0x1ed, 0x1ee, 0x3, 0x2, 0x2, 0x2, 0x1ee, 0x1f0, - 0x7, 0x16b, 0x2, 0x2, 0x1ef, 0x1f1, 0x5, 0x3e, 0x20, 0x2, 0x1f0, - 0x1ef, 0x3, 0x2, 0x2, 0x2, 0x1f0, 0x1f1, 0x3, 0x2, 0x2, 0x2, 0x1f1, - 0x1fb, 0x3, 0x2, 0x2, 0x2, 0x1f2, 0x1f3, 0x7, 0x16b, 0x2, 0x2, 0x1f3, - 0x1f5, 0x7, 0x148, 0x2, 0x2, 0x1f4, 0x1f2, 0x3, 0x2, 0x2, 0x2, 0x1f4, - 0x1f5, 0x3, 0x2, 0x2, 0x2, 0x1f5, 0x1f6, 0x3, 0x2, 0x2, 0x2, 0x1f6, - 0x1f8, 0x7, 0x16b, 0x2, 0x2, 0x1f7, 0x1f9, 0x5, 0x3e, 0x20, 0x2, - 0x1f8, 0x1f7, 0x3, 0x2, 0x2, 0x2, 0x1f8, 0x1f9, 0x3, 0x2, 0x2, 0x2, - 0x1f9, 0x1fb, 0x3, 0x2, 0x2, 0x2, 0x1fa, 0x1e8, 0x3, 0x2, 0x2, 0x2, - 0x1fa, 0x1f4, 0x3, 0x2, 0x2, 0x2, 0x1fb, 0x41, 0x3, 0x2, 0x2, 0x2, - 0x1fc, 0x1fd, 0x7, 0x12d, 0x2, 0x2, 0x1fd, 0x1fe, 0x5, 0x40, 0x21, - 0x2, 0x1fe, 0x1ff, 0x7, 0x12e, 0x2, 0x2, 0x1ff, 0x43, 0x3, 0x2, 0x2, - 0x2, 0x200, 0x201, 0x7, 0x131, 0x2, 0x2, 0x201, 0x206, 0x5, 0x40, - 0x21, 0x2, 0x202, 0x203, 0x7, 0x14a, 0x2, 0x2, 0x203, 0x205, 0x5, - 0x40, 0x21, 0x2, 0x204, 0x202, 0x3, 0x2, 0x2, 0x2, 0x205, 0x208, - 0x3, 0x2, 0x2, 0x2, 0x206, 0x204, 0x3, 0x2, 0x2, 0x2, 0x206, 0x207, - 0x3, 0x2, 0x2, 0x2, 0x207, 0x209, 0x3, 0x2, 0x2, 0x2, 0x208, 0x206, - 0x3, 0x2, 0x2, 0x2, 0x209, 0x20a, 0x7, 0x12e, 0x2, 0x2, 0x20a, 0x20b, - 0x7, 0x12e, 0x2, 0x2, 0x20b, 0x45, 0x3, 0x2, 0x2, 0x2, 0x20c, 0x20f, - 0x5, 0x42, 0x22, 0x2, 0x20d, 0x20f, 0x5, 0x44, 0x23, 0x2, 0x20e, - 0x20c, 0x3, 0x2, 0x2, 0x2, 0x20e, 0x20d, 0x3, 0x2, 0x2, 0x2, 0x20f, - 0x47, 0x3, 0x2, 0x2, 0x2, 0x210, 0x214, 0x7, 0x12f, 0x2, 0x2, 0x211, - 0x213, 0x5, 0x4a, 0x26, 0x2, 0x212, 0x211, 0x3, 0x2, 0x2, 0x2, 0x213, - 0x216, 0x3, 0x2, 0x2, 0x2, 0x214, 0x212, 0x3, 0x2, 0x2, 0x2, 0x214, - 0x215, 0x3, 0x2, 0x2, 0x2, 0x215, 0x217, 0x3, 0x2, 0x2, 0x2, 0x216, - 0x214, 0x3, 0x2, 0x2, 0x2, 0x217, 0x218, 0x7, 0x130, 0x2, 0x2, 0x218, - 0x49, 0x3, 0x2, 0x2, 0x2, 0x219, 0x21d, 0x5, 0x32, 0x1a, 0x2, 0x21a, - 0x21d, 0x5, 0x54, 0x2b, 0x2, 0x21b, 0x21d, 0x5, 0x1c, 0xf, 0x2, 0x21c, - 0x219, 0x3, 0x2, 0x2, 0x2, 0x21c, 0x21a, 0x3, 0x2, 0x2, 0x2, 0x21c, - 0x21b, 0x3, 0x2, 0x2, 0x2, 0x21d, 0x4b, 0x3, 0x2, 0x2, 0x2, 0x21e, - 0x221, 0x5, 0x68, 0x35, 0x2, 0x21f, 0x221, 0x5, 0x5a, 0x2e, 0x2, - 0x220, 0x21e, 0x3, 0x2, 0x2, 0x2, 0x220, 0x21f, 0x3, 0x2, 0x2, 0x2, - 0x221, 0x4d, 0x3, 0x2, 0x2, 0x2, 0x222, 0x223, 0x7, 0x1d, 0x2, 0x2, - 0x223, 0x224, 0x5, 0x58, 0x2d, 0x2, 0x224, 0x225, 0x7, 0x147, 0x2, - 0x2, 0x225, 0x229, 0x3, 0x2, 0x2, 0x2, 0x226, 0x227, 0x7, 0x27, 0x2, - 0x2, 0x227, 0x229, 0x7, 0x147, 0x2, 0x2, 0x228, 0x222, 0x3, 0x2, - 0x2, 0x2, 0x228, 0x226, 0x3, 0x2, 0x2, 0x2, 0x229, 0x4f, 0x3, 0x2, - 0x2, 0x2, 0x22a, 0x22c, 0x5, 0x4e, 0x28, 0x2, 0x22b, 0x22a, 0x3, - 0x2, 0x2, 0x2, 0x22c, 0x22d, 0x3, 0x2, 0x2, 0x2, 0x22d, 0x22b, 0x3, - 0x2, 0x2, 0x2, 0x22d, 0x22e, 0x3, 0x2, 0x2, 0x2, 0x22e, 0x230, 0x3, - 0x2, 0x2, 0x2, 0x22f, 0x231, 0x5, 0x4a, 0x26, 0x2, 0x230, 0x22f, - 0x3, 0x2, 0x2, 0x2, 0x231, 0x232, 0x3, 0x2, 0x2, 0x2, 0x232, 0x230, - 0x3, 0x2, 0x2, 0x2, 0x232, 0x233, 0x3, 0x2, 0x2, 0x2, 0x233, 0x51, - 0x3, 0x2, 0x2, 0x2, 0x234, 0x238, 0x7, 0x12f, 0x2, 0x2, 0x235, 0x237, - 0x5, 0x50, 0x29, 0x2, 0x236, 0x235, 0x3, 0x2, 0x2, 0x2, 0x237, 0x23a, - 0x3, 0x2, 0x2, 0x2, 0x238, 0x236, 0x3, 0x2, 0x2, 0x2, 0x238, 0x239, - 0x3, 0x2, 0x2, 0x2, 0x239, 0x23b, 0x3, 0x2, 0x2, 0x2, 0x23a, 0x238, - 0x3, 0x2, 0x2, 0x2, 0x23b, 0x23c, 0x7, 0x130, 0x2, 0x2, 0x23c, 0x53, - 0x3, 0x2, 0x2, 0x2, 0x23d, 0x299, 0x7, 0x149, 0x2, 0x2, 0x23e, 0x299, - 0x5, 0x48, 0x25, 0x2, 0x23f, 0x240, 0x5, 0x5a, 0x2e, 0x2, 0x240, - 0x241, 0x7, 0x149, 0x2, 0x2, 0x241, 0x299, 0x3, 0x2, 0x2, 0x2, 0x242, - 0x244, 0x5, 0x42, 0x22, 0x2, 0x243, 0x242, 0x3, 0x2, 0x2, 0x2, 0x244, - 0x247, 0x3, 0x2, 0x2, 0x2, 0x245, 0x243, 0x3, 0x2, 0x2, 0x2, 0x245, - 0x246, 0x3, 0x2, 0x2, 0x2, 0x246, 0x248, 0x3, 0x2, 0x2, 0x2, 0x247, - 0x245, 0x3, 0x2, 0x2, 0x2, 0x248, 0x249, 0x7, 0x71, 0x2, 0x2, 0x249, - 0x24a, 0x7, 0x12b, 0x2, 0x2, 0x24a, 0x24b, 0x5, 0x5a, 0x2e, 0x2, - 0x24b, 0x24c, 0x7, 0x12c, 0x2, 0x2, 0x24c, 0x24e, 0x5, 0x54, 0x2b, - 0x2, 0x24d, 0x24f, 0x5, 0x56, 0x2c, 0x2, 0x24e, 0x24d, 0x3, 0x2, - 0x2, 0x2, 0x24e, 0x24f, 0x3, 0x2, 0x2, 0x2, 0x24f, 0x299, 0x3, 0x2, - 0x2, 0x2, 0x250, 0x252, 0x5, 0x42, 0x22, 0x2, 0x251, 0x250, 0x3, - 0x2, 0x2, 0x2, 0x252, 0x255, 0x3, 0x2, 0x2, 0x2, 0x253, 0x251, 0x3, - 0x2, 0x2, 0x2, 0x253, 0x254, 0x3, 0x2, 0x2, 0x2, 0x254, 0x256, 0x3, - 0x2, 0x2, 0x2, 0x255, 0x253, 0x3, 0x2, 0x2, 0x2, 0x256, 0x257, 0x7, - 0xc0, 0x2, 0x2, 0x257, 0x258, 0x7, 0x12b, 0x2, 0x2, 0x258, 0x259, - 0x5, 0x5a, 0x2e, 0x2, 0x259, 0x25a, 0x7, 0x12c, 0x2, 0x2, 0x25a, - 0x25b, 0x5, 0x52, 0x2a, 0x2, 0x25b, 0x299, 0x3, 0x2, 0x2, 0x2, 0x25c, - 0x25e, 0x5, 0x42, 0x22, 0x2, 0x25d, 0x25c, 0x3, 0x2, 0x2, 0x2, 0x25e, - 0x261, 0x3, 0x2, 0x2, 0x2, 0x25f, 0x25d, 0x3, 0x2, 0x2, 0x2, 0x25f, - 0x260, 0x3, 0x2, 0x2, 0x2, 0x260, 0x262, 0x3, 0x2, 0x2, 0x2, 0x261, - 0x25f, 0x3, 0x2, 0x2, 0x2, 0x262, 0x263, 0x7, 0xfe, 0x2, 0x2, 0x263, - 0x264, 0x7, 0x12b, 0x2, 0x2, 0x264, 0x265, 0x5, 0x5a, 0x2e, 0x2, - 0x265, 0x266, 0x7, 0x12c, 0x2, 0x2, 0x266, 0x267, 0x5, 0x54, 0x2b, - 0x2, 0x267, 0x299, 0x3, 0x2, 0x2, 0x2, 0x268, 0x26a, 0x5, 0x42, 0x22, - 0x2, 0x269, 0x268, 0x3, 0x2, 0x2, 0x2, 0x26a, 0x26d, 0x3, 0x2, 0x2, - 0x2, 0x26b, 0x269, 0x3, 0x2, 0x2, 0x2, 0x26b, 0x26c, 0x3, 0x2, 0x2, - 0x2, 0x26c, 0x26e, 0x3, 0x2, 0x2, 0x2, 0x26d, 0x26b, 0x3, 0x2, 0x2, - 0x2, 0x26e, 0x26f, 0x7, 0x29, 0x2, 0x2, 0x26f, 0x270, 0x5, 0x54, - 0x2b, 0x2, 0x270, 0x271, 0x7, 0xfe, 0x2, 0x2, 0x271, 0x272, 0x7, - 0x12b, 0x2, 0x2, 0x272, 0x273, 0x5, 0x5a, 0x2e, 0x2, 0x273, 0x274, - 0x7, 0x12c, 0x2, 0x2, 0x274, 0x275, 0x7, 0x149, 0x2, 0x2, 0x275, - 0x299, 0x3, 0x2, 0x2, 0x2, 0x276, 0x278, 0x5, 0x42, 0x22, 0x2, 0x277, - 0x276, 0x3, 0x2, 0x2, 0x2, 0x278, 0x27b, 0x3, 0x2, 0x2, 0x2, 0x279, - 0x277, 0x3, 0x2, 0x2, 0x2, 0x279, 0x27a, 0x3, 0x2, 0x2, 0x2, 0x27a, - 0x27c, 0x3, 0x2, 0x2, 0x2, 0x27b, 0x279, 0x3, 0x2, 0x2, 0x2, 0x27c, - 0x27d, 0x7, 0x59, 0x2, 0x2, 0x27d, 0x27f, 0x7, 0x12b, 0x2, 0x2, 0x27e, - 0x280, 0x5, 0x4c, 0x27, 0x2, 0x27f, 0x27e, 0x3, 0x2, 0x2, 0x2, 0x27f, - 0x280, 0x3, 0x2, 0x2, 0x2, 0x280, 0x281, 0x3, 0x2, 0x2, 0x2, 0x281, - 0x283, 0x7, 0x149, 0x2, 0x2, 0x282, 0x284, 0x5, 0x5a, 0x2e, 0x2, - 0x283, 0x282, 0x3, 0x2, 0x2, 0x2, 0x283, 0x284, 0x3, 0x2, 0x2, 0x2, - 0x284, 0x285, 0x3, 0x2, 0x2, 0x2, 0x285, 0x287, 0x7, 0x149, 0x2, - 0x2, 0x286, 0x288, 0x5, 0x5a, 0x2e, 0x2, 0x287, 0x286, 0x3, 0x2, - 0x2, 0x2, 0x287, 0x288, 0x3, 0x2, 0x2, 0x2, 0x288, 0x289, 0x3, 0x2, - 0x2, 0x2, 0x289, 0x28a, 0x7, 0x12c, 0x2, 0x2, 0x28a, 0x299, 0x5, - 0x54, 0x2b, 0x2, 0x28b, 0x28c, 0x7, 0x1c, 0x2, 0x2, 0x28c, 0x299, - 0x7, 0x149, 0x2, 0x2, 0x28d, 0x28e, 0x7, 0x26, 0x2, 0x2, 0x28e, 0x299, - 0x7, 0x149, 0x2, 0x2, 0x28f, 0x290, 0x7, 0x28, 0x2, 0x2, 0x290, 0x299, - 0x7, 0x149, 0x2, 0x2, 0x291, 0x293, 0x7, 0xab, 0x2, 0x2, 0x292, 0x294, - 0x5, 0x5a, 0x2e, 0x2, 0x293, 0x292, 0x3, 0x2, 0x2, 0x2, 0x293, 0x294, - 0x3, 0x2, 0x2, 0x2, 0x294, 0x295, 0x3, 0x2, 0x2, 0x2, 0x295, 0x299, - 0x7, 0x149, 0x2, 0x2, 0x296, 0x299, 0x5, 0xde, 0x70, 0x2, 0x297, - 0x299, 0x5, 0xca, 0x66, 0x2, 0x298, 0x23d, 0x3, 0x2, 0x2, 0x2, 0x298, - 0x23e, 0x3, 0x2, 0x2, 0x2, 0x298, 0x23f, 0x3, 0x2, 0x2, 0x2, 0x298, - 0x245, 0x3, 0x2, 0x2, 0x2, 0x298, 0x253, 0x3, 0x2, 0x2, 0x2, 0x298, - 0x25f, 0x3, 0x2, 0x2, 0x2, 0x298, 0x26b, 0x3, 0x2, 0x2, 0x2, 0x298, - 0x279, 0x3, 0x2, 0x2, 0x2, 0x298, 0x28b, 0x3, 0x2, 0x2, 0x2, 0x298, - 0x28d, 0x3, 0x2, 0x2, 0x2, 0x298, 0x28f, 0x3, 0x2, 0x2, 0x2, 0x298, - 0x291, 0x3, 0x2, 0x2, 0x2, 0x298, 0x296, 0x3, 0x2, 0x2, 0x2, 0x298, - 0x297, 0x3, 0x2, 0x2, 0x2, 0x299, 0x55, 0x3, 0x2, 0x2, 0x2, 0x29a, - 0x29b, 0x7, 0x3f, 0x2, 0x2, 0x29b, 0x29c, 0x5, 0x54, 0x2b, 0x2, 0x29c, - 0x57, 0x3, 0x2, 0x2, 0x2, 0x29d, 0x29e, 0x8, 0x2d, 0x1, 0x2, 0x29e, - 0x2b6, 0x5, 0xb8, 0x5d, 0x2, 0x29f, 0x2b6, 0x5, 0x6, 0x4, 0x2, 0x2a0, - 0x2a1, 0x7, 0x12b, 0x2, 0x2, 0x2a1, 0x2a2, 0x5, 0x5a, 0x2e, 0x2, - 0x2a2, 0x2a3, 0x7, 0x12c, 0x2, 0x2, 0x2a3, 0x2b6, 0x3, 0x2, 0x2, - 0x2, 0x2a4, 0x2a5, 0x5, 0xae, 0x58, 0x2, 0x2a5, 0x2a6, 0x5, 0x64, - 0x33, 0x2, 0x2a6, 0x2b6, 0x3, 0x2, 0x2, 0x2, 0x2a7, 0x2a8, 0x7, 0x12b, - 0x2, 0x2, 0x2a8, 0x2ac, 0x5, 0x7e, 0x40, 0x2, 0x2a9, 0x2ab, 0x5, - 0x76, 0x3c, 0x2, 0x2aa, 0x2a9, 0x3, 0x2, 0x2, 0x2, 0x2ab, 0x2ae, - 0x3, 0x2, 0x2, 0x2, 0x2ac, 0x2aa, 0x3, 0x2, 0x2, 0x2, 0x2ac, 0x2ad, - 0x3, 0x2, 0x2, 0x2, 0x2ad, 0x2af, 0x3, 0x2, 0x2, 0x2, 0x2ae, 0x2ac, - 0x3, 0x2, 0x2, 0x2, 0x2af, 0x2b0, 0x7, 0x12c, 0x2, 0x2, 0x2b0, 0x2b1, - 0x5, 0x58, 0x2d, 0x8, 0x2b1, 0x2b6, 0x3, 0x2, 0x2, 0x2, 0x2b2, 0x2b3, - 0x5, 0x5e, 0x30, 0x2, 0x2b3, 0x2b4, 0x5, 0x58, 0x2d, 0x6, 0x2b4, - 0x2b6, 0x3, 0x2, 0x2, 0x2, 0x2b5, 0x29d, 0x3, 0x2, 0x2, 0x2, 0x2b5, - 0x29f, 0x3, 0x2, 0x2, 0x2, 0x2b5, 0x2a0, 0x3, 0x2, 0x2, 0x2, 0x2b5, - 0x2a4, 0x3, 0x2, 0x2, 0x2, 0x2b5, 0x2a7, 0x3, 0x2, 0x2, 0x2, 0x2b5, - 0x2b2, 0x3, 0x2, 0x2, 0x2, 0x2b6, 0x2d3, 0x3, 0x2, 0x2, 0x2, 0x2b7, - 0x2b8, 0xc, 0x5, 0x2, 0x2, 0x2b8, 0x2b9, 0x5, 0x60, 0x31, 0x2, 0x2b9, - 0x2ba, 0x5, 0x58, 0x2d, 0x6, 0x2ba, 0x2d2, 0x3, 0x2, 0x2, 0x2, 0x2bb, - 0x2bc, 0xc, 0xc, 0x2, 0x2, 0x2bc, 0x2bd, 0x7, 0x158, 0x2, 0x2, 0x2bd, - 0x2d2, 0x5, 0x6, 0x4, 0x2, 0x2be, 0x2bf, 0xc, 0xb, 0x2, 0x2, 0x2bf, - 0x2c0, 0x7, 0x12d, 0x2, 0x2, 0x2c0, 0x2c1, 0x5, 0x58, 0x2d, 0x2, - 0x2c1, 0x2c2, 0x7, 0x12e, 0x2, 0x2, 0x2c2, 0x2d2, 0x3, 0x2, 0x2, - 0x2, 0x2c3, 0x2c4, 0xc, 0xa, 0x2, 0x2, 0x2c4, 0x2d2, 0x5, 0x64, 0x33, - 0x2, 0x2c5, 0x2c6, 0xc, 0x7, 0x2, 0x2, 0x2c6, 0x2d2, 0x5, 0x5c, 0x2f, - 0x2, 0x2c7, 0x2c8, 0xc, 0x4, 0x2, 0x2, 0x2c8, 0x2c9, 0x7, 0x146, - 0x2, 0x2, 0x2c9, 0x2ca, 0x5, 0x5a, 0x2e, 0x2, 0x2ca, 0x2cb, 0x7, - 0x147, 0x2, 0x2, 0x2cb, 0x2cc, 0x5, 0x5a, 0x2e, 0x2, 0x2cc, 0x2d2, - 0x3, 0x2, 0x2, 0x2, 0x2cd, 0x2ce, 0xc, 0x3, 0x2, 0x2, 0x2ce, 0x2cf, - 0x5, 0x62, 0x32, 0x2, 0x2cf, 0x2d0, 0x5, 0x5a, 0x2e, 0x2, 0x2d0, - 0x2d2, 0x3, 0x2, 0x2, 0x2, 0x2d1, 0x2b7, 0x3, 0x2, 0x2, 0x2, 0x2d1, - 0x2bb, 0x3, 0x2, 0x2, 0x2, 0x2d1, 0x2be, 0x3, 0x2, 0x2, 0x2, 0x2d1, - 0x2c3, 0x3, 0x2, 0x2, 0x2, 0x2d1, 0x2c5, 0x3, 0x2, 0x2, 0x2, 0x2d1, - 0x2c7, 0x3, 0x2, 0x2, 0x2, 0x2d1, 0x2cd, 0x3, 0x2, 0x2, 0x2, 0x2d2, - 0x2d5, 0x3, 0x2, 0x2, 0x2, 0x2d3, 0x2d1, 0x3, 0x2, 0x2, 0x2, 0x2d3, - 0x2d4, 0x3, 0x2, 0x2, 0x2, 0x2d4, 0x59, 0x3, 0x2, 0x2, 0x2, 0x2d5, - 0x2d3, 0x3, 0x2, 0x2, 0x2, 0x2d6, 0x2d7, 0x8, 0x2e, 0x1, 0x2, 0x2d7, - 0x2d8, 0x5, 0x58, 0x2d, 0x2, 0x2d8, 0x2de, 0x3, 0x2, 0x2, 0x2, 0x2d9, - 0x2da, 0xc, 0x3, 0x2, 0x2, 0x2da, 0x2db, 0x7, 0x14a, 0x2, 0x2, 0x2db, - 0x2dd, 0x5, 0x58, 0x2d, 0x2, 0x2dc, 0x2d9, 0x3, 0x2, 0x2, 0x2, 0x2dd, - 0x2e0, 0x3, 0x2, 0x2, 0x2, 0x2de, 0x2dc, 0x3, 0x2, 0x2, 0x2, 0x2de, - 0x2df, 0x3, 0x2, 0x2, 0x2, 0x2df, 0x5b, 0x3, 0x2, 0x2, 0x2, 0x2e0, - 0x2de, 0x3, 0x2, 0x2, 0x2, 0x2e1, 0x2e2, 0x9, 0x5, 0x2, 0x2, 0x2e2, - 0x5d, 0x3, 0x2, 0x2, 0x2, 0x2e3, 0x2e4, 0x9, 0x6, 0x2, 0x2, 0x2e4, - 0x5f, 0x3, 0x2, 0x2, 0x2, 0x2e5, 0x2e6, 0x9, 0x7, 0x2, 0x2, 0x2e6, - 0x61, 0x3, 0x2, 0x2, 0x2, 0x2e7, 0x2e8, 0x9, 0x8, 0x2, 0x2, 0x2e8, - 0x63, 0x3, 0x2, 0x2, 0x2, 0x2e9, 0x2eb, 0x7, 0x12b, 0x2, 0x2, 0x2ea, - 0x2ec, 0x5, 0x66, 0x34, 0x2, 0x2eb, 0x2ea, 0x3, 0x2, 0x2, 0x2, 0x2eb, - 0x2ec, 0x3, 0x2, 0x2, 0x2, 0x2ec, 0x2ed, 0x3, 0x2, 0x2, 0x2, 0x2ed, - 0x2ee, 0x7, 0x12c, 0x2, 0x2, 0x2ee, 0x65, 0x3, 0x2, 0x2, 0x2, 0x2ef, - 0x2f4, 0x5, 0x58, 0x2d, 0x2, 0x2f0, 0x2f1, 0x7, 0x14a, 0x2, 0x2, - 0x2f1, 0x2f3, 0x5, 0x58, 0x2d, 0x2, 0x2f2, 0x2f0, 0x3, 0x2, 0x2, - 0x2, 0x2f3, 0x2f6, 0x3, 0x2, 0x2, 0x2, 0x2f4, 0x2f2, 0x3, 0x2, 0x2, - 0x2, 0x2f4, 0x2f5, 0x3, 0x2, 0x2, 0x2, 0x2f5, 0x67, 0x3, 0x2, 0x2, - 0x2, 0x2f6, 0x2f4, 0x3, 0x2, 0x2, 0x2, 0x2f7, 0x2f9, 0x5, 0x46, 0x24, - 0x2, 0x2f8, 0x2f7, 0x3, 0x2, 0x2, 0x2, 0x2f9, 0x2fc, 0x3, 0x2, 0x2, - 0x2, 0x2fa, 0x2f8, 0x3, 0x2, 0x2, 0x2, 0x2fa, 0x2fb, 0x3, 0x2, 0x2, - 0x2, 0x2fb, 0x2fd, 0x3, 0x2, 0x2, 0x2, 0x2fc, 0x2fa, 0x3, 0x2, 0x2, - 0x2, 0x2fd, 0x2fe, 0x5, 0x7a, 0x3e, 0x2, 0x2fe, 0x2ff, 0x5, 0x7e, - 0x40, 0x2, 0x2ff, 0x300, 0x5, 0x6a, 0x36, 0x2, 0x300, 0x69, 0x3, - 0x2, 0x2, 0x2, 0x301, 0x306, 0x5, 0x6e, 0x38, 0x2, 0x302, 0x303, - 0x7, 0x14a, 0x2, 0x2, 0x303, 0x305, 0x5, 0x6e, 0x38, 0x2, 0x304, - 0x302, 0x3, 0x2, 0x2, 0x2, 0x305, 0x308, 0x3, 0x2, 0x2, 0x2, 0x306, - 0x304, 0x3, 0x2, 0x2, 0x2, 0x306, 0x307, 0x3, 0x2, 0x2, 0x2, 0x307, - 0x6b, 0x3, 0x2, 0x2, 0x2, 0x308, 0x306, 0x3, 0x2, 0x2, 0x2, 0x309, - 0x30b, 0x5, 0x76, 0x3c, 0x2, 0x30a, 0x309, 0x3, 0x2, 0x2, 0x2, 0x30b, - 0x30e, 0x3, 0x2, 0x2, 0x2, 0x30c, 0x30a, 0x3, 0x2, 0x2, 0x2, 0x30c, - 0x30d, 0x3, 0x2, 0x2, 0x2, 0x30d, 0x310, 0x3, 0x2, 0x2, 0x2, 0x30e, - 0x30c, 0x3, 0x2, 0x2, 0x2, 0x30f, 0x311, 0x5, 0x38, 0x1d, 0x2, 0x310, - 0x30f, 0x3, 0x2, 0x2, 0x2, 0x310, 0x311, 0x3, 0x2, 0x2, 0x2, 0x311, - 0x313, 0x3, 0x2, 0x2, 0x2, 0x312, 0x314, 0x5, 0x78, 0x3d, 0x2, 0x313, - 0x312, 0x3, 0x2, 0x2, 0x2, 0x313, 0x314, 0x3, 0x2, 0x2, 0x2, 0x314, - 0x316, 0x3, 0x2, 0x2, 0x2, 0x315, 0x317, 0x5, 0xb4, 0x5b, 0x2, 0x316, - 0x315, 0x3, 0x2, 0x2, 0x2, 0x316, 0x317, 0x3, 0x2, 0x2, 0x2, 0x317, - 0x319, 0x3, 0x2, 0x2, 0x2, 0x318, 0x31a, 0x5, 0x70, 0x39, 0x2, 0x319, - 0x318, 0x3, 0x2, 0x2, 0x2, 0x319, 0x31a, 0x3, 0x2, 0x2, 0x2, 0x31a, - 0x6d, 0x3, 0x2, 0x2, 0x2, 0x31b, 0x31c, 0x7, 0x16b, 0x2, 0x2, 0x31c, - 0x31d, 0x5, 0x6c, 0x37, 0x2, 0x31d, 0x6f, 0x3, 0x2, 0x2, 0x2, 0x31e, - 0x31f, 0x7, 0x14b, 0x2, 0x2, 0x31f, 0x322, 0x5, 0x72, 0x3a, 0x2, - 0x320, 0x322, 0x5, 0xee, 0x78, 0x2, 0x321, 0x31e, 0x3, 0x2, 0x2, - 0x2, 0x321, 0x320, 0x3, 0x2, 0x2, 0x2, 0x322, 0x71, 0x3, 0x2, 0x2, - 0x2, 0x323, 0x324, 0x7, 0x12f, 0x2, 0x2, 0x324, 0x325, 0x5, 0x74, - 0x3b, 0x2, 0x325, 0x326, 0x7, 0x130, 0x2, 0x2, 0x326, 0x329, 0x3, - 0x2, 0x2, 0x2, 0x327, 0x329, 0x5, 0x58, 0x2d, 0x2, 0x328, 0x323, - 0x3, 0x2, 0x2, 0x2, 0x328, 0x327, 0x3, 0x2, 0x2, 0x2, 0x329, 0x73, - 0x3, 0x2, 0x2, 0x2, 0x32a, 0x32f, 0x5, 0x72, 0x3a, 0x2, 0x32b, 0x32c, - 0x7, 0x14a, 0x2, 0x2, 0x32c, 0x32e, 0x5, 0x72, 0x3a, 0x2, 0x32d, - 0x32b, 0x3, 0x2, 0x2, 0x2, 0x32e, 0x331, 0x3, 0x2, 0x2, 0x2, 0x32f, - 0x32d, 0x3, 0x2, 0x2, 0x2, 0x32f, 0x330, 0x3, 0x2, 0x2, 0x2, 0x330, - 0x333, 0x3, 0x2, 0x2, 0x2, 0x331, 0x32f, 0x3, 0x2, 0x2, 0x2, 0x332, - 0x334, 0x7, 0x14a, 0x2, 0x2, 0x333, 0x332, 0x3, 0x2, 0x2, 0x2, 0x333, - 0x334, 0x3, 0x2, 0x2, 0x2, 0x334, 0x75, 0x3, 0x2, 0x2, 0x2, 0x335, - 0x337, 0x7, 0x12d, 0x2, 0x2, 0x336, 0x338, 0x5, 0x58, 0x2d, 0x2, - 0x337, 0x336, 0x3, 0x2, 0x2, 0x2, 0x337, 0x338, 0x3, 0x2, 0x2, 0x2, - 0x338, 0x339, 0x3, 0x2, 0x2, 0x2, 0x339, 0x33a, 0x7, 0x12e, 0x2, - 0x2, 0x33a, 0x77, 0x3, 0x2, 0x2, 0x2, 0x33b, 0x33c, 0x7, 0x147, 0x2, - 0x2, 0x33c, 0x33d, 0x7, 0x9c, 0x2, 0x2, 0x33d, 0x33e, 0x7, 0x12b, - 0x2, 0x2, 0x33e, 0x341, 0x7, 0x16b, 0x2, 0x2, 0x33f, 0x340, 0x7, - 0x158, 0x2, 0x2, 0x340, 0x342, 0x7, 0x16b, 0x2, 0x2, 0x341, 0x33f, - 0x3, 0x2, 0x2, 0x2, 0x341, 0x342, 0x3, 0x2, 0x2, 0x2, 0x342, 0x343, - 0x3, 0x2, 0x2, 0x2, 0x343, 0x344, 0x7, 0x12c, 0x2, 0x2, 0x344, 0x79, - 0x3, 0x2, 0x2, 0x2, 0x345, 0x347, 0x5, 0x7c, 0x3f, 0x2, 0x346, 0x345, - 0x3, 0x2, 0x2, 0x2, 0x347, 0x34a, 0x3, 0x2, 0x2, 0x2, 0x348, 0x346, - 0x3, 0x2, 0x2, 0x2, 0x348, 0x349, 0x3, 0x2, 0x2, 0x2, 0x349, 0x7b, - 0x3, 0x2, 0x2, 0x2, 0x34a, 0x348, 0x3, 0x2, 0x2, 0x2, 0x34b, 0x34c, - 0x9, 0x9, 0x2, 0x2, 0x34c, 0x7d, 0x3, 0x2, 0x2, 0x2, 0x34d, 0x351, - 0x5, 0x80, 0x41, 0x2, 0x34e, 0x351, 0x5, 0xc2, 0x62, 0x2, 0x34f, - 0x351, 0x5, 0xcc, 0x67, 0x2, 0x350, 0x34d, 0x3, 0x2, 0x2, 0x2, 0x350, - 0x34e, 0x3, 0x2, 0x2, 0x2, 0x350, 0x34f, 0x3, 0x2, 0x2, 0x2, 0x351, - 0x7f, 0x3, 0x2, 0x2, 0x2, 0x352, 0x365, 0x5, 0x88, 0x45, 0x2, 0x353, - 0x365, 0x5, 0x8c, 0x47, 0x2, 0x354, 0x365, 0x5, 0x8e, 0x48, 0x2, - 0x355, 0x365, 0x5, 0xb0, 0x59, 0x2, 0x356, 0x365, 0x5, 0xb2, 0x5a, - 0x2, 0x357, 0x365, 0x5, 0x92, 0x4a, 0x2, 0x358, 0x365, 0x5, 0x94, - 0x4b, 0x2, 0x359, 0x365, 0x5, 0x96, 0x4c, 0x2, 0x35a, 0x365, 0x5, - 0x9a, 0x4e, 0x2, 0x35b, 0x365, 0x5, 0xa0, 0x51, 0x2, 0x35c, 0x365, - 0x5, 0xa2, 0x52, 0x2, 0x35d, 0x365, 0x5, 0xa6, 0x54, 0x2, 0x35e, - 0x365, 0x5, 0xa8, 0x55, 0x2, 0x35f, 0x365, 0x5, 0xaa, 0x56, 0x2, - 0x360, 0x365, 0x5, 0x30, 0x19, 0x2, 0x361, 0x365, 0x5, 0x84, 0x43, - 0x2, 0x362, 0x365, 0x5, 0x82, 0x42, 0x2, 0x363, 0x365, 0x5, 0x86, - 0x44, 0x2, 0x364, 0x352, 0x3, 0x2, 0x2, 0x2, 0x364, 0x353, 0x3, 0x2, - 0x2, 0x2, 0x364, 0x354, 0x3, 0x2, 0x2, 0x2, 0x364, 0x355, 0x3, 0x2, - 0x2, 0x2, 0x364, 0x356, 0x3, 0x2, 0x2, 0x2, 0x364, 0x357, 0x3, 0x2, - 0x2, 0x2, 0x364, 0x358, 0x3, 0x2, 0x2, 0x2, 0x364, 0x359, 0x3, 0x2, - 0x2, 0x2, 0x364, 0x35a, 0x3, 0x2, 0x2, 0x2, 0x364, 0x35b, 0x3, 0x2, - 0x2, 0x2, 0x364, 0x35c, 0x3, 0x2, 0x2, 0x2, 0x364, 0x35d, 0x3, 0x2, - 0x2, 0x2, 0x364, 0x35e, 0x3, 0x2, 0x2, 0x2, 0x364, 0x35f, 0x3, 0x2, - 0x2, 0x2, 0x364, 0x360, 0x3, 0x2, 0x2, 0x2, 0x364, 0x361, 0x3, 0x2, - 0x2, 0x2, 0x364, 0x362, 0x3, 0x2, 0x2, 0x2, 0x364, 0x363, 0x3, 0x2, - 0x2, 0x2, 0x365, 0x81, 0x3, 0x2, 0x2, 0x2, 0x366, 0x367, 0x9, 0xa, - 0x2, 0x2, 0x367, 0x83, 0x3, 0x2, 0x2, 0x2, 0x368, 0x369, 0x7, 0xa9, - 0x2, 0x2, 0x369, 0x85, 0x3, 0x2, 0x2, 0x2, 0x36a, 0x36b, 0x9, 0xb, - 0x2, 0x2, 0x36b, 0x87, 0x3, 0x2, 0x2, 0x2, 0x36c, 0x36d, 0x5, 0x8a, - 0x46, 0x2, 0x36d, 0x36e, 0x7, 0x132, 0x2, 0x2, 0x36e, 0x36f, 0x5, - 0xae, 0x58, 0x2, 0x36f, 0x370, 0x7, 0x134, 0x2, 0x2, 0x370, 0x89, - 0x3, 0x2, 0x2, 0x2, 0x371, 0x372, 0x9, 0xc, 0x2, 0x2, 0x372, 0x8b, - 0x3, 0x2, 0x2, 0x2, 0x373, 0x374, 0x9, 0xd, 0x2, 0x2, 0x374, 0x8d, - 0x3, 0x2, 0x2, 0x2, 0x375, 0x376, 0x5, 0x90, 0x49, 0x2, 0x376, 0x377, - 0x7, 0x132, 0x2, 0x2, 0x377, 0x378, 0x5, 0xc2, 0x62, 0x2, 0x378, - 0x379, 0x7, 0x14a, 0x2, 0x2, 0x379, 0x37a, 0x7, 0x16c, 0x2, 0x2, - 0x37a, 0x37b, 0x7, 0x134, 0x2, 0x2, 0x37b, 0x8f, 0x3, 0x2, 0x2, 0x2, - 0x37c, 0x37d, 0x9, 0xe, 0x2, 0x2, 0x37d, 0x91, 0x3, 0x2, 0x2, 0x2, - 0x37e, 0x37f, 0x9, 0xf, 0x2, 0x2, 0x37f, 0x93, 0x3, 0x2, 0x2, 0x2, - 0x380, 0x381, 0x9, 0x10, 0x2, 0x2, 0x381, 0x95, 0x3, 0x2, 0x2, 0x2, - 0x382, 0x383, 0x5, 0x98, 0x4d, 0x2, 0x383, 0x384, 0x7, 0x132, 0x2, - 0x2, 0x384, 0x385, 0x5, 0x7e, 0x40, 0x2, 0x385, 0x386, 0x7, 0x134, - 0x2, 0x2, 0x386, 0x97, 0x3, 0x2, 0x2, 0x2, 0x387, 0x388, 0x9, 0x11, - 0x2, 0x2, 0x388, 0x99, 0x3, 0x2, 0x2, 0x2, 0x389, 0x38a, 0x5, 0x9c, - 0x4f, 0x2, 0x38a, 0x38b, 0x7, 0x132, 0x2, 0x2, 0x38b, 0x38c, 0x5, - 0x7e, 0x40, 0x2, 0x38c, 0x38d, 0x7, 0x134, 0x2, 0x2, 0x38d, 0x9b, - 0x3, 0x2, 0x2, 0x2, 0x38e, 0x38f, 0x9, 0x12, 0x2, 0x2, 0x38f, 0x9d, - 0x3, 0x2, 0x2, 0x2, 0x390, 0x391, 0x9, 0x13, 0x2, 0x2, 0x391, 0x9f, - 0x3, 0x2, 0x2, 0x2, 0x392, 0x393, 0x5, 0x9e, 0x50, 0x2, 0x393, 0xa1, - 0x3, 0x2, 0x2, 0x2, 0x394, 0x395, 0x5, 0x9e, 0x50, 0x2, 0x395, 0x396, - 0x7, 0x132, 0x2, 0x2, 0x396, 0x397, 0x5, 0xac, 0x57, 0x2, 0x397, - 0x398, 0x7, 0x134, 0x2, 0x2, 0x398, 0xa3, 0x3, 0x2, 0x2, 0x2, 0x399, - 0x39a, 0x9, 0x14, 0x2, 0x2, 0x39a, 0xa5, 0x3, 0x2, 0x2, 0x2, 0x39b, - 0x39c, 0x5, 0xa4, 0x53, 0x2, 0x39c, 0x39d, 0x7, 0x132, 0x2, 0x2, - 0x39d, 0x3a0, 0x5, 0xac, 0x57, 0x2, 0x39e, 0x39f, 0x7, 0x14a, 0x2, - 0x2, 0x39f, 0x3a1, 0x7, 0x16c, 0x2, 0x2, 0x3a0, 0x39e, 0x3, 0x2, - 0x2, 0x2, 0x3a0, 0x3a1, 0x3, 0x2, 0x2, 0x2, 0x3a1, 0x3a2, 0x3, 0x2, - 0x2, 0x2, 0x3a2, 0x3a3, 0x7, 0x134, 0x2, 0x2, 0x3a3, 0xa7, 0x3, 0x2, - 0x2, 0x2, 0x3a4, 0x3a5, 0x9, 0x15, 0x2, 0x2, 0x3a5, 0xa9, 0x3, 0x2, - 0x2, 0x2, 0x3a6, 0x3a7, 0x7, 0xfb, 0x2, 0x2, 0x3a7, 0x3a8, 0x7, 0x132, - 0x2, 0x2, 0x3a8, 0x3a9, 0x5, 0x94, 0x4b, 0x2, 0x3a9, 0x3aa, 0x7, - 0x14a, 0x2, 0x2, 0x3aa, 0x3ab, 0x7, 0x16c, 0x2, 0x2, 0x3ab, 0x3ac, - 0x7, 0x134, 0x2, 0x2, 0x3ac, 0xab, 0x3, 0x2, 0x2, 0x2, 0x3ad, 0x3b0, - 0x5, 0x94, 0x4b, 0x2, 0x3ae, 0x3b0, 0x5, 0xa8, 0x55, 0x2, 0x3af, - 0x3ad, 0x3, 0x2, 0x2, 0x2, 0x3af, 0x3ae, 0x3, 0x2, 0x2, 0x2, 0x3b0, - 0xad, 0x3, 0x2, 0x2, 0x2, 0x3b1, 0x3b5, 0x5, 0x94, 0x4b, 0x2, 0x3b2, - 0x3b5, 0x5, 0xa8, 0x55, 0x2, 0x3b3, 0x3b5, 0x5, 0xb0, 0x59, 0x2, - 0x3b4, 0x3b1, 0x3, 0x2, 0x2, 0x2, 0x3b4, 0x3b2, 0x3, 0x2, 0x2, 0x2, - 0x3b4, 0x3b3, 0x3, 0x2, 0x2, 0x2, 0x3b5, 0xaf, 0x3, 0x2, 0x2, 0x2, - 0x3b6, 0x3b7, 0x9, 0x16, 0x2, 0x2, 0x3b7, 0xb1, 0x3, 0x2, 0x2, 0x2, - 0x3b8, 0x3b9, 0x7, 0x94, 0x2, 0x2, 0x3b9, 0x3ba, 0x7, 0x132, 0x2, - 0x2, 0x3ba, 0x3bb, 0x5, 0x94, 0x4b, 0x2, 0x3bb, 0x3bc, 0x7, 0x14a, - 0x2, 0x2, 0x3bc, 0x3bd, 0x7, 0x16c, 0x2, 0x2, 0x3bd, 0x3be, 0x7, - 0x14a, 0x2, 0x2, 0x3be, 0x3bf, 0x7, 0x16c, 0x2, 0x2, 0x3bf, 0x3c0, - 0x7, 0x134, 0x2, 0x2, 0x3c0, 0xb3, 0x3, 0x2, 0x2, 0x2, 0x3c1, 0x3c2, - 0x7, 0x147, 0x2, 0x2, 0x3c2, 0x3c3, 0x7, 0xaa, 0x2, 0x2, 0x3c3, 0x3c4, - 0x7, 0x12b, 0x2, 0x2, 0x3c4, 0x3c5, 0x7, 0x16b, 0x2, 0x2, 0x3c5, - 0x3c6, 0x7, 0x12c, 0x2, 0x2, 0x3c6, 0xb5, 0x3, 0x2, 0x2, 0x2, 0x3c7, - 0x3c8, 0x7, 0x16b, 0x2, 0x2, 0x3c8, 0x3c9, 0x7, 0x14b, 0x2, 0x2, - 0x3c9, 0x3ca, 0x5, 0x58, 0x2d, 0x2, 0x3ca, 0x3cb, 0x7, 0x149, 0x2, - 0x2, 0x3cb, 0xb7, 0x3, 0x2, 0x2, 0x2, 0x3cc, 0x3d6, 0x7, 0x159, 0x2, - 0x2, 0x3cd, 0x3d6, 0x7, 0x15a, 0x2, 0x2, 0x3ce, 0x3d6, 0x7, 0x16d, - 0x2, 0x2, 0x3cf, 0x3d6, 0x7, 0x16c, 0x2, 0x2, 0x3d0, 0x3d2, 0x7, - 0x16e, 0x2, 0x2, 0x3d1, 0x3d0, 0x3, 0x2, 0x2, 0x2, 0x3d2, 0x3d3, - 0x3, 0x2, 0x2, 0x2, 0x3d3, 0x3d1, 0x3, 0x2, 0x2, 0x2, 0x3d3, 0x3d4, - 0x3, 0x2, 0x2, 0x2, 0x3d4, 0x3d6, 0x3, 0x2, 0x2, 0x2, 0x3d5, 0x3cc, - 0x3, 0x2, 0x2, 0x2, 0x3d5, 0x3cd, 0x3, 0x2, 0x2, 0x2, 0x3d5, 0x3ce, - 0x3, 0x2, 0x2, 0x2, 0x3d5, 0x3cf, 0x3, 0x2, 0x2, 0x2, 0x3d5, 0x3d1, - 0x3, 0x2, 0x2, 0x2, 0x3d6, 0xb9, 0x3, 0x2, 0x2, 0x2, 0x3d7, 0x3d8, - 0x5, 0x7a, 0x3e, 0x2, 0x3d8, 0x3dc, 0x5, 0xc0, 0x61, 0x2, 0x3d9, - 0x3da, 0x5, 0xc2, 0x62, 0x2, 0x3da, 0x3db, 0x7, 0x148, 0x2, 0x2, - 0x3db, 0x3dd, 0x3, 0x2, 0x2, 0x2, 0x3dc, 0x3d9, 0x3, 0x2, 0x2, 0x2, - 0x3dc, 0x3dd, 0x3, 0x2, 0x2, 0x2, 0x3dd, 0x3de, 0x3, 0x2, 0x2, 0x2, - 0x3de, 0x3e0, 0x7, 0x16b, 0x2, 0x2, 0x3df, 0x3e1, 0x5, 0xce, 0x68, - 0x2, 0x3e0, 0x3df, 0x3, 0x2, 0x2, 0x2, 0x3e0, 0x3e1, 0x3, 0x2, 0x2, - 0x2, 0x3e1, 0x3e2, 0x3, 0x2, 0x2, 0x2, 0x3e2, 0x3e4, 0x7, 0x12b, - 0x2, 0x2, 0x3e3, 0x3e5, 0x5, 0x34, 0x1b, 0x2, 0x3e4, 0x3e3, 0x3, - 0x2, 0x2, 0x2, 0x3e4, 0x3e5, 0x3, 0x2, 0x2, 0x2, 0x3e5, 0x3e6, 0x3, - 0x2, 0x2, 0x2, 0x3e6, 0x3e8, 0x7, 0x12c, 0x2, 0x2, 0x3e7, 0x3e9, - 0x7, 0x9a, 0x2, 0x2, 0x3e8, 0x3e7, 0x3, 0x2, 0x2, 0x2, 0x3e8, 0x3e9, - 0x3, 0x2, 0x2, 0x2, 0x3e9, 0x3eb, 0x3, 0x2, 0x2, 0x2, 0x3ea, 0x3ec, - 0x5, 0x38, 0x1d, 0x2, 0x3eb, 0x3ea, 0x3, 0x2, 0x2, 0x2, 0x3eb, 0x3ec, - 0x3, 0x2, 0x2, 0x2, 0x3ec, 0xbb, 0x3, 0x2, 0x2, 0x2, 0x3ed, 0x3ee, - 0x5, 0xba, 0x5e, 0x2, 0x3ee, 0x3ef, 0x5, 0x48, 0x25, 0x2, 0x3ef, - 0xbd, 0x3, 0x2, 0x2, 0x2, 0x3f0, 0x3f1, 0x5, 0xba, 0x5e, 0x2, 0x3f1, - 0x3f2, 0x7, 0x149, 0x2, 0x2, 0x3f2, 0xbf, 0x3, 0x2, 0x2, 0x2, 0x3f3, - 0x3f6, 0x5, 0x7e, 0x40, 0x2, 0x3f4, 0x3f6, 0x7, 0xfd, 0x2, 0x2, 0x3f5, - 0x3f3, 0x3, 0x2, 0x2, 0x2, 0x3f5, 0x3f4, 0x3, 0x2, 0x2, 0x2, 0x3f6, - 0xc1, 0x3, 0x2, 0x2, 0x2, 0x3f7, 0x3fa, 0x5, 0x6, 0x4, 0x2, 0x3f8, - 0x3fa, 0x5, 0x28, 0x15, 0x2, 0x3f9, 0x3f7, 0x3, 0x2, 0x2, 0x2, 0x3f9, - 0x3f8, 0x3, 0x2, 0x2, 0x2, 0x3fa, 0xc3, 0x3, 0x2, 0x2, 0x2, 0x3fb, - 0x3fc, 0x7, 0x15b, 0x2, 0x2, 0x3fc, 0x3fe, 0x7, 0x16b, 0x2, 0x2, - 0x3fd, 0x3ff, 0x5, 0xd2, 0x6a, 0x2, 0x3fe, 0x3fd, 0x3, 0x2, 0x2, - 0x2, 0x3fe, 0x3ff, 0x3, 0x2, 0x2, 0x2, 0x3ff, 0x400, 0x3, 0x2, 0x2, - 0x2, 0x400, 0x401, 0x7, 0x149, 0x2, 0x2, 0x401, 0xc5, 0x3, 0x2, 0x2, - 0x2, 0x402, 0x403, 0x7, 0x15d, 0x2, 0x2, 0x403, 0x404, 0x5, 0xc0, - 0x61, 0x2, 0x404, 0x405, 0x7, 0x16b, 0x2, 0x2, 0x405, 0x406, 0x7, - 0x149, 0x2, 0x2, 0x406, 0xc7, 0x3, 0x2, 0x2, 0x2, 0x407, 0x408, 0x7, - 0x15c, 0x2, 0x2, 0x408, 0x409, 0x7, 0x16b, 0x2, 0x2, 0x409, 0x40a, - 0x7, 0x14b, 0x2, 0x2, 0x40a, 0x40b, 0x5, 0xc0, 0x61, 0x2, 0x40b, - 0x40c, 0x7, 0x149, 0x2, 0x2, 0x40c, 0xc9, 0x3, 0x2, 0x2, 0x2, 0x40d, - 0x410, 0x5, 0xc8, 0x65, 0x2, 0x40e, 0x410, 0x5, 0xc6, 0x64, 0x2, - 0x40f, 0x40d, 0x3, 0x2, 0x2, 0x2, 0x40f, 0x40e, 0x3, 0x2, 0x2, 0x2, - 0x410, 0xcb, 0x3, 0x2, 0x2, 0x2, 0x411, 0x412, 0x7, 0x15f, 0x2, 0x2, - 0x412, 0x415, 0x7, 0x12b, 0x2, 0x2, 0x413, 0x416, 0x5, 0x5a, 0x2e, - 0x2, 0x414, 0x416, 0x5, 0xc0, 0x61, 0x2, 0x415, 0x413, 0x3, 0x2, - 0x2, 0x2, 0x415, 0x414, 0x3, 0x2, 0x2, 0x2, 0x416, 0x417, 0x3, 0x2, - 0x2, 0x2, 0x417, 0x41a, 0x7, 0x12c, 0x2, 0x2, 0x418, 0x419, 0x7, - 0x148, 0x2, 0x2, 0x419, 0x41b, 0x5, 0x6, 0x4, 0x2, 0x41a, 0x418, - 0x3, 0x2, 0x2, 0x2, 0x41a, 0x41b, 0x3, 0x2, 0x2, 0x2, 0x41b, 0xcd, - 0x3, 0x2, 0x2, 0x2, 0x41c, 0x41d, 0x7, 0x132, 0x2, 0x2, 0x41d, 0x422, - 0x5, 0xd0, 0x69, 0x2, 0x41e, 0x41f, 0x7, 0x14a, 0x2, 0x2, 0x41f, - 0x421, 0x5, 0xd0, 0x69, 0x2, 0x420, 0x41e, 0x3, 0x2, 0x2, 0x2, 0x421, - 0x424, 0x3, 0x2, 0x2, 0x2, 0x422, 0x420, 0x3, 0x2, 0x2, 0x2, 0x422, - 0x423, 0x3, 0x2, 0x2, 0x2, 0x423, 0x425, 0x3, 0x2, 0x2, 0x2, 0x424, - 0x422, 0x3, 0x2, 0x2, 0x2, 0x425, 0x426, 0x7, 0x134, 0x2, 0x2, 0x426, - 0xcf, 0x3, 0x2, 0x2, 0x2, 0x427, 0x429, 0x7, 0x16b, 0x2, 0x2, 0x428, - 0x42a, 0x5, 0xd2, 0x6a, 0x2, 0x429, 0x428, 0x3, 0x2, 0x2, 0x2, 0x429, - 0x42a, 0x3, 0x2, 0x2, 0x2, 0x42a, 0xd1, 0x3, 0x2, 0x2, 0x2, 0x42b, - 0x42c, 0x7, 0x147, 0x2, 0x2, 0x42c, 0x42d, 0x5, 0xc2, 0x62, 0x2, - 0x42d, 0xd3, 0x3, 0x2, 0x2, 0x2, 0x42e, 0x42f, 0x7, 0x15e, 0x2, 0x2, - 0x42f, 0xd5, 0x3, 0x2, 0x2, 0x2, 0x430, 0x431, 0x5, 0xbe, 0x60, 0x2, - 0x431, 0xd7, 0x3, 0x2, 0x2, 0x2, 0x432, 0x434, 0x5, 0x46, 0x24, 0x2, - 0x433, 0x432, 0x3, 0x2, 0x2, 0x2, 0x434, 0x437, 0x3, 0x2, 0x2, 0x2, - 0x435, 0x433, 0x3, 0x2, 0x2, 0x2, 0x435, 0x436, 0x3, 0x2, 0x2, 0x2, - 0x436, 0x438, 0x3, 0x2, 0x2, 0x2, 0x437, 0x435, 0x3, 0x2, 0x2, 0x2, - 0x438, 0x439, 0x5, 0xd6, 0x6c, 0x2, 0x439, 0xd9, 0x3, 0x2, 0x2, 0x2, - 0x43a, 0x43b, 0x5, 0xbc, 0x5f, 0x2, 0x43b, 0xdb, 0x3, 0x2, 0x2, 0x2, - 0x43c, 0x43e, 0x5, 0x46, 0x24, 0x2, 0x43d, 0x43c, 0x3, 0x2, 0x2, - 0x2, 0x43e, 0x441, 0x3, 0x2, 0x2, 0x2, 0x43f, 0x43d, 0x3, 0x2, 0x2, - 0x2, 0x43f, 0x440, 0x3, 0x2, 0x2, 0x2, 0x440, 0x442, 0x3, 0x2, 0x2, - 0x2, 0x441, 0x43f, 0x3, 0x2, 0x2, 0x2, 0x442, 0x443, 0x5, 0xda, 0x6e, - 0x2, 0x443, 0xdd, 0x3, 0x2, 0x2, 0x2, 0x444, 0x445, 0x7, 0x160, 0x2, - 0x2, 0x445, 0x446, 0x7, 0x12b, 0x2, 0x2, 0x446, 0x447, 0x7, 0x16e, - 0x2, 0x2, 0x447, 0x448, 0x7, 0x12c, 0x2, 0x2, 0x448, 0x455, 0x7, - 0x149, 0x2, 0x2, 0x449, 0x44a, 0x7, 0x161, 0x2, 0x2, 0x44a, 0x44d, - 0x7, 0x12b, 0x2, 0x2, 0x44b, 0x44e, 0x5, 0x6, 0x4, 0x2, 0x44c, 0x44e, - 0x5, 0xcc, 0x67, 0x2, 0x44d, 0x44b, 0x3, 0x2, 0x2, 0x2, 0x44d, 0x44c, - 0x3, 0x2, 0x2, 0x2, 0x44e, 0x44f, 0x3, 0x2, 0x2, 0x2, 0x44f, 0x450, - 0x7, 0x14a, 0x2, 0x2, 0x450, 0x451, 0x9, 0x17, 0x2, 0x2, 0x451, 0x452, - 0x7, 0x12c, 0x2, 0x2, 0x452, 0x453, 0x7, 0x149, 0x2, 0x2, 0x453, - 0x455, 0x3, 0x2, 0x2, 0x2, 0x454, 0x444, 0x3, 0x2, 0x2, 0x2, 0x454, - 0x449, 0x3, 0x2, 0x2, 0x2, 0x455, 0xdf, 0x3, 0x2, 0x2, 0x2, 0x456, - 0x458, 0x7, 0x9b, 0x2, 0x2, 0x457, 0x456, 0x3, 0x2, 0x2, 0x2, 0x457, - 0x458, 0x3, 0x2, 0x2, 0x2, 0x458, 0x459, 0x3, 0x2, 0x2, 0x2, 0x459, - 0x45a, 0x7, 0x168, 0x2, 0x2, 0x45a, 0x45d, 0x7, 0x16b, 0x2, 0x2, - 0x45b, 0x45c, 0x7, 0x147, 0x2, 0x2, 0x45c, 0x45e, 0x7, 0x16b, 0x2, - 0x2, 0x45d, 0x45b, 0x3, 0x2, 0x2, 0x2, 0x45d, 0x45e, 0x3, 0x2, 0x2, - 0x2, 0x45e, 0x45f, 0x3, 0x2, 0x2, 0x2, 0x45f, 0x463, 0x7, 0x12f, - 0x2, 0x2, 0x460, 0x462, 0x5, 0xe4, 0x73, 0x2, 0x461, 0x460, 0x3, - 0x2, 0x2, 0x2, 0x462, 0x465, 0x3, 0x2, 0x2, 0x2, 0x463, 0x461, 0x3, - 0x2, 0x2, 0x2, 0x463, 0x464, 0x3, 0x2, 0x2, 0x2, 0x464, 0x466, 0x3, - 0x2, 0x2, 0x2, 0x465, 0x463, 0x3, 0x2, 0x2, 0x2, 0x466, 0x467, 0x7, - 0x130, 0x2, 0x2, 0x467, 0xe1, 0x3, 0x2, 0x2, 0x2, 0x468, 0x46a, 0x5, - 0x46, 0x24, 0x2, 0x469, 0x468, 0x3, 0x2, 0x2, 0x2, 0x46a, 0x46d, - 0x3, 0x2, 0x2, 0x2, 0x46b, 0x469, 0x3, 0x2, 0x2, 0x2, 0x46b, 0x46c, - 0x3, 0x2, 0x2, 0x2, 0x46c, 0x46e, 0x3, 0x2, 0x2, 0x2, 0x46d, 0x46b, - 0x3, 0x2, 0x2, 0x2, 0x46e, 0x46f, 0x5, 0xe0, 0x71, 0x2, 0x46f, 0xe3, - 0x3, 0x2, 0x2, 0x2, 0x470, 0x478, 0x5, 0x16, 0xc, 0x2, 0x471, 0x478, - 0x5, 0xd8, 0x6d, 0x2, 0x472, 0x478, 0x5, 0xdc, 0x6f, 0x2, 0x473, - 0x478, 0x5, 0x32, 0x1a, 0x2, 0x474, 0x478, 0x5, 0x1e, 0x10, 0x2, - 0x475, 0x478, 0x5, 0xca, 0x66, 0x2, 0x476, 0x478, 0x5, 0x46, 0x24, - 0x2, 0x477, 0x470, 0x3, 0x2, 0x2, 0x2, 0x477, 0x471, 0x3, 0x2, 0x2, - 0x2, 0x477, 0x472, 0x3, 0x2, 0x2, 0x2, 0x477, 0x473, 0x3, 0x2, 0x2, - 0x2, 0x477, 0x474, 0x3, 0x2, 0x2, 0x2, 0x477, 0x475, 0x3, 0x2, 0x2, - 0x2, 0x477, 0x476, 0x3, 0x2, 0x2, 0x2, 0x478, 0xe5, 0x3, 0x2, 0x2, - 0x2, 0x479, 0x47a, 0x7, 0x167, 0x2, 0x2, 0x47a, 0x47b, 0x7, 0x16b, - 0x2, 0x2, 0x47b, 0x47c, 0x5, 0xea, 0x76, 0x2, 0x47c, 0xe7, 0x3, 0x2, - 0x2, 0x2, 0x47d, 0x47f, 0x5, 0x46, 0x24, 0x2, 0x47e, 0x47d, 0x3, - 0x2, 0x2, 0x2, 0x47f, 0x482, 0x3, 0x2, 0x2, 0x2, 0x480, 0x47e, 0x3, - 0x2, 0x2, 0x2, 0x480, 0x481, 0x3, 0x2, 0x2, 0x2, 0x481, 0x483, 0x3, - 0x2, 0x2, 0x2, 0x482, 0x480, 0x3, 0x2, 0x2, 0x2, 0x483, 0x484, 0x5, - 0xe6, 0x74, 0x2, 0x484, 0xe9, 0x3, 0x2, 0x2, 0x2, 0x485, 0x489, 0x7, - 0x12f, 0x2, 0x2, 0x486, 0x488, 0x5, 0xec, 0x77, 0x2, 0x487, 0x486, - 0x3, 0x2, 0x2, 0x2, 0x488, 0x48b, 0x3, 0x2, 0x2, 0x2, 0x489, 0x487, - 0x3, 0x2, 0x2, 0x2, 0x489, 0x48a, 0x3, 0x2, 0x2, 0x2, 0x48a, 0x48c, - 0x3, 0x2, 0x2, 0x2, 0x48b, 0x489, 0x3, 0x2, 0x2, 0x2, 0x48c, 0x48d, - 0x7, 0x130, 0x2, 0x2, 0x48d, 0xeb, 0x3, 0x2, 0x2, 0x2, 0x48e, 0x48f, - 0x7, 0x165, 0x2, 0x2, 0x48f, 0x490, 0x7, 0x14b, 0x2, 0x2, 0x490, - 0x491, 0x5, 0xb8, 0x5d, 0x2, 0x491, 0x492, 0x7, 0x149, 0x2, 0x2, - 0x492, 0x499, 0x3, 0x2, 0x2, 0x2, 0x493, 0x494, 0x7, 0x166, 0x2, - 0x2, 0x494, 0x495, 0x7, 0x14b, 0x2, 0x2, 0x495, 0x496, 0x5, 0xb8, - 0x5d, 0x2, 0x496, 0x497, 0x7, 0x149, 0x2, 0x2, 0x497, 0x499, 0x3, - 0x2, 0x2, 0x2, 0x498, 0x48e, 0x3, 0x2, 0x2, 0x2, 0x498, 0x493, 0x3, - 0x2, 0x2, 0x2, 0x499, 0xed, 0x3, 0x2, 0x2, 0x2, 0x49a, 0x49e, 0x7, - 0x12f, 0x2, 0x2, 0x49b, 0x49d, 0x5, 0xf0, 0x79, 0x2, 0x49c, 0x49b, - 0x3, 0x2, 0x2, 0x2, 0x49d, 0x4a0, 0x3, 0x2, 0x2, 0x2, 0x49e, 0x49c, - 0x3, 0x2, 0x2, 0x2, 0x49e, 0x49f, 0x3, 0x2, 0x2, 0x2, 0x49f, 0x4a1, - 0x3, 0x2, 0x2, 0x2, 0x4a0, 0x49e, 0x3, 0x2, 0x2, 0x2, 0x4a1, 0x4a2, - 0x7, 0x130, 0x2, 0x2, 0x4a2, 0xef, 0x3, 0x2, 0x2, 0x2, 0x4a3, 0x4b1, - 0x5, 0xf2, 0x7a, 0x2, 0x4a4, 0x4b1, 0x5, 0xf4, 0x7b, 0x2, 0x4a5, - 0x4b1, 0x5, 0xf6, 0x7c, 0x2, 0x4a6, 0x4b1, 0x5, 0xf8, 0x7d, 0x2, - 0x4a7, 0x4b1, 0x5, 0xfa, 0x7e, 0x2, 0x4a8, 0x4b1, 0x5, 0xfc, 0x7f, - 0x2, 0x4a9, 0x4b1, 0x5, 0xfe, 0x80, 0x2, 0x4aa, 0x4b1, 0x5, 0x100, - 0x81, 0x2, 0x4ab, 0x4b1, 0x5, 0x102, 0x82, 0x2, 0x4ac, 0x4b1, 0x5, - 0x104, 0x83, 0x2, 0x4ad, 0x4b1, 0x5, 0x106, 0x84, 0x2, 0x4ae, 0x4b1, - 0x5, 0x108, 0x85, 0x2, 0x4af, 0x4b1, 0x5, 0x10a, 0x86, 0x2, 0x4b0, - 0x4a3, 0x3, 0x2, 0x2, 0x2, 0x4b0, 0x4a4, 0x3, 0x2, 0x2, 0x2, 0x4b0, - 0x4a5, 0x3, 0x2, 0x2, 0x2, 0x4b0, 0x4a6, 0x3, 0x2, 0x2, 0x2, 0x4b0, - 0x4a7, 0x3, 0x2, 0x2, 0x2, 0x4b0, 0x4a8, 0x3, 0x2, 0x2, 0x2, 0x4b0, - 0x4a9, 0x3, 0x2, 0x2, 0x2, 0x4b0, 0x4aa, 0x3, 0x2, 0x2, 0x2, 0x4b0, - 0x4ab, 0x3, 0x2, 0x2, 0x2, 0x4b0, 0x4ac, 0x3, 0x2, 0x2, 0x2, 0x4b0, - 0x4ad, 0x3, 0x2, 0x2, 0x2, 0x4b0, 0x4ae, 0x3, 0x2, 0x2, 0x2, 0x4b0, - 0x4af, 0x3, 0x2, 0x2, 0x2, 0x4b1, 0xf1, 0x3, 0x2, 0x2, 0x2, 0x4b2, - 0x4b3, 0x7, 0x10f, 0x2, 0x2, 0x4b3, 0x4b4, 0x7, 0x14b, 0x2, 0x2, - 0x4b4, 0x4b5, 0x7, 0x16c, 0x2, 0x2, 0x4b5, 0x4b6, 0x7, 0x149, 0x2, - 0x2, 0x4b6, 0xf3, 0x3, 0x2, 0x2, 0x2, 0x4b7, 0x4b8, 0x7, 0x10c, 0x2, - 0x2, 0x4b8, 0x4b9, 0x7, 0x14b, 0x2, 0x2, 0x4b9, 0x4ba, 0x5, 0x10c, - 0x87, 0x2, 0x4ba, 0x4bb, 0x7, 0x149, 0x2, 0x2, 0x4bb, 0xf5, 0x3, - 0x2, 0x2, 0x2, 0x4bc, 0x4bd, 0x7, 0x10d, 0x2, 0x2, 0x4bd, 0x4be, - 0x7, 0x14b, 0x2, 0x2, 0x4be, 0x4bf, 0x5, 0x10c, 0x87, 0x2, 0x4bf, - 0x4c0, 0x7, 0x149, 0x2, 0x2, 0x4c0, 0xf7, 0x3, 0x2, 0x2, 0x2, 0x4c1, - 0x4c2, 0x7, 0x10e, 0x2, 0x2, 0x4c2, 0x4c3, 0x7, 0x14b, 0x2, 0x2, - 0x4c3, 0x4c4, 0x5, 0x10c, 0x87, 0x2, 0x4c4, 0x4c5, 0x7, 0x149, 0x2, - 0x2, 0x4c5, 0xf9, 0x3, 0x2, 0x2, 0x2, 0x4c6, 0x4c7, 0x7, 0x114, 0x2, - 0x2, 0x4c7, 0x4c8, 0x7, 0x14b, 0x2, 0x2, 0x4c8, 0x4c9, 0x5, 0x10e, - 0x88, 0x2, 0x4c9, 0x4ca, 0x7, 0x149, 0x2, 0x2, 0x4ca, 0xfb, 0x3, - 0x2, 0x2, 0x2, 0x4cb, 0x4cc, 0x7, 0x113, 0x2, 0x2, 0x4cc, 0x4cd, - 0x7, 0x14b, 0x2, 0x2, 0x4cd, 0x4ce, 0x5, 0x112, 0x8a, 0x2, 0x4ce, - 0x4cf, 0x7, 0x149, 0x2, 0x2, 0x4cf, 0xfd, 0x3, 0x2, 0x2, 0x2, 0x4d0, - 0x4d1, 0x7, 0x108, 0x2, 0x2, 0x4d1, 0x4d2, 0x7, 0x14b, 0x2, 0x2, - 0x4d2, 0x4d3, 0x5, 0x110, 0x89, 0x2, 0x4d3, 0x4d4, 0x7, 0x149, 0x2, - 0x2, 0x4d4, 0xff, 0x3, 0x2, 0x2, 0x2, 0x4d5, 0x4d6, 0x7, 0x109, 0x2, - 0x2, 0x4d6, 0x4d7, 0x7, 0x14b, 0x2, 0x2, 0x4d7, 0x4d8, 0x5, 0x110, - 0x89, 0x2, 0x4d8, 0x4d9, 0x7, 0x149, 0x2, 0x2, 0x4d9, 0x101, 0x3, - 0x2, 0x2, 0x2, 0x4da, 0x4db, 0x7, 0x10a, 0x2, 0x2, 0x4db, 0x4dc, - 0x7, 0x14b, 0x2, 0x2, 0x4dc, 0x4dd, 0x5, 0x110, 0x89, 0x2, 0x4dd, - 0x4de, 0x7, 0x149, 0x2, 0x2, 0x4de, 0x103, 0x3, 0x2, 0x2, 0x2, 0x4df, - 0x4e0, 0x7, 0x111, 0x2, 0x2, 0x4e0, 0x4e1, 0x7, 0x14b, 0x2, 0x2, - 0x4e1, 0x4e2, 0x7, 0x16d, 0x2, 0x2, 0x4e2, 0x4e3, 0x7, 0x149, 0x2, - 0x2, 0x4e3, 0x105, 0x3, 0x2, 0x2, 0x2, 0x4e4, 0x4e5, 0x7, 0x110, - 0x2, 0x2, 0x4e5, 0x4e6, 0x7, 0x14b, 0x2, 0x2, 0x4e6, 0x4e7, 0x7, - 0x16d, 0x2, 0x2, 0x4e7, 0x4e8, 0x7, 0x149, 0x2, 0x2, 0x4e8, 0x107, - 0x3, 0x2, 0x2, 0x2, 0x4e9, 0x4ea, 0x7, 0x112, 0x2, 0x2, 0x4ea, 0x4eb, - 0x7, 0x14b, 0x2, 0x2, 0x4eb, 0x4ec, 0x7, 0x16d, 0x2, 0x2, 0x4ec, - 0x4ed, 0x7, 0x149, 0x2, 0x2, 0x4ed, 0x109, 0x3, 0x2, 0x2, 0x2, 0x4ee, - 0x4ef, 0x7, 0x10b, 0x2, 0x2, 0x4ef, 0x4f0, 0x7, 0x14b, 0x2, 0x2, - 0x4f0, 0x4f1, 0x5, 0x114, 0x8b, 0x2, 0x4f1, 0x4f2, 0x7, 0x149, 0x2, - 0x2, 0x4f2, 0x10b, 0x3, 0x2, 0x2, 0x2, 0x4f3, 0x4f4, 0x9, 0x18, 0x2, - 0x2, 0x4f4, 0x10d, 0x3, 0x2, 0x2, 0x2, 0x4f5, 0x4f6, 0x9, 0x19, 0x2, - 0x2, 0x4f6, 0x10f, 0x3, 0x2, 0x2, 0x2, 0x4f7, 0x4f8, 0x9, 0x1a, 0x2, - 0x2, 0x4f8, 0x111, 0x3, 0x2, 0x2, 0x2, 0x4f9, 0x4fa, 0x9, 0x1b, 0x2, - 0x2, 0x4fa, 0x113, 0x3, 0x2, 0x2, 0x2, 0x4fb, 0x4fc, 0x9, 0x1c, 0x2, - 0x2, 0x4fc, 0x115, 0x3, 0x2, 0x2, 0x2, 0x6b, 0x119, 0x128, 0x12c, - 0x134, 0x13a, 0x143, 0x149, 0x154, 0x15d, 0x168, 0x173, 0x178, 0x185, - 0x18c, 0x193, 0x197, 0x19c, 0x1a2, 0x1ad, 0x1b5, 0x1c5, 0x1c8, 0x1cd, - 0x1d3, 0x1e1, 0x1ec, 0x1f0, 0x1f4, 0x1f8, 0x1fa, 0x206, 0x20e, 0x214, - 0x21c, 0x220, 0x228, 0x22d, 0x232, 0x238, 0x245, 0x24e, 0x253, 0x25f, - 0x26b, 0x279, 0x27f, 0x283, 0x287, 0x293, 0x298, 0x2ac, 0x2b5, 0x2d1, - 0x2d3, 0x2de, 0x2eb, 0x2f4, 0x2fa, 0x306, 0x30c, 0x310, 0x313, 0x316, - 0x319, 0x321, 0x328, 0x32f, 0x333, 0x337, 0x341, 0x348, 0x350, 0x364, - 0x3a0, 0x3af, 0x3b4, 0x3d3, 0x3d5, 0x3dc, 0x3e0, 0x3e4, 0x3e8, 0x3eb, - 0x3f5, 0x3f9, 0x3fe, 0x40f, 0x415, 0x41a, 0x422, 0x429, 0x435, 0x43f, - 0x44d, 0x454, 0x457, 0x45d, 0x463, 0x46b, 0x477, 0x480, 0x489, 0x498, - 0x49e, 0x4b0, + 0x106, 0x108, 0x10a, 0x10c, 0x10e, 0x110, 0x112, 0x2, 0x1d, 0x4, + 0x2, 0x22, 0x22, 0xc1, 0xc1, 0x3, 0x2, 0x20, 0x21, 0x3, 0x2, 0x171, + 0x173, 0x4, 0x2, 0x141, 0x141, 0x143, 0x143, 0x4, 0x2, 0x140, 0x143, + 0x14c, 0x14d, 0x6, 0x2, 0x13a, 0x140, 0x142, 0x142, 0x144, 0x14b, + 0x15e, 0x15f, 0x3, 0x2, 0x153, 0x15d, 0x13, 0x2, 0x1f, 0x1f, 0x23, + 0x24, 0x42, 0x42, 0x5b, 0x5c, 0x74, 0x77, 0x92, 0x94, 0x98, 0x9b, + 0xa0, 0xa0, 0xa2, 0xa2, 0xaf, 0xaf, 0xb8, 0xb8, 0xbe, 0xc0, 0xd0, + 0xd1, 0xd3, 0xd3, 0xec, 0xed, 0x104, 0x104, 0x173, 0x173, 0x3, 0x2, + 0x107, 0x10f, 0x4, 0x2, 0x1a, 0x1a, 0xab, 0xab, 0x5, 0x2, 0x19, 0x19, + 0xa3, 0xa3, 0xb0, 0xb0, 0x5, 0x2, 0x1b, 0x1b, 0xa4, 0xa4, 0xb1, 0xb1, + 0x4, 0x2, 0x78, 0x78, 0x9c, 0x9c, 0x3, 0x2, 0xb9, 0xbd, 0xa, 0x2, + 0x4, 0x4, 0x2a, 0x2a, 0x45, 0x45, 0x5e, 0x5e, 0x79, 0x7c, 0xd4, 0xd4, + 0xe9, 0xeb, 0xee, 0xee, 0x5, 0x2, 0x95, 0x95, 0xa1, 0xa1, 0xd2, 0xd2, + 0x7, 0x2, 0x3, 0x3, 0x25, 0x25, 0xa5, 0xa5, 0xb2, 0xb2, 0xc2, 0xc2, + 0x7, 0x2, 0xa6, 0xaa, 0xb3, 0xb7, 0xc3, 0xc4, 0xc7, 0xca, 0xcd, 0xcf, + 0x3, 0x2, 0xcb, 0xcc, 0xa, 0x2, 0x5, 0x8, 0x2b, 0x2e, 0x46, 0x49, + 0x5f, 0x62, 0x7d, 0x80, 0xd5, 0xd8, 0xef, 0xf2, 0x103, 0x103, 0xa, + 0x2, 0x9, 0x18, 0x2f, 0x3e, 0x4a, 0x59, 0x63, 0x72, 0x81, 0x90, 0x97, + 0x97, 0xd9, 0xe8, 0xf3, 0x102, 0x3, 0x2, 0x16e, 0x170, 0x3, 0x2, + 0x11d, 0x11e, 0x3, 0x2, 0x11f, 0x122, 0x3, 0x2, 0x123, 0x127, 0x3, + 0x2, 0x128, 0x12f, 0x3, 0x2, 0x130, 0x132, 0x2, 0x524, 0x2, 0x117, + 0x3, 0x2, 0x2, 0x2, 0x4, 0x126, 0x3, 0x2, 0x2, 0x2, 0x6, 0x12a, 0x3, + 0x2, 0x2, 0x2, 0x8, 0x12c, 0x3, 0x2, 0x2, 0x2, 0xa, 0x12e, 0x3, 0x2, + 0x2, 0x2, 0xc, 0x132, 0x3, 0x2, 0x2, 0x2, 0xe, 0x13b, 0x3, 0x2, 0x2, + 0x2, 0x10, 0x13e, 0x3, 0x2, 0x2, 0x2, 0x12, 0x14c, 0x3, 0x2, 0x2, + 0x2, 0x14, 0x15b, 0x3, 0x2, 0x2, 0x2, 0x16, 0x15d, 0x3, 0x2, 0x2, + 0x2, 0x18, 0x160, 0x3, 0x2, 0x2, 0x2, 0x1a, 0x171, 0x3, 0x2, 0x2, + 0x2, 0x1c, 0x176, 0x3, 0x2, 0x2, 0x2, 0x1e, 0x17c, 0x3, 0x2, 0x2, + 0x2, 0x20, 0x17f, 0x3, 0x2, 0x2, 0x2, 0x22, 0x18a, 0x3, 0x2, 0x2, + 0x2, 0x24, 0x18c, 0x3, 0x2, 0x2, 0x2, 0x26, 0x197, 0x3, 0x2, 0x2, + 0x2, 0x28, 0x1a0, 0x3, 0x2, 0x2, 0x2, 0x2a, 0x1a2, 0x3, 0x2, 0x2, + 0x2, 0x2c, 0x1a5, 0x3, 0x2, 0x2, 0x2, 0x2e, 0x1b3, 0x3, 0x2, 0x2, + 0x2, 0x30, 0x1b5, 0x3, 0x2, 0x2, 0x2, 0x32, 0x1ba, 0x3, 0x2, 0x2, + 0x2, 0x34, 0x1c6, 0x3, 0x2, 0x2, 0x2, 0x36, 0x1cb, 0x3, 0x2, 0x2, + 0x2, 0x38, 0x1d4, 0x3, 0x2, 0x2, 0x2, 0x3a, 0x1d7, 0x3, 0x2, 0x2, + 0x2, 0x3c, 0x1d9, 0x3, 0x2, 0x2, 0x2, 0x3e, 0x1e1, 0x3, 0x2, 0x2, + 0x2, 0x40, 0x1f7, 0x3, 0x2, 0x2, 0x2, 0x42, 0x1f9, 0x3, 0x2, 0x2, + 0x2, 0x44, 0x1fd, 0x3, 0x2, 0x2, 0x2, 0x46, 0x20b, 0x3, 0x2, 0x2, + 0x2, 0x48, 0x20d, 0x3, 0x2, 0x2, 0x2, 0x4a, 0x219, 0x3, 0x2, 0x2, + 0x2, 0x4c, 0x21d, 0x3, 0x2, 0x2, 0x2, 0x4e, 0x225, 0x3, 0x2, 0x2, + 0x2, 0x50, 0x228, 0x3, 0x2, 0x2, 0x2, 0x52, 0x231, 0x3, 0x2, 0x2, + 0x2, 0x54, 0x295, 0x3, 0x2, 0x2, 0x2, 0x56, 0x297, 0x3, 0x2, 0x2, + 0x2, 0x58, 0x2b2, 0x3, 0x2, 0x2, 0x2, 0x5a, 0x2d3, 0x3, 0x2, 0x2, + 0x2, 0x5c, 0x2de, 0x3, 0x2, 0x2, 0x2, 0x5e, 0x2e0, 0x3, 0x2, 0x2, + 0x2, 0x60, 0x2e2, 0x3, 0x2, 0x2, 0x2, 0x62, 0x2e4, 0x3, 0x2, 0x2, + 0x2, 0x64, 0x2e6, 0x3, 0x2, 0x2, 0x2, 0x66, 0x2ec, 0x3, 0x2, 0x2, + 0x2, 0x68, 0x2f7, 0x3, 0x2, 0x2, 0x2, 0x6a, 0x2fd, 0x3, 0x2, 0x2, + 0x2, 0x6c, 0x308, 0x3, 0x2, 0x2, 0x2, 0x6e, 0x317, 0x3, 0x2, 0x2, + 0x2, 0x70, 0x31d, 0x3, 0x2, 0x2, 0x2, 0x72, 0x324, 0x3, 0x2, 0x2, + 0x2, 0x74, 0x326, 0x3, 0x2, 0x2, 0x2, 0x76, 0x331, 0x3, 0x2, 0x2, + 0x2, 0x78, 0x337, 0x3, 0x2, 0x2, 0x2, 0x7a, 0x344, 0x3, 0x2, 0x2, + 0x2, 0x7c, 0x347, 0x3, 0x2, 0x2, 0x2, 0x7e, 0x349, 0x3, 0x2, 0x2, + 0x2, 0x80, 0x362, 0x3, 0x2, 0x2, 0x2, 0x82, 0x364, 0x3, 0x2, 0x2, + 0x2, 0x84, 0x366, 0x3, 0x2, 0x2, 0x2, 0x86, 0x368, 0x3, 0x2, 0x2, + 0x2, 0x88, 0x36a, 0x3, 0x2, 0x2, 0x2, 0x8a, 0x36f, 0x3, 0x2, 0x2, + 0x2, 0x8c, 0x371, 0x3, 0x2, 0x2, 0x2, 0x8e, 0x373, 0x3, 0x2, 0x2, + 0x2, 0x90, 0x37a, 0x3, 0x2, 0x2, 0x2, 0x92, 0x37c, 0x3, 0x2, 0x2, + 0x2, 0x94, 0x37e, 0x3, 0x2, 0x2, 0x2, 0x96, 0x380, 0x3, 0x2, 0x2, + 0x2, 0x98, 0x385, 0x3, 0x2, 0x2, 0x2, 0x9a, 0x387, 0x3, 0x2, 0x2, + 0x2, 0x9c, 0x38c, 0x3, 0x2, 0x2, 0x2, 0x9e, 0x38e, 0x3, 0x2, 0x2, + 0x2, 0xa0, 0x390, 0x3, 0x2, 0x2, 0x2, 0xa2, 0x392, 0x3, 0x2, 0x2, + 0x2, 0xa4, 0x397, 0x3, 0x2, 0x2, 0x2, 0xa6, 0x399, 0x3, 0x2, 0x2, + 0x2, 0xa8, 0x3a2, 0x3, 0x2, 0x2, 0x2, 0xaa, 0x3a4, 0x3, 0x2, 0x2, + 0x2, 0xac, 0x3ad, 0x3, 0x2, 0x2, 0x2, 0xae, 0x3b2, 0x3, 0x2, 0x2, + 0x2, 0xb0, 0x3b4, 0x3, 0x2, 0x2, 0x2, 0xb2, 0x3b6, 0x3, 0x2, 0x2, + 0x2, 0xb4, 0x3bf, 0x3, 0x2, 0x2, 0x2, 0xb6, 0x3c5, 0x3, 0x2, 0x2, + 0x2, 0xb8, 0x3d3, 0x3, 0x2, 0x2, 0x2, 0xba, 0x3d5, 0x3, 0x2, 0x2, + 0x2, 0xbc, 0x3ea, 0x3, 0x2, 0x2, 0x2, 0xbe, 0x3ed, 0x3, 0x2, 0x2, + 0x2, 0xc0, 0x3f2, 0x3, 0x2, 0x2, 0x2, 0xc2, 0x3f4, 0x3, 0x2, 0x2, + 0x2, 0xc4, 0x3fb, 0x3, 0x2, 0x2, 0x2, 0xc6, 0x400, 0x3, 0x2, 0x2, + 0x2, 0xc8, 0x408, 0x3, 0x2, 0x2, 0x2, 0xca, 0x40a, 0x3, 0x2, 0x2, + 0x2, 0xcc, 0x415, 0x3, 0x2, 0x2, 0x2, 0xce, 0x420, 0x3, 0x2, 0x2, + 0x2, 0xd0, 0x424, 0x3, 0x2, 0x2, 0x2, 0xd2, 0x427, 0x3, 0x2, 0x2, + 0x2, 0xd4, 0x429, 0x3, 0x2, 0x2, 0x2, 0xd6, 0x42e, 0x3, 0x2, 0x2, + 0x2, 0xd8, 0x433, 0x3, 0x2, 0x2, 0x2, 0xda, 0x438, 0x3, 0x2, 0x2, + 0x2, 0xdc, 0x44d, 0x3, 0x2, 0x2, 0x2, 0xde, 0x450, 0x3, 0x2, 0x2, + 0x2, 0xe0, 0x464, 0x3, 0x2, 0x2, 0x2, 0xe2, 0x470, 0x3, 0x2, 0x2, + 0x2, 0xe4, 0x472, 0x3, 0x2, 0x2, 0x2, 0xe6, 0x479, 0x3, 0x2, 0x2, + 0x2, 0xe8, 0x47e, 0x3, 0x2, 0x2, 0x2, 0xea, 0x491, 0x3, 0x2, 0x2, + 0x2, 0xec, 0x493, 0x3, 0x2, 0x2, 0x2, 0xee, 0x4a9, 0x3, 0x2, 0x2, + 0x2, 0xf0, 0x4ab, 0x3, 0x2, 0x2, 0x2, 0xf2, 0x4b0, 0x3, 0x2, 0x2, + 0x2, 0xf4, 0x4b5, 0x3, 0x2, 0x2, 0x2, 0xf6, 0x4ba, 0x3, 0x2, 0x2, + 0x2, 0xf8, 0x4bf, 0x3, 0x2, 0x2, 0x2, 0xfa, 0x4c4, 0x3, 0x2, 0x2, + 0x2, 0xfc, 0x4c9, 0x3, 0x2, 0x2, 0x2, 0xfe, 0x4ce, 0x3, 0x2, 0x2, + 0x2, 0x100, 0x4d3, 0x3, 0x2, 0x2, 0x2, 0x102, 0x4d8, 0x3, 0x2, 0x2, + 0x2, 0x104, 0x4dd, 0x3, 0x2, 0x2, 0x2, 0x106, 0x4e2, 0x3, 0x2, 0x2, + 0x2, 0x108, 0x4e7, 0x3, 0x2, 0x2, 0x2, 0x10a, 0x4ec, 0x3, 0x2, 0x2, + 0x2, 0x10c, 0x4ee, 0x3, 0x2, 0x2, 0x2, 0x10e, 0x4f0, 0x3, 0x2, 0x2, + 0x2, 0x110, 0x4f2, 0x3, 0x2, 0x2, 0x2, 0x112, 0x4f4, 0x3, 0x2, 0x2, + 0x2, 0x114, 0x116, 0x5, 0x4, 0x3, 0x2, 0x115, 0x114, 0x3, 0x2, 0x2, + 0x2, 0x116, 0x119, 0x3, 0x2, 0x2, 0x2, 0x117, 0x115, 0x3, 0x2, 0x2, + 0x2, 0x117, 0x118, 0x3, 0x2, 0x2, 0x2, 0x118, 0x11a, 0x3, 0x2, 0x2, + 0x2, 0x119, 0x117, 0x3, 0x2, 0x2, 0x2, 0x11a, 0x11b, 0x7, 0x2, 0x2, + 0x3, 0x11b, 0x3, 0x3, 0x2, 0x2, 0x2, 0x11c, 0x127, 0x5, 0x1c, 0xf, + 0x2, 0x11d, 0x127, 0x5, 0x32, 0x1a, 0x2, 0x11e, 0x127, 0x5, 0xda, + 0x6e, 0x2, 0x11f, 0x127, 0x5, 0xd6, 0x6c, 0x2, 0x120, 0x127, 0x5, + 0x44, 0x23, 0x2, 0x121, 0x127, 0x5, 0xdc, 0x6f, 0x2, 0x122, 0x127, + 0x5, 0xc8, 0x65, 0x2, 0x123, 0x127, 0x5, 0xe0, 0x71, 0x2, 0x124, + 0x127, 0x5, 0xe6, 0x74, 0x2, 0x125, 0x127, 0x7, 0x151, 0x2, 0x2, + 0x126, 0x11c, 0x3, 0x2, 0x2, 0x2, 0x126, 0x11d, 0x3, 0x2, 0x2, 0x2, + 0x126, 0x11e, 0x3, 0x2, 0x2, 0x2, 0x126, 0x11f, 0x3, 0x2, 0x2, 0x2, + 0x126, 0x120, 0x3, 0x2, 0x2, 0x2, 0x126, 0x121, 0x3, 0x2, 0x2, 0x2, + 0x126, 0x122, 0x3, 0x2, 0x2, 0x2, 0x126, 0x123, 0x3, 0x2, 0x2, 0x2, + 0x126, 0x124, 0x3, 0x2, 0x2, 0x2, 0x126, 0x125, 0x3, 0x2, 0x2, 0x2, + 0x127, 0x5, 0x3, 0x2, 0x2, 0x2, 0x128, 0x12b, 0x5, 0x8, 0x5, 0x2, + 0x129, 0x12b, 0x5, 0xa, 0x6, 0x2, 0x12a, 0x128, 0x3, 0x2, 0x2, 0x2, + 0x12a, 0x129, 0x3, 0x2, 0x2, 0x2, 0x12b, 0x7, 0x3, 0x2, 0x2, 0x2, + 0x12c, 0x12d, 0x7, 0x173, 0x2, 0x2, 0x12d, 0x9, 0x3, 0x2, 0x2, 0x2, + 0x12e, 0x12f, 0x5, 0xc, 0x7, 0x2, 0x12f, 0x130, 0x5, 0x8, 0x5, 0x2, + 0x130, 0xb, 0x3, 0x2, 0x2, 0x2, 0x131, 0x133, 0x7, 0x150, 0x2, 0x2, + 0x132, 0x131, 0x3, 0x2, 0x2, 0x2, 0x132, 0x133, 0x3, 0x2, 0x2, 0x2, + 0x133, 0x138, 0x3, 0x2, 0x2, 0x2, 0x134, 0x135, 0x7, 0x173, 0x2, + 0x2, 0x135, 0x137, 0x7, 0x150, 0x2, 0x2, 0x136, 0x134, 0x3, 0x2, + 0x2, 0x2, 0x137, 0x13a, 0x3, 0x2, 0x2, 0x2, 0x138, 0x136, 0x3, 0x2, + 0x2, 0x2, 0x138, 0x139, 0x3, 0x2, 0x2, 0x2, 0x139, 0xd, 0x3, 0x2, + 0x2, 0x2, 0x13a, 0x138, 0x3, 0x2, 0x2, 0x2, 0x13b, 0x13c, 0x5, 0x10, + 0x9, 0x2, 0x13c, 0x13d, 0x7, 0x151, 0x2, 0x2, 0x13d, 0xf, 0x3, 0x2, + 0x2, 0x2, 0x13e, 0x13f, 0x7, 0x22, 0x2, 0x2, 0x13f, 0x141, 0x7, 0x173, + 0x2, 0x2, 0x140, 0x142, 0x5, 0x12, 0xa, 0x2, 0x141, 0x140, 0x3, 0x2, + 0x2, 0x2, 0x141, 0x142, 0x3, 0x2, 0x2, 0x2, 0x142, 0x143, 0x3, 0x2, + 0x2, 0x2, 0x143, 0x147, 0x7, 0x137, 0x2, 0x2, 0x144, 0x146, 0x5, + 0x14, 0xb, 0x2, 0x145, 0x144, 0x3, 0x2, 0x2, 0x2, 0x146, 0x149, 0x3, + 0x2, 0x2, 0x2, 0x147, 0x145, 0x3, 0x2, 0x2, 0x2, 0x147, 0x148, 0x3, + 0x2, 0x2, 0x2, 0x148, 0x14a, 0x3, 0x2, 0x2, 0x2, 0x149, 0x147, 0x3, + 0x2, 0x2, 0x2, 0x14a, 0x14b, 0x7, 0x138, 0x2, 0x2, 0x14b, 0x11, 0x3, + 0x2, 0x2, 0x2, 0x14c, 0x14d, 0x7, 0x14f, 0x2, 0x2, 0x14d, 0x152, + 0x5, 0x6, 0x4, 0x2, 0x14e, 0x14f, 0x7, 0x152, 0x2, 0x2, 0x14f, 0x151, + 0x5, 0x6, 0x4, 0x2, 0x150, 0x14e, 0x3, 0x2, 0x2, 0x2, 0x151, 0x154, + 0x3, 0x2, 0x2, 0x2, 0x152, 0x150, 0x3, 0x2, 0x2, 0x2, 0x152, 0x153, + 0x3, 0x2, 0x2, 0x2, 0x153, 0x13, 0x3, 0x2, 0x2, 0x2, 0x154, 0x152, + 0x3, 0x2, 0x2, 0x2, 0x155, 0x15c, 0x5, 0x32, 0x1a, 0x2, 0x156, 0x15c, + 0x5, 0xda, 0x6e, 0x2, 0x157, 0x15c, 0x5, 0xd6, 0x6c, 0x2, 0x158, + 0x15c, 0x5, 0xc8, 0x65, 0x2, 0x159, 0x15c, 0x5, 0x1c, 0xf, 0x2, 0x15a, + 0x15c, 0x5, 0x46, 0x24, 0x2, 0x15b, 0x155, 0x3, 0x2, 0x2, 0x2, 0x15b, + 0x156, 0x3, 0x2, 0x2, 0x2, 0x15b, 0x157, 0x3, 0x2, 0x2, 0x2, 0x15b, + 0x158, 0x3, 0x2, 0x2, 0x2, 0x15b, 0x159, 0x3, 0x2, 0x2, 0x2, 0x15b, + 0x15a, 0x3, 0x2, 0x2, 0x2, 0x15c, 0x15, 0x3, 0x2, 0x2, 0x2, 0x15d, + 0x15e, 0x5, 0x18, 0xd, 0x2, 0x15e, 0x15f, 0x7, 0x151, 0x2, 0x2, 0x15f, + 0x17, 0x3, 0x2, 0x2, 0x2, 0x160, 0x161, 0x7, 0xc1, 0x2, 0x2, 0x161, + 0x162, 0x7, 0x173, 0x2, 0x2, 0x162, 0x166, 0x7, 0x137, 0x2, 0x2, + 0x163, 0x165, 0x5, 0x1a, 0xe, 0x2, 0x164, 0x163, 0x3, 0x2, 0x2, 0x2, + 0x165, 0x168, 0x3, 0x2, 0x2, 0x2, 0x166, 0x164, 0x3, 0x2, 0x2, 0x2, + 0x166, 0x167, 0x3, 0x2, 0x2, 0x2, 0x167, 0x169, 0x3, 0x2, 0x2, 0x2, + 0x168, 0x166, 0x3, 0x2, 0x2, 0x2, 0x169, 0x16a, 0x7, 0x138, 0x2, + 0x2, 0x16a, 0x19, 0x3, 0x2, 0x2, 0x2, 0x16b, 0x172, 0x5, 0x32, 0x1a, + 0x2, 0x16c, 0x172, 0x5, 0xda, 0x6e, 0x2, 0x16d, 0x172, 0x5, 0xd6, + 0x6c, 0x2, 0x16e, 0x172, 0x5, 0x1c, 0xf, 0x2, 0x16f, 0x172, 0x5, + 0xc8, 0x65, 0x2, 0x170, 0x172, 0x5, 0x46, 0x24, 0x2, 0x171, 0x16b, + 0x3, 0x2, 0x2, 0x2, 0x171, 0x16c, 0x3, 0x2, 0x2, 0x2, 0x171, 0x16d, + 0x3, 0x2, 0x2, 0x2, 0x171, 0x16e, 0x3, 0x2, 0x2, 0x2, 0x171, 0x16f, + 0x3, 0x2, 0x2, 0x2, 0x171, 0x170, 0x3, 0x2, 0x2, 0x2, 0x172, 0x1b, + 0x3, 0x2, 0x2, 0x2, 0x173, 0x175, 0x5, 0x46, 0x24, 0x2, 0x174, 0x173, + 0x3, 0x2, 0x2, 0x2, 0x175, 0x178, 0x3, 0x2, 0x2, 0x2, 0x176, 0x174, + 0x3, 0x2, 0x2, 0x2, 0x176, 0x177, 0x3, 0x2, 0x2, 0x2, 0x177, 0x179, + 0x3, 0x2, 0x2, 0x2, 0x178, 0x176, 0x3, 0x2, 0x2, 0x2, 0x179, 0x17a, + 0x5, 0x28, 0x15, 0x2, 0x17a, 0x17b, 0x7, 0x151, 0x2, 0x2, 0x17b, + 0x1d, 0x3, 0x2, 0x2, 0x2, 0x17c, 0x17d, 0x5, 0x20, 0x11, 0x2, 0x17d, + 0x17e, 0x7, 0x151, 0x2, 0x2, 0x17e, 0x1f, 0x3, 0x2, 0x2, 0x2, 0x17f, + 0x180, 0x5, 0x22, 0x12, 0x2, 0x180, 0x181, 0x7, 0x173, 0x2, 0x2, + 0x181, 0x183, 0x7, 0x137, 0x2, 0x2, 0x182, 0x184, 0x5, 0x24, 0x13, + 0x2, 0x183, 0x182, 0x3, 0x2, 0x2, 0x2, 0x183, 0x184, 0x3, 0x2, 0x2, + 0x2, 0x184, 0x185, 0x3, 0x2, 0x2, 0x2, 0x185, 0x186, 0x7, 0x138, + 0x2, 0x2, 0x186, 0x21, 0x3, 0x2, 0x2, 0x2, 0x187, 0x18b, 0x7, 0x40, + 0x2, 0x2, 0x188, 0x189, 0x7, 0x40, 0x2, 0x2, 0x189, 0x18b, 0x9, 0x2, + 0x2, 0x2, 0x18a, 0x187, 0x3, 0x2, 0x2, 0x2, 0x18a, 0x188, 0x3, 0x2, + 0x2, 0x2, 0x18b, 0x23, 0x3, 0x2, 0x2, 0x2, 0x18c, 0x191, 0x5, 0x26, + 0x14, 0x2, 0x18d, 0x18e, 0x7, 0x152, 0x2, 0x2, 0x18e, 0x190, 0x5, + 0x26, 0x14, 0x2, 0x18f, 0x18d, 0x3, 0x2, 0x2, 0x2, 0x190, 0x193, + 0x3, 0x2, 0x2, 0x2, 0x191, 0x18f, 0x3, 0x2, 0x2, 0x2, 0x191, 0x192, + 0x3, 0x2, 0x2, 0x2, 0x192, 0x195, 0x3, 0x2, 0x2, 0x2, 0x193, 0x191, + 0x3, 0x2, 0x2, 0x2, 0x194, 0x196, 0x7, 0x152, 0x2, 0x2, 0x195, 0x194, + 0x3, 0x2, 0x2, 0x2, 0x195, 0x196, 0x3, 0x2, 0x2, 0x2, 0x196, 0x25, + 0x3, 0x2, 0x2, 0x2, 0x197, 0x19a, 0x7, 0x173, 0x2, 0x2, 0x198, 0x199, + 0x7, 0x153, 0x2, 0x2, 0x199, 0x19b, 0x5, 0x58, 0x2d, 0x2, 0x19a, + 0x198, 0x3, 0x2, 0x2, 0x2, 0x19a, 0x19b, 0x3, 0x2, 0x2, 0x2, 0x19b, + 0x27, 0x3, 0x2, 0x2, 0x2, 0x19c, 0x1a1, 0x5, 0x10, 0x9, 0x2, 0x19d, + 0x1a1, 0x5, 0x2c, 0x17, 0x2, 0x19e, 0x1a1, 0x5, 0x18, 0xd, 0x2, 0x19f, + 0x1a1, 0x5, 0x20, 0x11, 0x2, 0x1a0, 0x19c, 0x3, 0x2, 0x2, 0x2, 0x1a0, + 0x19d, 0x3, 0x2, 0x2, 0x2, 0x1a0, 0x19e, 0x3, 0x2, 0x2, 0x2, 0x1a0, + 0x19f, 0x3, 0x2, 0x2, 0x2, 0x1a1, 0x29, 0x3, 0x2, 0x2, 0x2, 0x1a2, + 0x1a3, 0x5, 0x2c, 0x17, 0x2, 0x1a3, 0x1a4, 0x7, 0x151, 0x2, 0x2, + 0x1a4, 0x2b, 0x3, 0x2, 0x2, 0x2, 0x1a5, 0x1a6, 0x7, 0x91, 0x2, 0x2, + 0x1a6, 0x1a7, 0x7, 0x173, 0x2, 0x2, 0x1a7, 0x1ab, 0x7, 0x137, 0x2, + 0x2, 0x1a8, 0x1aa, 0x5, 0x2e, 0x18, 0x2, 0x1a9, 0x1a8, 0x3, 0x2, + 0x2, 0x2, 0x1aa, 0x1ad, 0x3, 0x2, 0x2, 0x2, 0x1ab, 0x1a9, 0x3, 0x2, + 0x2, 0x2, 0x1ab, 0x1ac, 0x3, 0x2, 0x2, 0x2, 0x1ac, 0x1ae, 0x3, 0x2, + 0x2, 0x2, 0x1ad, 0x1ab, 0x3, 0x2, 0x2, 0x2, 0x1ae, 0x1af, 0x7, 0x138, + 0x2, 0x2, 0x1af, 0x2d, 0x3, 0x2, 0x2, 0x2, 0x1b0, 0x1b4, 0x5, 0xd6, + 0x6c, 0x2, 0x1b1, 0x1b4, 0x5, 0xc2, 0x62, 0x2, 0x1b2, 0x1b4, 0x5, + 0x1c, 0xf, 0x2, 0x1b3, 0x1b0, 0x3, 0x2, 0x2, 0x2, 0x1b3, 0x1b1, 0x3, + 0x2, 0x2, 0x2, 0x1b3, 0x1b2, 0x3, 0x2, 0x2, 0x2, 0x1b4, 0x2f, 0x3, + 0x2, 0x2, 0x2, 0x1b5, 0x1b6, 0x9, 0x3, 0x2, 0x2, 0x1b6, 0x1b7, 0x7, + 0x13a, 0x2, 0x2, 0x1b7, 0x1b8, 0x5, 0x7e, 0x40, 0x2, 0x1b8, 0x1b9, + 0x7, 0x13c, 0x2, 0x2, 0x1b9, 0x31, 0x3, 0x2, 0x2, 0x2, 0x1ba, 0x1bb, + 0x5, 0x68, 0x35, 0x2, 0x1bb, 0x1bc, 0x7, 0x151, 0x2, 0x2, 0x1bc, + 0x33, 0x3, 0x2, 0x2, 0x2, 0x1bd, 0x1c7, 0x7, 0x105, 0x2, 0x2, 0x1be, + 0x1c3, 0x5, 0x36, 0x1c, 0x2, 0x1bf, 0x1c0, 0x7, 0x152, 0x2, 0x2, + 0x1c0, 0x1c2, 0x5, 0x36, 0x1c, 0x2, 0x1c1, 0x1bf, 0x3, 0x2, 0x2, + 0x2, 0x1c2, 0x1c5, 0x3, 0x2, 0x2, 0x2, 0x1c3, 0x1c1, 0x3, 0x2, 0x2, + 0x2, 0x1c3, 0x1c4, 0x3, 0x2, 0x2, 0x2, 0x1c4, 0x1c7, 0x3, 0x2, 0x2, + 0x2, 0x1c5, 0x1c3, 0x3, 0x2, 0x2, 0x2, 0x1c6, 0x1bd, 0x3, 0x2, 0x2, + 0x2, 0x1c6, 0x1be, 0x3, 0x2, 0x2, 0x2, 0x1c7, 0x35, 0x3, 0x2, 0x2, + 0x2, 0x1c8, 0x1ca, 0x5, 0x46, 0x24, 0x2, 0x1c9, 0x1c8, 0x3, 0x2, + 0x2, 0x2, 0x1ca, 0x1cd, 0x3, 0x2, 0x2, 0x2, 0x1cb, 0x1c9, 0x3, 0x2, + 0x2, 0x2, 0x1cb, 0x1cc, 0x3, 0x2, 0x2, 0x2, 0x1cc, 0x1ce, 0x3, 0x2, + 0x2, 0x2, 0x1cd, 0x1cb, 0x3, 0x2, 0x2, 0x2, 0x1ce, 0x1d0, 0x5, 0x7e, + 0x40, 0x2, 0x1cf, 0x1d1, 0x7, 0x173, 0x2, 0x2, 0x1d0, 0x1cf, 0x3, + 0x2, 0x2, 0x2, 0x1d0, 0x1d1, 0x3, 0x2, 0x2, 0x2, 0x1d1, 0x1d2, 0x3, + 0x2, 0x2, 0x2, 0x1d2, 0x1d3, 0x5, 0x6c, 0x37, 0x2, 0x1d3, 0x37, 0x3, + 0x2, 0x2, 0x2, 0x1d4, 0x1d5, 0x7, 0x14f, 0x2, 0x2, 0x1d5, 0x1d6, + 0x5, 0x3a, 0x1e, 0x2, 0x1d6, 0x39, 0x3, 0x2, 0x2, 0x2, 0x1d7, 0x1d8, + 0x9, 0x4, 0x2, 0x2, 0x1d8, 0x3b, 0x3, 0x2, 0x2, 0x2, 0x1d9, 0x1de, + 0x5, 0xb8, 0x5d, 0x2, 0x1da, 0x1db, 0x7, 0x152, 0x2, 0x2, 0x1db, + 0x1dd, 0x5, 0xb8, 0x5d, 0x2, 0x1dc, 0x1da, 0x3, 0x2, 0x2, 0x2, 0x1dd, + 0x1e0, 0x3, 0x2, 0x2, 0x2, 0x1de, 0x1dc, 0x3, 0x2, 0x2, 0x2, 0x1de, + 0x1df, 0x3, 0x2, 0x2, 0x2, 0x1df, 0x3d, 0x3, 0x2, 0x2, 0x2, 0x1e0, + 0x1de, 0x3, 0x2, 0x2, 0x2, 0x1e1, 0x1e2, 0x7, 0x133, 0x2, 0x2, 0x1e2, + 0x1e3, 0x5, 0x3c, 0x1f, 0x2, 0x1e3, 0x1e4, 0x7, 0x134, 0x2, 0x2, + 0x1e4, 0x3f, 0x3, 0x2, 0x2, 0x2, 0x1e5, 0x1e6, 0x7, 0x5d, 0x2, 0x2, + 0x1e6, 0x1e9, 0x7, 0x150, 0x2, 0x2, 0x1e7, 0x1e8, 0x7, 0x173, 0x2, + 0x2, 0x1e8, 0x1ea, 0x7, 0x150, 0x2, 0x2, 0x1e9, 0x1e7, 0x3, 0x2, + 0x2, 0x2, 0x1e9, 0x1ea, 0x3, 0x2, 0x2, 0x2, 0x1ea, 0x1eb, 0x3, 0x2, + 0x2, 0x2, 0x1eb, 0x1ed, 0x7, 0x173, 0x2, 0x2, 0x1ec, 0x1ee, 0x5, + 0x3e, 0x20, 0x2, 0x1ed, 0x1ec, 0x3, 0x2, 0x2, 0x2, 0x1ed, 0x1ee, + 0x3, 0x2, 0x2, 0x2, 0x1ee, 0x1f8, 0x3, 0x2, 0x2, 0x2, 0x1ef, 0x1f0, + 0x7, 0x173, 0x2, 0x2, 0x1f0, 0x1f2, 0x7, 0x150, 0x2, 0x2, 0x1f1, + 0x1ef, 0x3, 0x2, 0x2, 0x2, 0x1f1, 0x1f2, 0x3, 0x2, 0x2, 0x2, 0x1f2, + 0x1f3, 0x3, 0x2, 0x2, 0x2, 0x1f3, 0x1f5, 0x7, 0x173, 0x2, 0x2, 0x1f4, + 0x1f6, 0x5, 0x3e, 0x20, 0x2, 0x1f5, 0x1f4, 0x3, 0x2, 0x2, 0x2, 0x1f5, + 0x1f6, 0x3, 0x2, 0x2, 0x2, 0x1f6, 0x1f8, 0x3, 0x2, 0x2, 0x2, 0x1f7, + 0x1e5, 0x3, 0x2, 0x2, 0x2, 0x1f7, 0x1f1, 0x3, 0x2, 0x2, 0x2, 0x1f8, + 0x41, 0x3, 0x2, 0x2, 0x2, 0x1f9, 0x1fa, 0x7, 0x135, 0x2, 0x2, 0x1fa, + 0x1fb, 0x5, 0x40, 0x21, 0x2, 0x1fb, 0x1fc, 0x7, 0x136, 0x2, 0x2, + 0x1fc, 0x43, 0x3, 0x2, 0x2, 0x2, 0x1fd, 0x1fe, 0x7, 0x139, 0x2, 0x2, + 0x1fe, 0x203, 0x5, 0x40, 0x21, 0x2, 0x1ff, 0x200, 0x7, 0x152, 0x2, + 0x2, 0x200, 0x202, 0x5, 0x40, 0x21, 0x2, 0x201, 0x1ff, 0x3, 0x2, + 0x2, 0x2, 0x202, 0x205, 0x3, 0x2, 0x2, 0x2, 0x203, 0x201, 0x3, 0x2, + 0x2, 0x2, 0x203, 0x204, 0x3, 0x2, 0x2, 0x2, 0x204, 0x206, 0x3, 0x2, + 0x2, 0x2, 0x205, 0x203, 0x3, 0x2, 0x2, 0x2, 0x206, 0x207, 0x7, 0x136, + 0x2, 0x2, 0x207, 0x208, 0x7, 0x136, 0x2, 0x2, 0x208, 0x45, 0x3, 0x2, + 0x2, 0x2, 0x209, 0x20c, 0x5, 0x42, 0x22, 0x2, 0x20a, 0x20c, 0x5, + 0x44, 0x23, 0x2, 0x20b, 0x209, 0x3, 0x2, 0x2, 0x2, 0x20b, 0x20a, + 0x3, 0x2, 0x2, 0x2, 0x20c, 0x47, 0x3, 0x2, 0x2, 0x2, 0x20d, 0x211, + 0x7, 0x137, 0x2, 0x2, 0x20e, 0x210, 0x5, 0x4a, 0x26, 0x2, 0x20f, + 0x20e, 0x3, 0x2, 0x2, 0x2, 0x210, 0x213, 0x3, 0x2, 0x2, 0x2, 0x211, + 0x20f, 0x3, 0x2, 0x2, 0x2, 0x211, 0x212, 0x3, 0x2, 0x2, 0x2, 0x212, + 0x214, 0x3, 0x2, 0x2, 0x2, 0x213, 0x211, 0x3, 0x2, 0x2, 0x2, 0x214, + 0x215, 0x7, 0x138, 0x2, 0x2, 0x215, 0x49, 0x3, 0x2, 0x2, 0x2, 0x216, + 0x21a, 0x5, 0x32, 0x1a, 0x2, 0x217, 0x21a, 0x5, 0x54, 0x2b, 0x2, + 0x218, 0x21a, 0x5, 0x1c, 0xf, 0x2, 0x219, 0x216, 0x3, 0x2, 0x2, 0x2, + 0x219, 0x217, 0x3, 0x2, 0x2, 0x2, 0x219, 0x218, 0x3, 0x2, 0x2, 0x2, + 0x21a, 0x4b, 0x3, 0x2, 0x2, 0x2, 0x21b, 0x21e, 0x5, 0x68, 0x35, 0x2, + 0x21c, 0x21e, 0x5, 0x5a, 0x2e, 0x2, 0x21d, 0x21b, 0x3, 0x2, 0x2, + 0x2, 0x21d, 0x21c, 0x3, 0x2, 0x2, 0x2, 0x21e, 0x4d, 0x3, 0x2, 0x2, + 0x2, 0x21f, 0x220, 0x7, 0x1d, 0x2, 0x2, 0x220, 0x221, 0x5, 0x58, + 0x2d, 0x2, 0x221, 0x222, 0x7, 0x14f, 0x2, 0x2, 0x222, 0x226, 0x3, + 0x2, 0x2, 0x2, 0x223, 0x224, 0x7, 0x27, 0x2, 0x2, 0x224, 0x226, 0x7, + 0x14f, 0x2, 0x2, 0x225, 0x21f, 0x3, 0x2, 0x2, 0x2, 0x225, 0x223, + 0x3, 0x2, 0x2, 0x2, 0x226, 0x4f, 0x3, 0x2, 0x2, 0x2, 0x227, 0x229, + 0x5, 0x4e, 0x28, 0x2, 0x228, 0x227, 0x3, 0x2, 0x2, 0x2, 0x229, 0x22a, + 0x3, 0x2, 0x2, 0x2, 0x22a, 0x228, 0x3, 0x2, 0x2, 0x2, 0x22a, 0x22b, + 0x3, 0x2, 0x2, 0x2, 0x22b, 0x22d, 0x3, 0x2, 0x2, 0x2, 0x22c, 0x22e, + 0x5, 0x4a, 0x26, 0x2, 0x22d, 0x22c, 0x3, 0x2, 0x2, 0x2, 0x22e, 0x22f, + 0x3, 0x2, 0x2, 0x2, 0x22f, 0x22d, 0x3, 0x2, 0x2, 0x2, 0x22f, 0x230, + 0x3, 0x2, 0x2, 0x2, 0x230, 0x51, 0x3, 0x2, 0x2, 0x2, 0x231, 0x235, + 0x7, 0x137, 0x2, 0x2, 0x232, 0x234, 0x5, 0x50, 0x29, 0x2, 0x233, + 0x232, 0x3, 0x2, 0x2, 0x2, 0x234, 0x237, 0x3, 0x2, 0x2, 0x2, 0x235, + 0x233, 0x3, 0x2, 0x2, 0x2, 0x235, 0x236, 0x3, 0x2, 0x2, 0x2, 0x236, + 0x238, 0x3, 0x2, 0x2, 0x2, 0x237, 0x235, 0x3, 0x2, 0x2, 0x2, 0x238, + 0x239, 0x7, 0x138, 0x2, 0x2, 0x239, 0x53, 0x3, 0x2, 0x2, 0x2, 0x23a, + 0x296, 0x7, 0x151, 0x2, 0x2, 0x23b, 0x296, 0x5, 0x48, 0x25, 0x2, + 0x23c, 0x23d, 0x5, 0x5a, 0x2e, 0x2, 0x23d, 0x23e, 0x7, 0x151, 0x2, + 0x2, 0x23e, 0x296, 0x3, 0x2, 0x2, 0x2, 0x23f, 0x241, 0x5, 0x42, 0x22, + 0x2, 0x240, 0x23f, 0x3, 0x2, 0x2, 0x2, 0x241, 0x244, 0x3, 0x2, 0x2, + 0x2, 0x242, 0x240, 0x3, 0x2, 0x2, 0x2, 0x242, 0x243, 0x3, 0x2, 0x2, + 0x2, 0x243, 0x245, 0x3, 0x2, 0x2, 0x2, 0x244, 0x242, 0x3, 0x2, 0x2, + 0x2, 0x245, 0x246, 0x7, 0x73, 0x2, 0x2, 0x246, 0x247, 0x7, 0x133, + 0x2, 0x2, 0x247, 0x248, 0x5, 0x5a, 0x2e, 0x2, 0x248, 0x249, 0x7, + 0x134, 0x2, 0x2, 0x249, 0x24b, 0x5, 0x54, 0x2b, 0x2, 0x24a, 0x24c, + 0x5, 0x56, 0x2c, 0x2, 0x24b, 0x24a, 0x3, 0x2, 0x2, 0x2, 0x24b, 0x24c, + 0x3, 0x2, 0x2, 0x2, 0x24c, 0x296, 0x3, 0x2, 0x2, 0x2, 0x24d, 0x24f, + 0x5, 0x42, 0x22, 0x2, 0x24e, 0x24d, 0x3, 0x2, 0x2, 0x2, 0x24f, 0x252, + 0x3, 0x2, 0x2, 0x2, 0x250, 0x24e, 0x3, 0x2, 0x2, 0x2, 0x250, 0x251, + 0x3, 0x2, 0x2, 0x2, 0x251, 0x253, 0x3, 0x2, 0x2, 0x2, 0x252, 0x250, + 0x3, 0x2, 0x2, 0x2, 0x253, 0x254, 0x7, 0xc5, 0x2, 0x2, 0x254, 0x255, + 0x7, 0x133, 0x2, 0x2, 0x255, 0x256, 0x5, 0x5a, 0x2e, 0x2, 0x256, + 0x257, 0x7, 0x134, 0x2, 0x2, 0x257, 0x258, 0x5, 0x52, 0x2a, 0x2, + 0x258, 0x296, 0x3, 0x2, 0x2, 0x2, 0x259, 0x25b, 0x5, 0x42, 0x22, + 0x2, 0x25a, 0x259, 0x3, 0x2, 0x2, 0x2, 0x25b, 0x25e, 0x3, 0x2, 0x2, + 0x2, 0x25c, 0x25a, 0x3, 0x2, 0x2, 0x2, 0x25c, 0x25d, 0x3, 0x2, 0x2, + 0x2, 0x25d, 0x25f, 0x3, 0x2, 0x2, 0x2, 0x25e, 0x25c, 0x3, 0x2, 0x2, + 0x2, 0x25f, 0x260, 0x7, 0x106, 0x2, 0x2, 0x260, 0x261, 0x7, 0x133, + 0x2, 0x2, 0x261, 0x262, 0x5, 0x5a, 0x2e, 0x2, 0x262, 0x263, 0x7, + 0x134, 0x2, 0x2, 0x263, 0x264, 0x5, 0x54, 0x2b, 0x2, 0x264, 0x296, + 0x3, 0x2, 0x2, 0x2, 0x265, 0x267, 0x5, 0x42, 0x22, 0x2, 0x266, 0x265, + 0x3, 0x2, 0x2, 0x2, 0x267, 0x26a, 0x3, 0x2, 0x2, 0x2, 0x268, 0x266, + 0x3, 0x2, 0x2, 0x2, 0x268, 0x269, 0x3, 0x2, 0x2, 0x2, 0x269, 0x26b, + 0x3, 0x2, 0x2, 0x2, 0x26a, 0x268, 0x3, 0x2, 0x2, 0x2, 0x26b, 0x26c, + 0x7, 0x29, 0x2, 0x2, 0x26c, 0x26d, 0x5, 0x54, 0x2b, 0x2, 0x26d, 0x26e, + 0x7, 0x106, 0x2, 0x2, 0x26e, 0x26f, 0x7, 0x133, 0x2, 0x2, 0x26f, + 0x270, 0x5, 0x5a, 0x2e, 0x2, 0x270, 0x271, 0x7, 0x134, 0x2, 0x2, + 0x271, 0x272, 0x7, 0x151, 0x2, 0x2, 0x272, 0x296, 0x3, 0x2, 0x2, + 0x2, 0x273, 0x275, 0x5, 0x42, 0x22, 0x2, 0x274, 0x273, 0x3, 0x2, + 0x2, 0x2, 0x275, 0x278, 0x3, 0x2, 0x2, 0x2, 0x276, 0x274, 0x3, 0x2, + 0x2, 0x2, 0x276, 0x277, 0x3, 0x2, 0x2, 0x2, 0x277, 0x279, 0x3, 0x2, + 0x2, 0x2, 0x278, 0x276, 0x3, 0x2, 0x2, 0x2, 0x279, 0x27a, 0x7, 0x5a, + 0x2, 0x2, 0x27a, 0x27c, 0x7, 0x133, 0x2, 0x2, 0x27b, 0x27d, 0x5, + 0x4c, 0x27, 0x2, 0x27c, 0x27b, 0x3, 0x2, 0x2, 0x2, 0x27c, 0x27d, + 0x3, 0x2, 0x2, 0x2, 0x27d, 0x27e, 0x3, 0x2, 0x2, 0x2, 0x27e, 0x280, + 0x7, 0x151, 0x2, 0x2, 0x27f, 0x281, 0x5, 0x5a, 0x2e, 0x2, 0x280, + 0x27f, 0x3, 0x2, 0x2, 0x2, 0x280, 0x281, 0x3, 0x2, 0x2, 0x2, 0x281, + 0x282, 0x3, 0x2, 0x2, 0x2, 0x282, 0x284, 0x7, 0x151, 0x2, 0x2, 0x283, + 0x285, 0x5, 0x5a, 0x2e, 0x2, 0x284, 0x283, 0x3, 0x2, 0x2, 0x2, 0x284, + 0x285, 0x3, 0x2, 0x2, 0x2, 0x285, 0x286, 0x3, 0x2, 0x2, 0x2, 0x286, + 0x287, 0x7, 0x134, 0x2, 0x2, 0x287, 0x296, 0x5, 0x54, 0x2b, 0x2, + 0x288, 0x289, 0x7, 0x1c, 0x2, 0x2, 0x289, 0x296, 0x7, 0x151, 0x2, + 0x2, 0x28a, 0x28b, 0x7, 0x26, 0x2, 0x2, 0x28b, 0x296, 0x7, 0x151, + 0x2, 0x2, 0x28c, 0x28d, 0x7, 0x28, 0x2, 0x2, 0x28d, 0x296, 0x7, 0x151, + 0x2, 0x2, 0x28e, 0x290, 0x7, 0xae, 0x2, 0x2, 0x28f, 0x291, 0x5, 0x5a, + 0x2e, 0x2, 0x290, 0x28f, 0x3, 0x2, 0x2, 0x2, 0x290, 0x291, 0x3, 0x2, + 0x2, 0x2, 0x291, 0x292, 0x3, 0x2, 0x2, 0x2, 0x292, 0x296, 0x7, 0x151, + 0x2, 0x2, 0x293, 0x296, 0x5, 0xdc, 0x6f, 0x2, 0x294, 0x296, 0x5, + 0xc8, 0x65, 0x2, 0x295, 0x23a, 0x3, 0x2, 0x2, 0x2, 0x295, 0x23b, + 0x3, 0x2, 0x2, 0x2, 0x295, 0x23c, 0x3, 0x2, 0x2, 0x2, 0x295, 0x242, + 0x3, 0x2, 0x2, 0x2, 0x295, 0x250, 0x3, 0x2, 0x2, 0x2, 0x295, 0x25c, + 0x3, 0x2, 0x2, 0x2, 0x295, 0x268, 0x3, 0x2, 0x2, 0x2, 0x295, 0x276, + 0x3, 0x2, 0x2, 0x2, 0x295, 0x288, 0x3, 0x2, 0x2, 0x2, 0x295, 0x28a, + 0x3, 0x2, 0x2, 0x2, 0x295, 0x28c, 0x3, 0x2, 0x2, 0x2, 0x295, 0x28e, + 0x3, 0x2, 0x2, 0x2, 0x295, 0x293, 0x3, 0x2, 0x2, 0x2, 0x295, 0x294, + 0x3, 0x2, 0x2, 0x2, 0x296, 0x55, 0x3, 0x2, 0x2, 0x2, 0x297, 0x298, + 0x7, 0x3f, 0x2, 0x2, 0x298, 0x299, 0x5, 0x54, 0x2b, 0x2, 0x299, 0x57, + 0x3, 0x2, 0x2, 0x2, 0x29a, 0x29b, 0x8, 0x2d, 0x1, 0x2, 0x29b, 0x2b3, + 0x5, 0xb8, 0x5d, 0x2, 0x29c, 0x2b3, 0x5, 0x6, 0x4, 0x2, 0x29d, 0x29e, + 0x7, 0x133, 0x2, 0x2, 0x29e, 0x29f, 0x5, 0x5a, 0x2e, 0x2, 0x29f, + 0x2a0, 0x7, 0x134, 0x2, 0x2, 0x2a0, 0x2b3, 0x3, 0x2, 0x2, 0x2, 0x2a1, + 0x2a2, 0x5, 0xae, 0x58, 0x2, 0x2a2, 0x2a3, 0x5, 0x64, 0x33, 0x2, + 0x2a3, 0x2b3, 0x3, 0x2, 0x2, 0x2, 0x2a4, 0x2a5, 0x7, 0x133, 0x2, + 0x2, 0x2a5, 0x2a9, 0x5, 0x7e, 0x40, 0x2, 0x2a6, 0x2a8, 0x5, 0x76, + 0x3c, 0x2, 0x2a7, 0x2a6, 0x3, 0x2, 0x2, 0x2, 0x2a8, 0x2ab, 0x3, 0x2, + 0x2, 0x2, 0x2a9, 0x2a7, 0x3, 0x2, 0x2, 0x2, 0x2a9, 0x2aa, 0x3, 0x2, + 0x2, 0x2, 0x2aa, 0x2ac, 0x3, 0x2, 0x2, 0x2, 0x2ab, 0x2a9, 0x3, 0x2, + 0x2, 0x2, 0x2ac, 0x2ad, 0x7, 0x134, 0x2, 0x2, 0x2ad, 0x2ae, 0x5, + 0x58, 0x2d, 0x8, 0x2ae, 0x2b3, 0x3, 0x2, 0x2, 0x2, 0x2af, 0x2b0, + 0x5, 0x5e, 0x30, 0x2, 0x2b0, 0x2b1, 0x5, 0x58, 0x2d, 0x6, 0x2b1, + 0x2b3, 0x3, 0x2, 0x2, 0x2, 0x2b2, 0x29a, 0x3, 0x2, 0x2, 0x2, 0x2b2, + 0x29c, 0x3, 0x2, 0x2, 0x2, 0x2b2, 0x29d, 0x3, 0x2, 0x2, 0x2, 0x2b2, + 0x2a1, 0x3, 0x2, 0x2, 0x2, 0x2b2, 0x2a4, 0x3, 0x2, 0x2, 0x2, 0x2b2, + 0x2af, 0x3, 0x2, 0x2, 0x2, 0x2b3, 0x2d0, 0x3, 0x2, 0x2, 0x2, 0x2b4, + 0x2b5, 0xc, 0x5, 0x2, 0x2, 0x2b5, 0x2b6, 0x5, 0x60, 0x31, 0x2, 0x2b6, + 0x2b7, 0x5, 0x58, 0x2d, 0x6, 0x2b7, 0x2cf, 0x3, 0x2, 0x2, 0x2, 0x2b8, + 0x2b9, 0xc, 0xc, 0x2, 0x2, 0x2b9, 0x2ba, 0x7, 0x160, 0x2, 0x2, 0x2ba, + 0x2cf, 0x5, 0x6, 0x4, 0x2, 0x2bb, 0x2bc, 0xc, 0xb, 0x2, 0x2, 0x2bc, + 0x2bd, 0x7, 0x135, 0x2, 0x2, 0x2bd, 0x2be, 0x5, 0x58, 0x2d, 0x2, + 0x2be, 0x2bf, 0x7, 0x136, 0x2, 0x2, 0x2bf, 0x2cf, 0x3, 0x2, 0x2, + 0x2, 0x2c0, 0x2c1, 0xc, 0xa, 0x2, 0x2, 0x2c1, 0x2cf, 0x5, 0x64, 0x33, + 0x2, 0x2c2, 0x2c3, 0xc, 0x7, 0x2, 0x2, 0x2c3, 0x2cf, 0x5, 0x5c, 0x2f, + 0x2, 0x2c4, 0x2c5, 0xc, 0x4, 0x2, 0x2, 0x2c5, 0x2c6, 0x7, 0x14e, + 0x2, 0x2, 0x2c6, 0x2c7, 0x5, 0x5a, 0x2e, 0x2, 0x2c7, 0x2c8, 0x7, + 0x14f, 0x2, 0x2, 0x2c8, 0x2c9, 0x5, 0x5a, 0x2e, 0x2, 0x2c9, 0x2cf, + 0x3, 0x2, 0x2, 0x2, 0x2ca, 0x2cb, 0xc, 0x3, 0x2, 0x2, 0x2cb, 0x2cc, + 0x5, 0x62, 0x32, 0x2, 0x2cc, 0x2cd, 0x5, 0x5a, 0x2e, 0x2, 0x2cd, + 0x2cf, 0x3, 0x2, 0x2, 0x2, 0x2ce, 0x2b4, 0x3, 0x2, 0x2, 0x2, 0x2ce, + 0x2b8, 0x3, 0x2, 0x2, 0x2, 0x2ce, 0x2bb, 0x3, 0x2, 0x2, 0x2, 0x2ce, + 0x2c0, 0x3, 0x2, 0x2, 0x2, 0x2ce, 0x2c2, 0x3, 0x2, 0x2, 0x2, 0x2ce, + 0x2c4, 0x3, 0x2, 0x2, 0x2, 0x2ce, 0x2ca, 0x3, 0x2, 0x2, 0x2, 0x2cf, + 0x2d2, 0x3, 0x2, 0x2, 0x2, 0x2d0, 0x2ce, 0x3, 0x2, 0x2, 0x2, 0x2d0, + 0x2d1, 0x3, 0x2, 0x2, 0x2, 0x2d1, 0x59, 0x3, 0x2, 0x2, 0x2, 0x2d2, + 0x2d0, 0x3, 0x2, 0x2, 0x2, 0x2d3, 0x2d4, 0x8, 0x2e, 0x1, 0x2, 0x2d4, + 0x2d5, 0x5, 0x58, 0x2d, 0x2, 0x2d5, 0x2db, 0x3, 0x2, 0x2, 0x2, 0x2d6, + 0x2d7, 0xc, 0x3, 0x2, 0x2, 0x2d7, 0x2d8, 0x7, 0x152, 0x2, 0x2, 0x2d8, + 0x2da, 0x5, 0x58, 0x2d, 0x2, 0x2d9, 0x2d6, 0x3, 0x2, 0x2, 0x2, 0x2da, + 0x2dd, 0x3, 0x2, 0x2, 0x2, 0x2db, 0x2d9, 0x3, 0x2, 0x2, 0x2, 0x2db, + 0x2dc, 0x3, 0x2, 0x2, 0x2, 0x2dc, 0x5b, 0x3, 0x2, 0x2, 0x2, 0x2dd, + 0x2db, 0x3, 0x2, 0x2, 0x2, 0x2de, 0x2df, 0x9, 0x5, 0x2, 0x2, 0x2df, + 0x5d, 0x3, 0x2, 0x2, 0x2, 0x2e0, 0x2e1, 0x9, 0x6, 0x2, 0x2, 0x2e1, + 0x5f, 0x3, 0x2, 0x2, 0x2, 0x2e2, 0x2e3, 0x9, 0x7, 0x2, 0x2, 0x2e3, + 0x61, 0x3, 0x2, 0x2, 0x2, 0x2e4, 0x2e5, 0x9, 0x8, 0x2, 0x2, 0x2e5, + 0x63, 0x3, 0x2, 0x2, 0x2, 0x2e6, 0x2e8, 0x7, 0x133, 0x2, 0x2, 0x2e7, + 0x2e9, 0x5, 0x66, 0x34, 0x2, 0x2e8, 0x2e7, 0x3, 0x2, 0x2, 0x2, 0x2e8, + 0x2e9, 0x3, 0x2, 0x2, 0x2, 0x2e9, 0x2ea, 0x3, 0x2, 0x2, 0x2, 0x2ea, + 0x2eb, 0x7, 0x134, 0x2, 0x2, 0x2eb, 0x65, 0x3, 0x2, 0x2, 0x2, 0x2ec, + 0x2f1, 0x5, 0x58, 0x2d, 0x2, 0x2ed, 0x2ee, 0x7, 0x152, 0x2, 0x2, + 0x2ee, 0x2f0, 0x5, 0x58, 0x2d, 0x2, 0x2ef, 0x2ed, 0x3, 0x2, 0x2, + 0x2, 0x2f0, 0x2f3, 0x3, 0x2, 0x2, 0x2, 0x2f1, 0x2ef, 0x3, 0x2, 0x2, + 0x2, 0x2f1, 0x2f2, 0x3, 0x2, 0x2, 0x2, 0x2f2, 0x67, 0x3, 0x2, 0x2, + 0x2, 0x2f3, 0x2f1, 0x3, 0x2, 0x2, 0x2, 0x2f4, 0x2f6, 0x5, 0x46, 0x24, + 0x2, 0x2f5, 0x2f4, 0x3, 0x2, 0x2, 0x2, 0x2f6, 0x2f9, 0x3, 0x2, 0x2, + 0x2, 0x2f7, 0x2f5, 0x3, 0x2, 0x2, 0x2, 0x2f7, 0x2f8, 0x3, 0x2, 0x2, + 0x2, 0x2f8, 0x2fa, 0x3, 0x2, 0x2, 0x2, 0x2f9, 0x2f7, 0x3, 0x2, 0x2, + 0x2, 0x2fa, 0x2fb, 0x5, 0x7e, 0x40, 0x2, 0x2fb, 0x2fc, 0x5, 0x6a, + 0x36, 0x2, 0x2fc, 0x69, 0x3, 0x2, 0x2, 0x2, 0x2fd, 0x302, 0x5, 0x6e, + 0x38, 0x2, 0x2fe, 0x2ff, 0x7, 0x152, 0x2, 0x2, 0x2ff, 0x301, 0x5, + 0x6e, 0x38, 0x2, 0x300, 0x2fe, 0x3, 0x2, 0x2, 0x2, 0x301, 0x304, + 0x3, 0x2, 0x2, 0x2, 0x302, 0x300, 0x3, 0x2, 0x2, 0x2, 0x302, 0x303, + 0x3, 0x2, 0x2, 0x2, 0x303, 0x6b, 0x3, 0x2, 0x2, 0x2, 0x304, 0x302, + 0x3, 0x2, 0x2, 0x2, 0x305, 0x307, 0x5, 0x76, 0x3c, 0x2, 0x306, 0x305, + 0x3, 0x2, 0x2, 0x2, 0x307, 0x30a, 0x3, 0x2, 0x2, 0x2, 0x308, 0x306, + 0x3, 0x2, 0x2, 0x2, 0x308, 0x309, 0x3, 0x2, 0x2, 0x2, 0x309, 0x30c, + 0x3, 0x2, 0x2, 0x2, 0x30a, 0x308, 0x3, 0x2, 0x2, 0x2, 0x30b, 0x30d, + 0x5, 0x38, 0x1d, 0x2, 0x30c, 0x30b, 0x3, 0x2, 0x2, 0x2, 0x30c, 0x30d, + 0x3, 0x2, 0x2, 0x2, 0x30d, 0x30f, 0x3, 0x2, 0x2, 0x2, 0x30e, 0x310, + 0x5, 0x78, 0x3d, 0x2, 0x30f, 0x30e, 0x3, 0x2, 0x2, 0x2, 0x30f, 0x310, + 0x3, 0x2, 0x2, 0x2, 0x310, 0x312, 0x3, 0x2, 0x2, 0x2, 0x311, 0x313, + 0x5, 0xb4, 0x5b, 0x2, 0x312, 0x311, 0x3, 0x2, 0x2, 0x2, 0x312, 0x313, + 0x3, 0x2, 0x2, 0x2, 0x313, 0x315, 0x3, 0x2, 0x2, 0x2, 0x314, 0x316, + 0x5, 0x70, 0x39, 0x2, 0x315, 0x314, 0x3, 0x2, 0x2, 0x2, 0x315, 0x316, + 0x3, 0x2, 0x2, 0x2, 0x316, 0x6d, 0x3, 0x2, 0x2, 0x2, 0x317, 0x318, + 0x7, 0x173, 0x2, 0x2, 0x318, 0x319, 0x5, 0x6c, 0x37, 0x2, 0x319, + 0x6f, 0x3, 0x2, 0x2, 0x2, 0x31a, 0x31b, 0x7, 0x153, 0x2, 0x2, 0x31b, + 0x31e, 0x5, 0x72, 0x3a, 0x2, 0x31c, 0x31e, 0x5, 0xec, 0x77, 0x2, + 0x31d, 0x31a, 0x3, 0x2, 0x2, 0x2, 0x31d, 0x31c, 0x3, 0x2, 0x2, 0x2, + 0x31e, 0x71, 0x3, 0x2, 0x2, 0x2, 0x31f, 0x320, 0x7, 0x137, 0x2, 0x2, + 0x320, 0x321, 0x5, 0x74, 0x3b, 0x2, 0x321, 0x322, 0x7, 0x138, 0x2, + 0x2, 0x322, 0x325, 0x3, 0x2, 0x2, 0x2, 0x323, 0x325, 0x5, 0x58, 0x2d, + 0x2, 0x324, 0x31f, 0x3, 0x2, 0x2, 0x2, 0x324, 0x323, 0x3, 0x2, 0x2, + 0x2, 0x325, 0x73, 0x3, 0x2, 0x2, 0x2, 0x326, 0x32b, 0x5, 0x72, 0x3a, + 0x2, 0x327, 0x328, 0x7, 0x152, 0x2, 0x2, 0x328, 0x32a, 0x5, 0x72, + 0x3a, 0x2, 0x329, 0x327, 0x3, 0x2, 0x2, 0x2, 0x32a, 0x32d, 0x3, 0x2, + 0x2, 0x2, 0x32b, 0x329, 0x3, 0x2, 0x2, 0x2, 0x32b, 0x32c, 0x3, 0x2, + 0x2, 0x2, 0x32c, 0x32f, 0x3, 0x2, 0x2, 0x2, 0x32d, 0x32b, 0x3, 0x2, + 0x2, 0x2, 0x32e, 0x330, 0x7, 0x152, 0x2, 0x2, 0x32f, 0x32e, 0x3, + 0x2, 0x2, 0x2, 0x32f, 0x330, 0x3, 0x2, 0x2, 0x2, 0x330, 0x75, 0x3, + 0x2, 0x2, 0x2, 0x331, 0x333, 0x7, 0x135, 0x2, 0x2, 0x332, 0x334, + 0x5, 0x58, 0x2d, 0x2, 0x333, 0x332, 0x3, 0x2, 0x2, 0x2, 0x333, 0x334, + 0x3, 0x2, 0x2, 0x2, 0x334, 0x335, 0x3, 0x2, 0x2, 0x2, 0x335, 0x336, + 0x7, 0x136, 0x2, 0x2, 0x336, 0x77, 0x3, 0x2, 0x2, 0x2, 0x337, 0x338, + 0x7, 0x14f, 0x2, 0x2, 0x338, 0x339, 0x7, 0x9f, 0x2, 0x2, 0x339, 0x33a, + 0x7, 0x133, 0x2, 0x2, 0x33a, 0x33d, 0x7, 0x173, 0x2, 0x2, 0x33b, + 0x33c, 0x7, 0x160, 0x2, 0x2, 0x33c, 0x33e, 0x7, 0x173, 0x2, 0x2, + 0x33d, 0x33b, 0x3, 0x2, 0x2, 0x2, 0x33d, 0x33e, 0x3, 0x2, 0x2, 0x2, + 0x33e, 0x33f, 0x3, 0x2, 0x2, 0x2, 0x33f, 0x340, 0x7, 0x134, 0x2, + 0x2, 0x340, 0x79, 0x3, 0x2, 0x2, 0x2, 0x341, 0x343, 0x5, 0x7c, 0x3f, + 0x2, 0x342, 0x341, 0x3, 0x2, 0x2, 0x2, 0x343, 0x346, 0x3, 0x2, 0x2, + 0x2, 0x344, 0x345, 0x3, 0x2, 0x2, 0x2, 0x344, 0x342, 0x3, 0x2, 0x2, + 0x2, 0x345, 0x7b, 0x3, 0x2, 0x2, 0x2, 0x346, 0x344, 0x3, 0x2, 0x2, + 0x2, 0x347, 0x348, 0x9, 0x9, 0x2, 0x2, 0x348, 0x7d, 0x3, 0x2, 0x2, + 0x2, 0x349, 0x34e, 0x5, 0x7a, 0x3e, 0x2, 0x34a, 0x34f, 0x5, 0x80, + 0x41, 0x2, 0x34b, 0x34f, 0x5, 0xc0, 0x61, 0x2, 0x34c, 0x34f, 0x5, + 0xca, 0x66, 0x2, 0x34d, 0x34f, 0x7, 0x105, 0x2, 0x2, 0x34e, 0x34a, + 0x3, 0x2, 0x2, 0x2, 0x34e, 0x34b, 0x3, 0x2, 0x2, 0x2, 0x34e, 0x34c, + 0x3, 0x2, 0x2, 0x2, 0x34e, 0x34d, 0x3, 0x2, 0x2, 0x2, 0x34f, 0x7f, + 0x3, 0x2, 0x2, 0x2, 0x350, 0x363, 0x5, 0x88, 0x45, 0x2, 0x351, 0x363, + 0x5, 0x8c, 0x47, 0x2, 0x352, 0x363, 0x5, 0x8e, 0x48, 0x2, 0x353, + 0x363, 0x5, 0xb0, 0x59, 0x2, 0x354, 0x363, 0x5, 0xb2, 0x5a, 0x2, + 0x355, 0x363, 0x5, 0x92, 0x4a, 0x2, 0x356, 0x363, 0x5, 0x94, 0x4b, + 0x2, 0x357, 0x363, 0x5, 0x96, 0x4c, 0x2, 0x358, 0x363, 0x5, 0x9a, + 0x4e, 0x2, 0x359, 0x363, 0x5, 0xa0, 0x51, 0x2, 0x35a, 0x363, 0x5, + 0xa2, 0x52, 0x2, 0x35b, 0x363, 0x5, 0xa6, 0x54, 0x2, 0x35c, 0x363, + 0x5, 0xa8, 0x55, 0x2, 0x35d, 0x363, 0x5, 0xaa, 0x56, 0x2, 0x35e, + 0x363, 0x5, 0x30, 0x19, 0x2, 0x35f, 0x363, 0x5, 0x84, 0x43, 0x2, + 0x360, 0x363, 0x5, 0x82, 0x42, 0x2, 0x361, 0x363, 0x5, 0x86, 0x44, + 0x2, 0x362, 0x350, 0x3, 0x2, 0x2, 0x2, 0x362, 0x351, 0x3, 0x2, 0x2, + 0x2, 0x362, 0x352, 0x3, 0x2, 0x2, 0x2, 0x362, 0x353, 0x3, 0x2, 0x2, + 0x2, 0x362, 0x354, 0x3, 0x2, 0x2, 0x2, 0x362, 0x355, 0x3, 0x2, 0x2, + 0x2, 0x362, 0x356, 0x3, 0x2, 0x2, 0x2, 0x362, 0x357, 0x3, 0x2, 0x2, + 0x2, 0x362, 0x358, 0x3, 0x2, 0x2, 0x2, 0x362, 0x359, 0x3, 0x2, 0x2, + 0x2, 0x362, 0x35a, 0x3, 0x2, 0x2, 0x2, 0x362, 0x35b, 0x3, 0x2, 0x2, + 0x2, 0x362, 0x35c, 0x3, 0x2, 0x2, 0x2, 0x362, 0x35d, 0x3, 0x2, 0x2, + 0x2, 0x362, 0x35e, 0x3, 0x2, 0x2, 0x2, 0x362, 0x35f, 0x3, 0x2, 0x2, + 0x2, 0x362, 0x360, 0x3, 0x2, 0x2, 0x2, 0x362, 0x361, 0x3, 0x2, 0x2, + 0x2, 0x363, 0x81, 0x3, 0x2, 0x2, 0x2, 0x364, 0x365, 0x9, 0xa, 0x2, + 0x2, 0x365, 0x83, 0x3, 0x2, 0x2, 0x2, 0x366, 0x367, 0x7, 0xac, 0x2, + 0x2, 0x367, 0x85, 0x3, 0x2, 0x2, 0x2, 0x368, 0x369, 0x9, 0xb, 0x2, + 0x2, 0x369, 0x87, 0x3, 0x2, 0x2, 0x2, 0x36a, 0x36b, 0x5, 0x8a, 0x46, + 0x2, 0x36b, 0x36c, 0x7, 0x13a, 0x2, 0x2, 0x36c, 0x36d, 0x5, 0xae, + 0x58, 0x2, 0x36d, 0x36e, 0x7, 0x13c, 0x2, 0x2, 0x36e, 0x89, 0x3, + 0x2, 0x2, 0x2, 0x36f, 0x370, 0x9, 0xc, 0x2, 0x2, 0x370, 0x8b, 0x3, + 0x2, 0x2, 0x2, 0x371, 0x372, 0x9, 0xd, 0x2, 0x2, 0x372, 0x8d, 0x3, + 0x2, 0x2, 0x2, 0x373, 0x374, 0x5, 0x90, 0x49, 0x2, 0x374, 0x375, + 0x7, 0x13a, 0x2, 0x2, 0x375, 0x376, 0x5, 0xc0, 0x61, 0x2, 0x376, + 0x377, 0x7, 0x152, 0x2, 0x2, 0x377, 0x378, 0x7, 0x174, 0x2, 0x2, + 0x378, 0x379, 0x7, 0x13c, 0x2, 0x2, 0x379, 0x8f, 0x3, 0x2, 0x2, 0x2, + 0x37a, 0x37b, 0x9, 0xe, 0x2, 0x2, 0x37b, 0x91, 0x3, 0x2, 0x2, 0x2, + 0x37c, 0x37d, 0x9, 0xf, 0x2, 0x2, 0x37d, 0x93, 0x3, 0x2, 0x2, 0x2, + 0x37e, 0x37f, 0x9, 0x10, 0x2, 0x2, 0x37f, 0x95, 0x3, 0x2, 0x2, 0x2, + 0x380, 0x381, 0x5, 0x98, 0x4d, 0x2, 0x381, 0x382, 0x7, 0x13a, 0x2, + 0x2, 0x382, 0x383, 0x5, 0x7e, 0x40, 0x2, 0x383, 0x384, 0x7, 0x13c, + 0x2, 0x2, 0x384, 0x97, 0x3, 0x2, 0x2, 0x2, 0x385, 0x386, 0x9, 0x11, + 0x2, 0x2, 0x386, 0x99, 0x3, 0x2, 0x2, 0x2, 0x387, 0x388, 0x5, 0x9c, + 0x4f, 0x2, 0x388, 0x389, 0x7, 0x13a, 0x2, 0x2, 0x389, 0x38a, 0x5, + 0x7e, 0x40, 0x2, 0x38a, 0x38b, 0x7, 0x13c, 0x2, 0x2, 0x38b, 0x9b, + 0x3, 0x2, 0x2, 0x2, 0x38c, 0x38d, 0x9, 0x12, 0x2, 0x2, 0x38d, 0x9d, + 0x3, 0x2, 0x2, 0x2, 0x38e, 0x38f, 0x9, 0x13, 0x2, 0x2, 0x38f, 0x9f, + 0x3, 0x2, 0x2, 0x2, 0x390, 0x391, 0x5, 0x9e, 0x50, 0x2, 0x391, 0xa1, + 0x3, 0x2, 0x2, 0x2, 0x392, 0x393, 0x5, 0x9e, 0x50, 0x2, 0x393, 0x394, + 0x7, 0x13a, 0x2, 0x2, 0x394, 0x395, 0x5, 0xac, 0x57, 0x2, 0x395, + 0x396, 0x7, 0x13c, 0x2, 0x2, 0x396, 0xa3, 0x3, 0x2, 0x2, 0x2, 0x397, + 0x398, 0x9, 0x14, 0x2, 0x2, 0x398, 0xa5, 0x3, 0x2, 0x2, 0x2, 0x399, + 0x39a, 0x5, 0xa4, 0x53, 0x2, 0x39a, 0x39b, 0x7, 0x13a, 0x2, 0x2, + 0x39b, 0x39e, 0x5, 0xac, 0x57, 0x2, 0x39c, 0x39d, 0x7, 0x152, 0x2, + 0x2, 0x39d, 0x39f, 0x7, 0x174, 0x2, 0x2, 0x39e, 0x39c, 0x3, 0x2, + 0x2, 0x2, 0x39e, 0x39f, 0x3, 0x2, 0x2, 0x2, 0x39f, 0x3a0, 0x3, 0x2, + 0x2, 0x2, 0x3a0, 0x3a1, 0x7, 0x13c, 0x2, 0x2, 0x3a1, 0xa7, 0x3, 0x2, + 0x2, 0x2, 0x3a2, 0x3a3, 0x9, 0x15, 0x2, 0x2, 0x3a3, 0xa9, 0x3, 0x2, + 0x2, 0x2, 0x3a4, 0x3a5, 0x7, 0x103, 0x2, 0x2, 0x3a5, 0x3a6, 0x7, + 0x13a, 0x2, 0x2, 0x3a6, 0x3a7, 0x5, 0x94, 0x4b, 0x2, 0x3a7, 0x3a8, + 0x7, 0x152, 0x2, 0x2, 0x3a8, 0x3a9, 0x7, 0x174, 0x2, 0x2, 0x3a9, + 0x3aa, 0x7, 0x13c, 0x2, 0x2, 0x3aa, 0xab, 0x3, 0x2, 0x2, 0x2, 0x3ab, + 0x3ae, 0x5, 0x94, 0x4b, 0x2, 0x3ac, 0x3ae, 0x5, 0xa8, 0x55, 0x2, + 0x3ad, 0x3ab, 0x3, 0x2, 0x2, 0x2, 0x3ad, 0x3ac, 0x3, 0x2, 0x2, 0x2, + 0x3ae, 0xad, 0x3, 0x2, 0x2, 0x2, 0x3af, 0x3b3, 0x5, 0x94, 0x4b, 0x2, + 0x3b0, 0x3b3, 0x5, 0xa8, 0x55, 0x2, 0x3b1, 0x3b3, 0x5, 0xb0, 0x59, + 0x2, 0x3b2, 0x3af, 0x3, 0x2, 0x2, 0x2, 0x3b2, 0x3b0, 0x3, 0x2, 0x2, + 0x2, 0x3b2, 0x3b1, 0x3, 0x2, 0x2, 0x2, 0x3b3, 0xaf, 0x3, 0x2, 0x2, + 0x2, 0x3b4, 0x3b5, 0x9, 0x16, 0x2, 0x2, 0x3b5, 0xb1, 0x3, 0x2, 0x2, + 0x2, 0x3b6, 0x3b7, 0x7, 0x97, 0x2, 0x2, 0x3b7, 0x3b8, 0x7, 0x13a, + 0x2, 0x2, 0x3b8, 0x3b9, 0x5, 0x94, 0x4b, 0x2, 0x3b9, 0x3ba, 0x7, + 0x152, 0x2, 0x2, 0x3ba, 0x3bb, 0x7, 0x174, 0x2, 0x2, 0x3bb, 0x3bc, + 0x7, 0x152, 0x2, 0x2, 0x3bc, 0x3bd, 0x7, 0x174, 0x2, 0x2, 0x3bd, + 0x3be, 0x7, 0x13c, 0x2, 0x2, 0x3be, 0xb3, 0x3, 0x2, 0x2, 0x2, 0x3bf, + 0x3c0, 0x7, 0x14f, 0x2, 0x2, 0x3c0, 0x3c1, 0x7, 0xad, 0x2, 0x2, 0x3c1, + 0x3c2, 0x7, 0x133, 0x2, 0x2, 0x3c2, 0x3c3, 0x7, 0x173, 0x2, 0x2, + 0x3c3, 0x3c4, 0x7, 0x134, 0x2, 0x2, 0x3c4, 0xb5, 0x3, 0x2, 0x2, 0x2, + 0x3c5, 0x3c6, 0x7, 0x173, 0x2, 0x2, 0x3c6, 0x3c7, 0x7, 0x153, 0x2, + 0x2, 0x3c7, 0x3c8, 0x5, 0x58, 0x2d, 0x2, 0x3c8, 0x3c9, 0x7, 0x151, + 0x2, 0x2, 0x3c9, 0xb7, 0x3, 0x2, 0x2, 0x2, 0x3ca, 0x3d4, 0x7, 0x161, + 0x2, 0x2, 0x3cb, 0x3d4, 0x7, 0x162, 0x2, 0x2, 0x3cc, 0x3d4, 0x7, + 0x175, 0x2, 0x2, 0x3cd, 0x3d4, 0x7, 0x174, 0x2, 0x2, 0x3ce, 0x3d0, + 0x7, 0x176, 0x2, 0x2, 0x3cf, 0x3ce, 0x3, 0x2, 0x2, 0x2, 0x3d0, 0x3d1, + 0x3, 0x2, 0x2, 0x2, 0x3d1, 0x3cf, 0x3, 0x2, 0x2, 0x2, 0x3d1, 0x3d2, + 0x3, 0x2, 0x2, 0x2, 0x3d2, 0x3d4, 0x3, 0x2, 0x2, 0x2, 0x3d3, 0x3ca, + 0x3, 0x2, 0x2, 0x2, 0x3d3, 0x3cb, 0x3, 0x2, 0x2, 0x2, 0x3d3, 0x3cc, + 0x3, 0x2, 0x2, 0x2, 0x3d3, 0x3cd, 0x3, 0x2, 0x2, 0x2, 0x3d3, 0x3cf, + 0x3, 0x2, 0x2, 0x2, 0x3d4, 0xb9, 0x3, 0x2, 0x2, 0x2, 0x3d5, 0x3d9, + 0x5, 0x7e, 0x40, 0x2, 0x3d6, 0x3d7, 0x5, 0xc0, 0x61, 0x2, 0x3d7, + 0x3d8, 0x7, 0x150, 0x2, 0x2, 0x3d8, 0x3da, 0x3, 0x2, 0x2, 0x2, 0x3d9, + 0x3d6, 0x3, 0x2, 0x2, 0x2, 0x3d9, 0x3da, 0x3, 0x2, 0x2, 0x2, 0x3da, + 0x3db, 0x3, 0x2, 0x2, 0x2, 0x3db, 0x3dd, 0x7, 0x173, 0x2, 0x2, 0x3dc, + 0x3de, 0x5, 0xcc, 0x67, 0x2, 0x3dd, 0x3dc, 0x3, 0x2, 0x2, 0x2, 0x3dd, + 0x3de, 0x3, 0x2, 0x2, 0x2, 0x3de, 0x3df, 0x3, 0x2, 0x2, 0x2, 0x3df, + 0x3e1, 0x7, 0x133, 0x2, 0x2, 0x3e0, 0x3e2, 0x5, 0x34, 0x1b, 0x2, + 0x3e1, 0x3e0, 0x3, 0x2, 0x2, 0x2, 0x3e1, 0x3e2, 0x3, 0x2, 0x2, 0x2, + 0x3e2, 0x3e3, 0x3, 0x2, 0x2, 0x2, 0x3e3, 0x3e5, 0x7, 0x134, 0x2, + 0x2, 0x3e4, 0x3e6, 0x7, 0x9d, 0x2, 0x2, 0x3e5, 0x3e4, 0x3, 0x2, 0x2, + 0x2, 0x3e5, 0x3e6, 0x3, 0x2, 0x2, 0x2, 0x3e6, 0x3e8, 0x3, 0x2, 0x2, + 0x2, 0x3e7, 0x3e9, 0x5, 0x38, 0x1d, 0x2, 0x3e8, 0x3e7, 0x3, 0x2, + 0x2, 0x2, 0x3e8, 0x3e9, 0x3, 0x2, 0x2, 0x2, 0x3e9, 0xbb, 0x3, 0x2, + 0x2, 0x2, 0x3ea, 0x3eb, 0x5, 0xba, 0x5e, 0x2, 0x3eb, 0x3ec, 0x5, + 0x48, 0x25, 0x2, 0x3ec, 0xbd, 0x3, 0x2, 0x2, 0x2, 0x3ed, 0x3ee, 0x5, + 0xba, 0x5e, 0x2, 0x3ee, 0x3ef, 0x7, 0x151, 0x2, 0x2, 0x3ef, 0xbf, + 0x3, 0x2, 0x2, 0x2, 0x3f0, 0x3f3, 0x5, 0x6, 0x4, 0x2, 0x3f1, 0x3f3, + 0x5, 0x28, 0x15, 0x2, 0x3f2, 0x3f0, 0x3, 0x2, 0x2, 0x2, 0x3f2, 0x3f1, + 0x3, 0x2, 0x2, 0x2, 0x3f3, 0xc1, 0x3, 0x2, 0x2, 0x2, 0x3f4, 0x3f5, + 0x7, 0x163, 0x2, 0x2, 0x3f5, 0x3f7, 0x7, 0x173, 0x2, 0x2, 0x3f6, + 0x3f8, 0x5, 0xd0, 0x69, 0x2, 0x3f7, 0x3f6, 0x3, 0x2, 0x2, 0x2, 0x3f7, + 0x3f8, 0x3, 0x2, 0x2, 0x2, 0x3f8, 0x3f9, 0x3, 0x2, 0x2, 0x2, 0x3f9, + 0x3fa, 0x7, 0x151, 0x2, 0x2, 0x3fa, 0xc3, 0x3, 0x2, 0x2, 0x2, 0x3fb, + 0x3fc, 0x7, 0x165, 0x2, 0x2, 0x3fc, 0x3fd, 0x5, 0x7e, 0x40, 0x2, + 0x3fd, 0x3fe, 0x7, 0x173, 0x2, 0x2, 0x3fe, 0x3ff, 0x7, 0x151, 0x2, + 0x2, 0x3ff, 0xc5, 0x3, 0x2, 0x2, 0x2, 0x400, 0x401, 0x7, 0x164, 0x2, + 0x2, 0x401, 0x402, 0x7, 0x173, 0x2, 0x2, 0x402, 0x403, 0x7, 0x153, + 0x2, 0x2, 0x403, 0x404, 0x5, 0x7e, 0x40, 0x2, 0x404, 0x405, 0x7, + 0x151, 0x2, 0x2, 0x405, 0xc7, 0x3, 0x2, 0x2, 0x2, 0x406, 0x409, 0x5, + 0xc6, 0x64, 0x2, 0x407, 0x409, 0x5, 0xc4, 0x63, 0x2, 0x408, 0x406, + 0x3, 0x2, 0x2, 0x2, 0x408, 0x407, 0x3, 0x2, 0x2, 0x2, 0x409, 0xc9, + 0x3, 0x2, 0x2, 0x2, 0x40a, 0x40b, 0x7, 0x167, 0x2, 0x2, 0x40b, 0x40e, + 0x7, 0x133, 0x2, 0x2, 0x40c, 0x40f, 0x5, 0x5a, 0x2e, 0x2, 0x40d, + 0x40f, 0x5, 0x7e, 0x40, 0x2, 0x40e, 0x40c, 0x3, 0x2, 0x2, 0x2, 0x40e, + 0x40d, 0x3, 0x2, 0x2, 0x2, 0x40f, 0x410, 0x3, 0x2, 0x2, 0x2, 0x410, + 0x413, 0x7, 0x134, 0x2, 0x2, 0x411, 0x412, 0x7, 0x150, 0x2, 0x2, + 0x412, 0x414, 0x5, 0x6, 0x4, 0x2, 0x413, 0x411, 0x3, 0x2, 0x2, 0x2, + 0x413, 0x414, 0x3, 0x2, 0x2, 0x2, 0x414, 0xcb, 0x3, 0x2, 0x2, 0x2, + 0x415, 0x416, 0x7, 0x13a, 0x2, 0x2, 0x416, 0x41b, 0x5, 0xce, 0x68, + 0x2, 0x417, 0x418, 0x7, 0x152, 0x2, 0x2, 0x418, 0x41a, 0x5, 0xce, + 0x68, 0x2, 0x419, 0x417, 0x3, 0x2, 0x2, 0x2, 0x41a, 0x41d, 0x3, 0x2, + 0x2, 0x2, 0x41b, 0x419, 0x3, 0x2, 0x2, 0x2, 0x41b, 0x41c, 0x3, 0x2, + 0x2, 0x2, 0x41c, 0x41e, 0x3, 0x2, 0x2, 0x2, 0x41d, 0x41b, 0x3, 0x2, + 0x2, 0x2, 0x41e, 0x41f, 0x7, 0x13c, 0x2, 0x2, 0x41f, 0xcd, 0x3, 0x2, + 0x2, 0x2, 0x420, 0x422, 0x7, 0x173, 0x2, 0x2, 0x421, 0x423, 0x5, + 0xd0, 0x69, 0x2, 0x422, 0x421, 0x3, 0x2, 0x2, 0x2, 0x422, 0x423, + 0x3, 0x2, 0x2, 0x2, 0x423, 0xcf, 0x3, 0x2, 0x2, 0x2, 0x424, 0x425, + 0x7, 0x14f, 0x2, 0x2, 0x425, 0x426, 0x5, 0xc0, 0x61, 0x2, 0x426, + 0xd1, 0x3, 0x2, 0x2, 0x2, 0x427, 0x428, 0x7, 0x166, 0x2, 0x2, 0x428, + 0xd3, 0x3, 0x2, 0x2, 0x2, 0x429, 0x42a, 0x5, 0xbe, 0x60, 0x2, 0x42a, + 0xd5, 0x3, 0x2, 0x2, 0x2, 0x42b, 0x42d, 0x5, 0x46, 0x24, 0x2, 0x42c, + 0x42b, 0x3, 0x2, 0x2, 0x2, 0x42d, 0x430, 0x3, 0x2, 0x2, 0x2, 0x42e, + 0x42c, 0x3, 0x2, 0x2, 0x2, 0x42e, 0x42f, 0x3, 0x2, 0x2, 0x2, 0x42f, + 0x431, 0x3, 0x2, 0x2, 0x2, 0x430, 0x42e, 0x3, 0x2, 0x2, 0x2, 0x431, + 0x432, 0x5, 0xd4, 0x6b, 0x2, 0x432, 0xd7, 0x3, 0x2, 0x2, 0x2, 0x433, + 0x434, 0x5, 0xbc, 0x5f, 0x2, 0x434, 0xd9, 0x3, 0x2, 0x2, 0x2, 0x435, + 0x437, 0x5, 0x46, 0x24, 0x2, 0x436, 0x435, 0x3, 0x2, 0x2, 0x2, 0x437, + 0x43a, 0x3, 0x2, 0x2, 0x2, 0x438, 0x436, 0x3, 0x2, 0x2, 0x2, 0x438, + 0x439, 0x3, 0x2, 0x2, 0x2, 0x439, 0x43b, 0x3, 0x2, 0x2, 0x2, 0x43a, + 0x438, 0x3, 0x2, 0x2, 0x2, 0x43b, 0x43c, 0x5, 0xd8, 0x6d, 0x2, 0x43c, + 0xdb, 0x3, 0x2, 0x2, 0x2, 0x43d, 0x43e, 0x7, 0x16c, 0x2, 0x2, 0x43e, + 0x43f, 0x7, 0x133, 0x2, 0x2, 0x43f, 0x440, 0x7, 0x176, 0x2, 0x2, + 0x440, 0x441, 0x7, 0x134, 0x2, 0x2, 0x441, 0x44e, 0x7, 0x151, 0x2, + 0x2, 0x442, 0x443, 0x7, 0x16d, 0x2, 0x2, 0x443, 0x446, 0x7, 0x133, + 0x2, 0x2, 0x444, 0x447, 0x5, 0x6, 0x4, 0x2, 0x445, 0x447, 0x5, 0xca, + 0x66, 0x2, 0x446, 0x444, 0x3, 0x2, 0x2, 0x2, 0x446, 0x445, 0x3, 0x2, + 0x2, 0x2, 0x447, 0x448, 0x3, 0x2, 0x2, 0x2, 0x448, 0x449, 0x7, 0x152, + 0x2, 0x2, 0x449, 0x44a, 0x9, 0x17, 0x2, 0x2, 0x44a, 0x44b, 0x7, 0x134, + 0x2, 0x2, 0x44b, 0x44c, 0x7, 0x151, 0x2, 0x2, 0x44c, 0x44e, 0x3, + 0x2, 0x2, 0x2, 0x44d, 0x43d, 0x3, 0x2, 0x2, 0x2, 0x44d, 0x442, 0x3, + 0x2, 0x2, 0x2, 0x44e, 0xdd, 0x3, 0x2, 0x2, 0x2, 0x44f, 0x451, 0x7, + 0x9e, 0x2, 0x2, 0x450, 0x44f, 0x3, 0x2, 0x2, 0x2, 0x450, 0x451, 0x3, + 0x2, 0x2, 0x2, 0x451, 0x452, 0x3, 0x2, 0x2, 0x2, 0x452, 0x453, 0x7, + 0x16b, 0x2, 0x2, 0x453, 0x456, 0x7, 0x173, 0x2, 0x2, 0x454, 0x455, + 0x7, 0x14f, 0x2, 0x2, 0x455, 0x457, 0x7, 0x173, 0x2, 0x2, 0x456, + 0x454, 0x3, 0x2, 0x2, 0x2, 0x456, 0x457, 0x3, 0x2, 0x2, 0x2, 0x457, + 0x458, 0x3, 0x2, 0x2, 0x2, 0x458, 0x45c, 0x7, 0x137, 0x2, 0x2, 0x459, + 0x45b, 0x5, 0xe2, 0x72, 0x2, 0x45a, 0x459, 0x3, 0x2, 0x2, 0x2, 0x45b, + 0x45e, 0x3, 0x2, 0x2, 0x2, 0x45c, 0x45a, 0x3, 0x2, 0x2, 0x2, 0x45c, + 0x45d, 0x3, 0x2, 0x2, 0x2, 0x45d, 0x45f, 0x3, 0x2, 0x2, 0x2, 0x45e, + 0x45c, 0x3, 0x2, 0x2, 0x2, 0x45f, 0x460, 0x7, 0x138, 0x2, 0x2, 0x460, + 0xdf, 0x3, 0x2, 0x2, 0x2, 0x461, 0x463, 0x5, 0x46, 0x24, 0x2, 0x462, + 0x461, 0x3, 0x2, 0x2, 0x2, 0x463, 0x466, 0x3, 0x2, 0x2, 0x2, 0x464, + 0x462, 0x3, 0x2, 0x2, 0x2, 0x464, 0x465, 0x3, 0x2, 0x2, 0x2, 0x465, + 0x467, 0x3, 0x2, 0x2, 0x2, 0x466, 0x464, 0x3, 0x2, 0x2, 0x2, 0x467, + 0x468, 0x5, 0xde, 0x70, 0x2, 0x468, 0xe1, 0x3, 0x2, 0x2, 0x2, 0x469, + 0x471, 0x5, 0x16, 0xc, 0x2, 0x46a, 0x471, 0x5, 0xd6, 0x6c, 0x2, 0x46b, + 0x471, 0x5, 0xda, 0x6e, 0x2, 0x46c, 0x471, 0x5, 0x32, 0x1a, 0x2, + 0x46d, 0x471, 0x5, 0x1e, 0x10, 0x2, 0x46e, 0x471, 0x5, 0xc8, 0x65, + 0x2, 0x46f, 0x471, 0x5, 0x46, 0x24, 0x2, 0x470, 0x469, 0x3, 0x2, + 0x2, 0x2, 0x470, 0x46a, 0x3, 0x2, 0x2, 0x2, 0x470, 0x46b, 0x3, 0x2, + 0x2, 0x2, 0x470, 0x46c, 0x3, 0x2, 0x2, 0x2, 0x470, 0x46d, 0x3, 0x2, + 0x2, 0x2, 0x470, 0x46e, 0x3, 0x2, 0x2, 0x2, 0x470, 0x46f, 0x3, 0x2, + 0x2, 0x2, 0x471, 0xe3, 0x3, 0x2, 0x2, 0x2, 0x472, 0x473, 0x7, 0x16a, + 0x2, 0x2, 0x473, 0x474, 0x7, 0x173, 0x2, 0x2, 0x474, 0x475, 0x5, + 0xe8, 0x75, 0x2, 0x475, 0xe5, 0x3, 0x2, 0x2, 0x2, 0x476, 0x478, 0x5, + 0x46, 0x24, 0x2, 0x477, 0x476, 0x3, 0x2, 0x2, 0x2, 0x478, 0x47b, + 0x3, 0x2, 0x2, 0x2, 0x479, 0x477, 0x3, 0x2, 0x2, 0x2, 0x479, 0x47a, + 0x3, 0x2, 0x2, 0x2, 0x47a, 0x47c, 0x3, 0x2, 0x2, 0x2, 0x47b, 0x479, + 0x3, 0x2, 0x2, 0x2, 0x47c, 0x47d, 0x5, 0xe4, 0x73, 0x2, 0x47d, 0xe7, + 0x3, 0x2, 0x2, 0x2, 0x47e, 0x482, 0x7, 0x137, 0x2, 0x2, 0x47f, 0x481, + 0x5, 0xea, 0x76, 0x2, 0x480, 0x47f, 0x3, 0x2, 0x2, 0x2, 0x481, 0x484, + 0x3, 0x2, 0x2, 0x2, 0x482, 0x480, 0x3, 0x2, 0x2, 0x2, 0x482, 0x483, + 0x3, 0x2, 0x2, 0x2, 0x483, 0x485, 0x3, 0x2, 0x2, 0x2, 0x484, 0x482, + 0x3, 0x2, 0x2, 0x2, 0x485, 0x486, 0x7, 0x138, 0x2, 0x2, 0x486, 0xe9, + 0x3, 0x2, 0x2, 0x2, 0x487, 0x488, 0x7, 0x168, 0x2, 0x2, 0x488, 0x489, + 0x7, 0x153, 0x2, 0x2, 0x489, 0x48a, 0x5, 0xb8, 0x5d, 0x2, 0x48a, + 0x48b, 0x7, 0x151, 0x2, 0x2, 0x48b, 0x492, 0x3, 0x2, 0x2, 0x2, 0x48c, + 0x48d, 0x7, 0x169, 0x2, 0x2, 0x48d, 0x48e, 0x7, 0x153, 0x2, 0x2, + 0x48e, 0x48f, 0x5, 0xb8, 0x5d, 0x2, 0x48f, 0x490, 0x7, 0x151, 0x2, + 0x2, 0x490, 0x492, 0x3, 0x2, 0x2, 0x2, 0x491, 0x487, 0x3, 0x2, 0x2, + 0x2, 0x491, 0x48c, 0x3, 0x2, 0x2, 0x2, 0x492, 0xeb, 0x3, 0x2, 0x2, + 0x2, 0x493, 0x497, 0x7, 0x137, 0x2, 0x2, 0x494, 0x496, 0x5, 0xee, + 0x78, 0x2, 0x495, 0x494, 0x3, 0x2, 0x2, 0x2, 0x496, 0x499, 0x3, 0x2, + 0x2, 0x2, 0x497, 0x495, 0x3, 0x2, 0x2, 0x2, 0x497, 0x498, 0x3, 0x2, + 0x2, 0x2, 0x498, 0x49a, 0x3, 0x2, 0x2, 0x2, 0x499, 0x497, 0x3, 0x2, + 0x2, 0x2, 0x49a, 0x49b, 0x7, 0x138, 0x2, 0x2, 0x49b, 0xed, 0x3, 0x2, + 0x2, 0x2, 0x49c, 0x4aa, 0x5, 0xf0, 0x79, 0x2, 0x49d, 0x4aa, 0x5, + 0xf2, 0x7a, 0x2, 0x49e, 0x4aa, 0x5, 0xf4, 0x7b, 0x2, 0x49f, 0x4aa, + 0x5, 0xf6, 0x7c, 0x2, 0x4a0, 0x4aa, 0x5, 0xf8, 0x7d, 0x2, 0x4a1, + 0x4aa, 0x5, 0xfa, 0x7e, 0x2, 0x4a2, 0x4aa, 0x5, 0xfc, 0x7f, 0x2, + 0x4a3, 0x4aa, 0x5, 0xfe, 0x80, 0x2, 0x4a4, 0x4aa, 0x5, 0x100, 0x81, + 0x2, 0x4a5, 0x4aa, 0x5, 0x102, 0x82, 0x2, 0x4a6, 0x4aa, 0x5, 0x104, + 0x83, 0x2, 0x4a7, 0x4aa, 0x5, 0x106, 0x84, 0x2, 0x4a8, 0x4aa, 0x5, + 0x108, 0x85, 0x2, 0x4a9, 0x49c, 0x3, 0x2, 0x2, 0x2, 0x4a9, 0x49d, + 0x3, 0x2, 0x2, 0x2, 0x4a9, 0x49e, 0x3, 0x2, 0x2, 0x2, 0x4a9, 0x49f, + 0x3, 0x2, 0x2, 0x2, 0x4a9, 0x4a0, 0x3, 0x2, 0x2, 0x2, 0x4a9, 0x4a1, + 0x3, 0x2, 0x2, 0x2, 0x4a9, 0x4a2, 0x3, 0x2, 0x2, 0x2, 0x4a9, 0x4a3, + 0x3, 0x2, 0x2, 0x2, 0x4a9, 0x4a4, 0x3, 0x2, 0x2, 0x2, 0x4a9, 0x4a5, + 0x3, 0x2, 0x2, 0x2, 0x4a9, 0x4a6, 0x3, 0x2, 0x2, 0x2, 0x4a9, 0x4a7, + 0x3, 0x2, 0x2, 0x2, 0x4a9, 0x4a8, 0x3, 0x2, 0x2, 0x2, 0x4aa, 0xef, + 0x3, 0x2, 0x2, 0x2, 0x4ab, 0x4ac, 0x7, 0x117, 0x2, 0x2, 0x4ac, 0x4ad, + 0x7, 0x153, 0x2, 0x2, 0x4ad, 0x4ae, 0x7, 0x174, 0x2, 0x2, 0x4ae, + 0x4af, 0x7, 0x151, 0x2, 0x2, 0x4af, 0xf1, 0x3, 0x2, 0x2, 0x2, 0x4b0, + 0x4b1, 0x7, 0x114, 0x2, 0x2, 0x4b1, 0x4b2, 0x7, 0x153, 0x2, 0x2, + 0x4b2, 0x4b3, 0x5, 0x10a, 0x86, 0x2, 0x4b3, 0x4b4, 0x7, 0x151, 0x2, + 0x2, 0x4b4, 0xf3, 0x3, 0x2, 0x2, 0x2, 0x4b5, 0x4b6, 0x7, 0x115, 0x2, + 0x2, 0x4b6, 0x4b7, 0x7, 0x153, 0x2, 0x2, 0x4b7, 0x4b8, 0x5, 0x10a, + 0x86, 0x2, 0x4b8, 0x4b9, 0x7, 0x151, 0x2, 0x2, 0x4b9, 0xf5, 0x3, + 0x2, 0x2, 0x2, 0x4ba, 0x4bb, 0x7, 0x116, 0x2, 0x2, 0x4bb, 0x4bc, + 0x7, 0x153, 0x2, 0x2, 0x4bc, 0x4bd, 0x5, 0x10a, 0x86, 0x2, 0x4bd, + 0x4be, 0x7, 0x151, 0x2, 0x2, 0x4be, 0xf7, 0x3, 0x2, 0x2, 0x2, 0x4bf, + 0x4c0, 0x7, 0x11c, 0x2, 0x2, 0x4c0, 0x4c1, 0x7, 0x153, 0x2, 0x2, + 0x4c1, 0x4c2, 0x5, 0x10c, 0x87, 0x2, 0x4c2, 0x4c3, 0x7, 0x151, 0x2, + 0x2, 0x4c3, 0xf9, 0x3, 0x2, 0x2, 0x2, 0x4c4, 0x4c5, 0x7, 0x11b, 0x2, + 0x2, 0x4c5, 0x4c6, 0x7, 0x153, 0x2, 0x2, 0x4c6, 0x4c7, 0x5, 0x110, + 0x89, 0x2, 0x4c7, 0x4c8, 0x7, 0x151, 0x2, 0x2, 0x4c8, 0xfb, 0x3, + 0x2, 0x2, 0x2, 0x4c9, 0x4ca, 0x7, 0x110, 0x2, 0x2, 0x4ca, 0x4cb, + 0x7, 0x153, 0x2, 0x2, 0x4cb, 0x4cc, 0x5, 0x10e, 0x88, 0x2, 0x4cc, + 0x4cd, 0x7, 0x151, 0x2, 0x2, 0x4cd, 0xfd, 0x3, 0x2, 0x2, 0x2, 0x4ce, + 0x4cf, 0x7, 0x111, 0x2, 0x2, 0x4cf, 0x4d0, 0x7, 0x153, 0x2, 0x2, + 0x4d0, 0x4d1, 0x5, 0x10e, 0x88, 0x2, 0x4d1, 0x4d2, 0x7, 0x151, 0x2, + 0x2, 0x4d2, 0xff, 0x3, 0x2, 0x2, 0x2, 0x4d3, 0x4d4, 0x7, 0x112, 0x2, + 0x2, 0x4d4, 0x4d5, 0x7, 0x153, 0x2, 0x2, 0x4d5, 0x4d6, 0x5, 0x10e, + 0x88, 0x2, 0x4d6, 0x4d7, 0x7, 0x151, 0x2, 0x2, 0x4d7, 0x101, 0x3, + 0x2, 0x2, 0x2, 0x4d8, 0x4d9, 0x7, 0x119, 0x2, 0x2, 0x4d9, 0x4da, + 0x7, 0x153, 0x2, 0x2, 0x4da, 0x4db, 0x7, 0x175, 0x2, 0x2, 0x4db, + 0x4dc, 0x7, 0x151, 0x2, 0x2, 0x4dc, 0x103, 0x3, 0x2, 0x2, 0x2, 0x4dd, + 0x4de, 0x7, 0x118, 0x2, 0x2, 0x4de, 0x4df, 0x7, 0x153, 0x2, 0x2, + 0x4df, 0x4e0, 0x7, 0x175, 0x2, 0x2, 0x4e0, 0x4e1, 0x7, 0x151, 0x2, + 0x2, 0x4e1, 0x105, 0x3, 0x2, 0x2, 0x2, 0x4e2, 0x4e3, 0x7, 0x11a, + 0x2, 0x2, 0x4e3, 0x4e4, 0x7, 0x153, 0x2, 0x2, 0x4e4, 0x4e5, 0x7, + 0x175, 0x2, 0x2, 0x4e5, 0x4e6, 0x7, 0x151, 0x2, 0x2, 0x4e6, 0x107, + 0x3, 0x2, 0x2, 0x2, 0x4e7, 0x4e8, 0x7, 0x113, 0x2, 0x2, 0x4e8, 0x4e9, + 0x7, 0x153, 0x2, 0x2, 0x4e9, 0x4ea, 0x5, 0x112, 0x8a, 0x2, 0x4ea, + 0x4eb, 0x7, 0x151, 0x2, 0x2, 0x4eb, 0x109, 0x3, 0x2, 0x2, 0x2, 0x4ec, + 0x4ed, 0x9, 0x18, 0x2, 0x2, 0x4ed, 0x10b, 0x3, 0x2, 0x2, 0x2, 0x4ee, + 0x4ef, 0x9, 0x19, 0x2, 0x2, 0x4ef, 0x10d, 0x3, 0x2, 0x2, 0x2, 0x4f0, + 0x4f1, 0x9, 0x1a, 0x2, 0x2, 0x4f1, 0x10f, 0x3, 0x2, 0x2, 0x2, 0x4f2, + 0x4f3, 0x9, 0x1b, 0x2, 0x2, 0x4f3, 0x111, 0x3, 0x2, 0x2, 0x2, 0x4f4, + 0x4f5, 0x9, 0x1c, 0x2, 0x2, 0x4f5, 0x113, 0x3, 0x2, 0x2, 0x2, 0x6a, + 0x117, 0x126, 0x12a, 0x132, 0x138, 0x141, 0x147, 0x152, 0x15b, 0x166, + 0x171, 0x176, 0x183, 0x18a, 0x191, 0x195, 0x19a, 0x1a0, 0x1ab, 0x1b3, + 0x1c3, 0x1c6, 0x1cb, 0x1d0, 0x1de, 0x1e9, 0x1ed, 0x1f1, 0x1f5, 0x1f7, + 0x203, 0x20b, 0x211, 0x219, 0x21d, 0x225, 0x22a, 0x22f, 0x235, 0x242, + 0x24b, 0x250, 0x25c, 0x268, 0x276, 0x27c, 0x280, 0x284, 0x290, 0x295, + 0x2a9, 0x2b2, 0x2ce, 0x2d0, 0x2db, 0x2e8, 0x2f1, 0x2f7, 0x302, 0x308, + 0x30c, 0x30f, 0x312, 0x315, 0x31d, 0x324, 0x32b, 0x32f, 0x333, 0x33d, + 0x344, 0x34e, 0x362, 0x39e, 0x3ad, 0x3b2, 0x3d1, 0x3d3, 0x3d9, 0x3dd, + 0x3e1, 0x3e5, 0x3e8, 0x3f2, 0x3f7, 0x408, 0x40e, 0x413, 0x41b, 0x422, + 0x42e, 0x438, 0x446, 0x44d, 0x450, 0x456, 0x45c, 0x464, 0x470, 0x479, + 0x482, 0x491, 0x497, 0x4a9, }; _serializedATN.insert(_serializedATN.end(), serializedATNSegment0, diff --git a/src/generated/azslParser.h b/src/generated/azslParser.h index 1f7019b..2914dfd 100644 --- a/src/generated/azslParser.h +++ b/src/generated/azslParser.h @@ -17,88 +17,90 @@ class azslParser : public antlr4::Parser { Bool2x2 = 12, Bool2x3 = 13, Bool2x4 = 14, Bool3x1 = 15, Bool3x2 = 16, Bool3x3 = 17, Bool3x4 = 18, Bool4x1 = 19, Bool4x2 = 20, Bool4x3 = 21, Bool4x4 = 22, Buffer = 23, BuiltInTriangleIntersectionAttributes = 24, - ByteAddressBuffer = 25, Break = 26, Case = 27, CBuffer = 28, ConstantBuffer = 29, - ConstantBufferCamel = 30, Centroid = 31, Class = 32, ColumnMajor = 33, + ByteAddressBuffer = 25, Break = 26, Case = 27, CBuffer = 28, Centroid = 29, + ConstantBuffer = 30, ConstantBufferCamel = 31, Class = 32, ColumnMajor = 33, Const = 34, ConsumeStructuredBuffer = 35, Continue = 36, Default = 37, Discard = 38, Do = 39, Double = 40, Double1 = 41, Double2 = 42, Double3 = 43, Double4 = 44, Double1x1 = 45, Double1x2 = 46, Double1x3 = 47, Double1x4 = 48, Double2x1 = 49, Double2x2 = 50, Double2x3 = 51, Double2x4 = 52, Double3x1 = 53, Double3x2 = 54, Double3x3 = 55, Double3x4 = 56, Double4x1 = 57, Double4x2 = 58, - Double4x3 = 59, Double4x4 = 60, Else = 61, Enum = 62, Extern = 63, FeedbackTexture2D = 64, - FeedbackTexture2DArray = 65, Float = 66, Float1 = 67, Float2 = 68, Float3 = 69, - Float4 = 70, Float1x1 = 71, Float1x2 = 72, Float1x3 = 73, Float1x4 = 74, - Float2x1 = 75, Float2x2 = 76, Float2x3 = 77, Float2x4 = 78, Float3x1 = 79, - Float3x2 = 80, Float3x3 = 81, Float3x4 = 82, Float4x1 = 83, Float4x2 = 84, - Float4x3 = 85, Float4x4 = 86, For = 87, Groupshared = 88, Global = 89, - Half = 90, Half1 = 91, Half2 = 92, Half3 = 93, Half4 = 94, Half1x1 = 95, - Half1x2 = 96, Half1x3 = 97, Half1x4 = 98, Half2x1 = 99, Half2x2 = 100, - Half2x3 = 101, Half2x4 = 102, Half3x1 = 103, Half3x2 = 104, Half3x3 = 105, - Half3x4 = 106, Half4x1 = 107, Half4x2 = 108, Half4x3 = 109, Half4x4 = 110, - If = 111, In = 112, Inline = 113, Rootconstant = 114, Inout = 115, InputPatch = 116, - Int = 117, Int32_t = 118, Int64_t = 119, Int1 = 120, Int2 = 121, Int3 = 122, - Int4 = 123, Int1x1 = 124, Int1x2 = 125, Int1x3 = 126, Int1x4 = 127, - Int2x1 = 128, Int2x2 = 129, Int2x3 = 130, Int2x4 = 131, Int3x1 = 132, - Int3x2 = 133, Int3x3 = 134, Int3x4 = 135, Int4x1 = 136, Int4x2 = 137, - Int4x3 = 138, Int4x4 = 139, Interface = 140, Line_ = 141, LineAdj = 142, - Linear = 143, LineStream = 144, Long = 145, Matrix = 146, Nointerpolation = 147, - Noperspective = 148, Option = 149, Out = 150, OutputPatch = 151, Override = 152, - Partial = 153, Packoffset = 154, Point = 155, PointStream = 156, Precise = 157, - RasterizerOrderedBuffer = 158, RasterizerOrderedByteAddressBuffer = 159, - RasterizerOrderedStructuredBuffer = 160, RasterizerOrderedTexture1D = 161, - RasterizerOrderedTexture1DArray = 162, RasterizerOrderedTexture2D = 163, - RasterizerOrderedTexture2DArray = 164, RasterizerOrderedTexture3D = 165, - RayDesc = 166, RaytracingAccelerationStructure = 167, Register = 168, - Return = 169, RowMajor = 170, RWBuffer = 171, RWByteAddressBuffer = 172, - RWStructuredBuffer = 173, RWTexture1D = 174, RWTexture1DArray = 175, - RWTexture2D = 176, RWTexture2DArray = 177, RWTexture3D = 178, Sample = 179, - Sampler = 180, SamplerCapitalS = 181, SamplerComparisonState = 182, - SamplerState = 183, Shared = 184, Static = 185, Struct = 186, StructuredBuffer = 187, - SubpassInput = 188, SubpassInputMS = 189, Switch = 190, Texture1D = 191, - Texture1DArray = 192, Texture2D = 193, Texture2DArray = 194, Texture2DMS = 195, - Texture2DMSArray = 196, Texture3D = 197, TextureCube = 198, TextureCubeArray = 199, - Triangle = 200, TriangleAdj = 201, TriangleStream = 202, Uniform = 203, - Uint = 204, Uint32_t = 205, Uint64_t = 206, UnsignedInt = 207, Uint1 = 208, - Uint2 = 209, Uint3 = 210, Uint4 = 211, Uint1x1 = 212, Uint1x2 = 213, - Uint1x3 = 214, Uint1x4 = 215, Uint2x1 = 216, Uint2x2 = 217, Uint2x3 = 218, - Uint2x4 = 219, Uint3x1 = 220, Uint3x2 = 221, Uint3x3 = 222, Uint3x4 = 223, - Uint4x1 = 224, Uint4x2 = 225, Uint4x3 = 226, Uint4x4 = 227, Dword = 228, - Dword1 = 229, Dword2 = 230, Dword3 = 231, Dword4 = 232, Dword1x1 = 233, - Dword1x2 = 234, Dword1x3 = 235, Dword1x4 = 236, Dword2x1 = 237, Dword2x2 = 238, - Dword2x3 = 239, Dword2x4 = 240, Dword3x1 = 241, Dword3x2 = 242, Dword3x3 = 243, - Dword3x4 = 244, Dword4x1 = 245, Dword4x2 = 246, Dword4x3 = 247, Dword4x4 = 248, - Vector = 249, Volatile = 250, Void = 251, While = 252, StateObjectConfig = 253, - LocalRootSignature = 254, GlobalRootSignature = 255, SubobjectToExportsAssociation = 256, - RaytracingShaderConfig = 257, RaytracingPipelineConfig = 258, RaytracingPipelineConfig1 = 259, - TriangleHitGroup = 260, ProceduralPrimitiveHitGroup = 261, ADDRESS_U = 262, - ADDRESS_V = 263, ADDRESS_W = 264, BORDER_COLOR = 265, MIN_FILTER = 266, - MAG_FILTER = 267, MIP_FILTER = 268, MAX_ANISOTROPY = 269, MAX_LOD = 270, - MIN_LOD = 271, MIP_LOD_BIAS = 272, COMPARISON_FUNC = 273, REDUCTION_TYPE = 274, - FILTER_MODE_POINT = 275, FILTER_MODE_LINEAR = 276, REDUCTION_TYPE_FILTER = 277, - REDUCTION_TYPE_COMPARISON = 278, REDUCTION_TYPE_MINIMUM = 279, REDUCTION_TYPE_MAXIMUM = 280, - ADDRESS_MODE_WRAP = 281, ADDRESS_MODE_MIRROR = 282, ADDRESS_MODE_CLAMP = 283, - ADDRESS_MODE_BORDER = 284, ADDRESS_MODE_MIRROR_ONCE = 285, COMPARISON_FUNCTION_NEVER = 286, - COMPARISON_FUNCTION_LESS = 287, COMPARISON_FUNCTION_EQUAL = 288, COMPARISON_FUNCTION_LESS_EQUAL = 289, - COMPARISON_FUNCTION_GREATER = 290, COMPARISON_FUNCTION_NOT_EQUAL = 291, - COMPARISON_FUNCTION_GREATER_EQUAL = 292, COMPARISON_FUNCTION_ALWAYS = 293, - BORDER_COLOR_OPAQUE_BLACK = 294, BORDER_COLOR_TRANSPARENT_BLACK = 295, - BORDER_COLOR_OPAQUE_WHITE = 296, LeftParen = 297, RightParen = 298, - LeftBracket = 299, RightBracket = 300, LeftBrace = 301, RightBrace = 302, - LeftDoubleBracket = 303, Less = 304, LessEqual = 305, Greater = 306, - GreaterEqual = 307, LeftShift = 308, RightShift = 309, Plus = 310, PlusPlus = 311, - Minus = 312, MinusMinus = 313, Star = 314, Div = 315, Mod = 316, And = 317, - Or = 318, AndAnd = 319, OrOr = 320, Caret = 321, Not = 322, Tilde = 323, - Question = 324, Colon = 325, ColonColon = 326, Semi = 327, Comma = 328, - Assign = 329, StarAssign = 330, DivAssign = 331, ModAssign = 332, PlusAssign = 333, - MinusAssign = 334, LeftShiftAssign = 335, RightShiftAssign = 336, AndAssign = 337, - XorAssign = 338, OrAssign = 339, Equal = 340, NotEqual = 341, Dot = 342, - True = 343, False = 344, KW_AssociatedType = 345, KW_TypeAlias = 346, - KW_Typedef = 347, KW_Fundamental = 348, KW_Typeof = 349, KW_ext_print_message = 350, - KW_ext_print_symbol = 351, KW_ext_prtsym_fully_qualified = 352, KW_ext_prtsym_least_qualified = 353, - KW_ext_prtsym_constint_value = 354, FrequencyId = 355, ShaderVariantFallback = 356, - ShaderResourceGroupSemantic = 357, ShaderResourceGroup = 358, HLSLSemanticStream = 359, - HLSLSemanticSystem = 360, Identifier = 361, IntegerLiteral = 362, FloatLiteral = 363, - StringLiteral = 364, PragmaDirective = 365, LineDirective = 366, Whitespace = 367, - Newline = 368, BlockComment = 369, LineComment = 370 + Double4x3 = 59, Double4x4 = 60, Else = 61, Enum = 62, Export = 63, Extern = 64, + FeedbackTexture2D = 65, FeedbackTexture2DArray = 66, Float = 67, Float1 = 68, + Float2 = 69, Float3 = 70, Float4 = 71, Float1x1 = 72, Float1x2 = 73, + Float1x3 = 74, Float1x4 = 75, Float2x1 = 76, Float2x2 = 77, Float2x3 = 78, + Float2x4 = 79, Float3x1 = 80, Float3x2 = 81, Float3x3 = 82, Float3x4 = 83, + Float4x1 = 84, Float4x2 = 85, Float4x3 = 86, Float4x4 = 87, For = 88, + Groupshared = 89, Globallycoherent = 90, Global = 91, Half = 92, Half1 = 93, + Half2 = 94, Half3 = 95, Half4 = 96, Half1x1 = 97, Half1x2 = 98, Half1x3 = 99, + Half1x4 = 100, Half2x1 = 101, Half2x2 = 102, Half2x3 = 103, Half2x4 = 104, + Half3x1 = 105, Half3x2 = 106, Half3x3 = 107, Half3x4 = 108, Half4x1 = 109, + Half4x2 = 110, Half4x3 = 111, Half4x4 = 112, If = 113, In = 114, Inline = 115, + Rootconstant = 116, Inout = 117, InputPatch = 118, Int = 119, Int16_t = 120, + Int32_t = 121, Int64_t = 122, Int1 = 123, Int2 = 124, Int3 = 125, Int4 = 126, + Int1x1 = 127, Int1x2 = 128, Int1x3 = 129, Int1x4 = 130, Int2x1 = 131, + Int2x2 = 132, Int2x3 = 133, Int2x4 = 134, Int3x1 = 135, Int3x2 = 136, + Int3x3 = 137, Int3x4 = 138, Int4x1 = 139, Int4x2 = 140, Int4x3 = 141, + Int4x4 = 142, Interface = 143, Line_ = 144, LineAdj = 145, Linear = 146, + LineStream = 147, Long = 148, Matrix = 149, Nointerpolation = 150, Noperspective = 151, + Option = 152, Out = 153, OutputPatch = 154, Override = 155, Partial = 156, + Packoffset = 157, Point = 158, PointStream = 159, Precise = 160, RasterizerOrderedBuffer = 161, + RasterizerOrderedByteAddressBuffer = 162, RasterizerOrderedStructuredBuffer = 163, + RasterizerOrderedTexture1D = 164, RasterizerOrderedTexture1DArray = 165, + RasterizerOrderedTexture2D = 166, RasterizerOrderedTexture2DArray = 167, + RasterizerOrderedTexture3D = 168, RayDesc = 169, RaytracingAccelerationStructure = 170, + Register = 171, Return = 172, RowMajor = 173, RWBuffer = 174, RWByteAddressBuffer = 175, + RWStructuredBuffer = 176, RWTexture1D = 177, RWTexture1DArray = 178, + RWTexture2D = 179, RWTexture2DArray = 180, RWTexture3D = 181, Sample = 182, + Sampler = 183, SamplerCapitalS = 184, SamplerComparisonState = 185, + SamplerStateCamel = 186, SamplerState = 187, Shared = 188, SNorm = 189, + Static = 190, Struct = 191, StructuredBuffer = 192, SubpassInput = 193, + SubpassInputMS = 194, Switch = 195, TBuffer = 196, Texture1D = 197, + Texture1DArray = 198, Texture2D = 199, Texture2DArray = 200, Texture2DMS = 201, + Texture2DMSArray = 202, Texture3D = 203, TextureCube = 204, TextureCubeArray = 205, + Triangle = 206, TriangleAdj = 207, TriangleStream = 208, Uniform = 209, + Uint = 210, Uint1 = 211, Uint2 = 212, Uint3 = 213, Uint4 = 214, Uint1x1 = 215, + Uint1x2 = 216, Uint1x3 = 217, Uint1x4 = 218, Uint2x1 = 219, Uint2x2 = 220, + Uint2x3 = 221, Uint2x4 = 222, Uint3x1 = 223, Uint3x2 = 224, Uint3x3 = 225, + Uint3x4 = 226, Uint4x1 = 227, Uint4x2 = 228, Uint4x3 = 229, Uint4x4 = 230, + Uint16_t = 231, Uint32_t = 232, Uint64_t = 233, UNorm = 234, Unsigned = 235, + Dword = 236, Dword1 = 237, Dword2 = 238, Dword3 = 239, Dword4 = 240, + Dword1x1 = 241, Dword1x2 = 242, Dword1x3 = 243, Dword1x4 = 244, Dword2x1 = 245, + Dword2x2 = 246, Dword2x3 = 247, Dword2x4 = 248, Dword3x1 = 249, Dword3x2 = 250, + Dword3x3 = 251, Dword3x4 = 252, Dword4x1 = 253, Dword4x2 = 254, Dword4x3 = 255, + Dword4x4 = 256, Vector = 257, Volatile = 258, Void = 259, While = 260, + StateObjectConfig = 261, LocalRootSignature = 262, GlobalRootSignature = 263, + SubobjectToExportsAssociation = 264, RaytracingShaderConfig = 265, RaytracingPipelineConfig = 266, + RaytracingPipelineConfig1 = 267, TriangleHitGroup = 268, ProceduralPrimitiveHitGroup = 269, + ADDRESS_U = 270, ADDRESS_V = 271, ADDRESS_W = 272, BORDER_COLOR = 273, + MIN_FILTER = 274, MAG_FILTER = 275, MIP_FILTER = 276, MAX_ANISOTROPY = 277, + MAX_LOD = 278, MIN_LOD = 279, MIP_LOD_BIAS = 280, COMPARISON_FUNC = 281, + REDUCTION_TYPE = 282, FILTER_MODE_POINT = 283, FILTER_MODE_LINEAR = 284, + REDUCTION_TYPE_FILTER = 285, REDUCTION_TYPE_COMPARISON = 286, REDUCTION_TYPE_MINIMUM = 287, + REDUCTION_TYPE_MAXIMUM = 288, ADDRESS_MODE_WRAP = 289, ADDRESS_MODE_MIRROR = 290, + ADDRESS_MODE_CLAMP = 291, ADDRESS_MODE_BORDER = 292, ADDRESS_MODE_MIRROR_ONCE = 293, + COMPARISON_FUNCTION_NEVER = 294, COMPARISON_FUNCTION_LESS = 295, COMPARISON_FUNCTION_EQUAL = 296, + COMPARISON_FUNCTION_LESS_EQUAL = 297, COMPARISON_FUNCTION_GREATER = 298, + COMPARISON_FUNCTION_NOT_EQUAL = 299, COMPARISON_FUNCTION_GREATER_EQUAL = 300, + COMPARISON_FUNCTION_ALWAYS = 301, BORDER_COLOR_OPAQUE_BLACK = 302, BORDER_COLOR_TRANSPARENT_BLACK = 303, + BORDER_COLOR_OPAQUE_WHITE = 304, LeftParen = 305, RightParen = 306, + LeftBracket = 307, RightBracket = 308, LeftBrace = 309, RightBrace = 310, + LeftDoubleBracket = 311, Less = 312, LessEqual = 313, Greater = 314, + GreaterEqual = 315, LeftShift = 316, RightShift = 317, Plus = 318, PlusPlus = 319, + Minus = 320, MinusMinus = 321, Star = 322, Div = 323, Mod = 324, And = 325, + Or = 326, AndAnd = 327, OrOr = 328, Caret = 329, Not = 330, Tilde = 331, + Question = 332, Colon = 333, ColonColon = 334, Semi = 335, Comma = 336, + Assign = 337, StarAssign = 338, DivAssign = 339, ModAssign = 340, PlusAssign = 341, + MinusAssign = 342, LeftShiftAssign = 343, RightShiftAssign = 344, AndAssign = 345, + XorAssign = 346, OrAssign = 347, Equal = 348, NotEqual = 349, Dot = 350, + True = 351, False = 352, KW_AssociatedType = 353, KW_TypeAlias = 354, + KW_Typedef = 355, KW_Fundamental = 356, KW_Typeof = 357, FrequencyId = 358, + ShaderVariantFallback = 359, ShaderResourceGroupSemantic = 360, ShaderResourceGroup = 361, + KW_ext_print_message = 362, KW_ext_print_symbol = 363, KW_ext_prtsym_fully_qualified = 364, + KW_ext_prtsym_least_qualified = 365, KW_ext_prtsym_constint_value = 366, + HLSLSemanticStream = 367, HLSLSemanticSystem = 368, Identifier = 369, + IntegerLiteral = 370, FloatLiteral = 371, StringLiteral = 372, PragmaDirective = 373, + LineDirective = 374, Whitespace = 375, Newline = 376, BlockComment = 377, + LineComment = 378 }; enum { @@ -134,23 +136,23 @@ class azslParser : public antlr4::Parser { RuleGenericVectorType = 84, RuleScalarOrVectorType = 85, RuleScalarOrVectorOrMatrixType = 86, RuleMatrixType = 87, RuleGenericMatrixPredefinedType = 88, RuleRegisterAllocation = 89, RuleSamplerStateProperty = 90, RuleLiteral = 91, RuleLeadingTypeFunctionSignature = 92, - RuleHlslFunctionDefinition = 93, RuleHlslFunctionDeclaration = 94, RuleFunctionType = 95, - RuleUserDefinedType = 96, RuleAssociatedTypeDeclaration = 97, RuleTypedefStatement = 98, - RuleTypealiasStatement = 99, RuleTypeAliasingDefinitionStatement = 100, - RuleTypeofExpression = 101, RuleGenericParameterList = 102, RuleGenericTypeDefinition = 103, - RuleGenericConstraint = 104, RuleLanguageDefinedConstraint = 105, RuleFunctionDeclaration = 106, - RuleAttributedFunctionDeclaration = 107, RuleFunctionDefinition = 108, - RuleAttributedFunctionDefinition = 109, RuleCompilerExtensionStatement = 110, - RuleSrgDefinition = 111, RuleAttributedSrgDefinition = 112, RuleSrgMemberDeclaration = 113, - RuleSrgSemantic = 114, RuleAttributedSrgSemantic = 115, RuleSrgSemanticBodyDeclaration = 116, - RuleSrgSemanticMemberDeclaration = 117, RuleSamplerBodyDeclaration = 118, - RuleSamplerMemberDeclaration = 119, RuleMaxAnisotropyOption = 120, RuleMinFilterOption = 121, - RuleMagFilterOption = 122, RuleMipFilterOption = 123, RuleReductionTypeOption = 124, - RuleComparisonFunctionOption = 125, RuleAddressUOption = 126, RuleAddressVOption = 127, - RuleAddressWOption = 128, RuleMinLodOption = 129, RuleMaxLodOption = 130, - RuleMipLodBiasOption = 131, RuleBorderColorOption = 132, RuleFilterModeEnum = 133, - RuleReductionTypeEnum = 134, RuleAddressModeEnum = 135, RuleComparisonFunctionEnum = 136, - RuleBorderColorEnum = 137 + RuleHlslFunctionDefinition = 93, RuleHlslFunctionDeclaration = 94, RuleUserDefinedType = 95, + RuleAssociatedTypeDeclaration = 96, RuleTypedefStatement = 97, RuleTypealiasStatement = 98, + RuleTypeAliasingDefinitionStatement = 99, RuleTypeofExpression = 100, + RuleGenericParameterList = 101, RuleGenericTypeDefinition = 102, RuleGenericConstraint = 103, + RuleLanguageDefinedConstraint = 104, RuleFunctionDeclaration = 105, + RuleAttributedFunctionDeclaration = 106, RuleFunctionDefinition = 107, + RuleAttributedFunctionDefinition = 108, RuleCompilerExtensionStatement = 109, + RuleSrgDefinition = 110, RuleAttributedSrgDefinition = 111, RuleSrgMemberDeclaration = 112, + RuleSrgSemantic = 113, RuleAttributedSrgSemantic = 114, RuleSrgSemanticBodyDeclaration = 115, + RuleSrgSemanticMemberDeclaration = 116, RuleSamplerBodyDeclaration = 117, + RuleSamplerMemberDeclaration = 118, RuleMaxAnisotropyOption = 119, RuleMinFilterOption = 120, + RuleMagFilterOption = 121, RuleMipFilterOption = 122, RuleReductionTypeOption = 123, + RuleComparisonFunctionOption = 124, RuleAddressUOption = 125, RuleAddressVOption = 126, + RuleAddressWOption = 127, RuleMinLodOption = 128, RuleMaxLodOption = 129, + RuleMipLodBiasOption = 130, RuleBorderColorOption = 131, RuleFilterModeEnum = 132, + RuleReductionTypeEnum = 133, RuleAddressModeEnum = 134, RuleComparisonFunctionEnum = 135, + RuleBorderColorEnum = 136 }; explicit azslParser(antlr4::TokenStream *input); @@ -258,7 +260,6 @@ class azslParser : public antlr4::Parser { class LeadingTypeFunctionSignatureContext; class HlslFunctionDefinitionContext; class HlslFunctionDeclarationContext; - class FunctionTypeContext; class UserDefinedTypeContext; class AssociatedTypeDeclarationContext; class TypedefStatementContext; @@ -758,7 +759,6 @@ class azslParser : public antlr4::Parser { antlr4::Token *Name = nullptr; FunctionParamContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - StorageFlagsContext *storageFlags(); TypeContext *type(); UnnamedVariableDeclaratorContext *unnamedVariableDeclarator(); std::vector attributeSpecifierAny(); @@ -1590,7 +1590,6 @@ class azslParser : public antlr4::Parser { public: VariableDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - StorageFlagsContext *storageFlags(); TypeContext *type(); VariableDeclaratorsContext *variableDeclarators(); std::vector attributeSpecifierAny(); @@ -1763,6 +1762,7 @@ class azslParser : public antlr4::Parser { StorageFlagContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; antlr4::tree::TerminalNode *Const(); + antlr4::tree::TerminalNode *Unsigned(); antlr4::tree::TerminalNode *RowMajor(); antlr4::tree::TerminalNode *ColumnMajor(); antlr4::tree::TerminalNode *Extern(); @@ -1775,6 +1775,9 @@ class azslParser : public antlr4::Parser { antlr4::tree::TerminalNode *Static(); antlr4::tree::TerminalNode *Uniform(); antlr4::tree::TerminalNode *Volatile(); + antlr4::tree::TerminalNode *Globallycoherent(); + antlr4::tree::TerminalNode *SNorm(); + antlr4::tree::TerminalNode *UNorm(); antlr4::tree::TerminalNode *Linear(); antlr4::tree::TerminalNode *Centroid(); antlr4::tree::TerminalNode *Nointerpolation(); @@ -1788,6 +1791,7 @@ class azslParser : public antlr4::Parser { antlr4::tree::TerminalNode *Triangle(); antlr4::tree::TerminalNode *LineAdj(); antlr4::tree::TerminalNode *TriangleAdj(); + antlr4::tree::TerminalNode *Identifier(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; @@ -1800,9 +1804,11 @@ class azslParser : public antlr4::Parser { public: TypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; + StorageFlagsContext *storageFlags(); PredefinedTypeContext *predefinedType(); UserDefinedTypeContext *userDefinedType(); TypeofExpressionContext *typeofExpression(); + antlr4::tree::TerminalNode *Void(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; @@ -1976,6 +1982,7 @@ class azslParser : public antlr4::Parser { antlr4::tree::TerminalNode *Sampler(); antlr4::tree::TerminalNode *SamplerCapitalS(); antlr4::tree::TerminalNode *SamplerState(); + antlr4::tree::TerminalNode *SamplerStateCamel(); antlr4::tree::TerminalNode *SamplerComparisonState(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; @@ -1991,12 +1998,13 @@ class azslParser : public antlr4::Parser { virtual size_t getRuleIndex() const override; antlr4::tree::TerminalNode *Bool(); antlr4::tree::TerminalNode *Int(); + antlr4::tree::TerminalNode *Int16_t(); antlr4::tree::TerminalNode *Int32_t(); antlr4::tree::TerminalNode *Int64_t(); antlr4::tree::TerminalNode *Uint(); + antlr4::tree::TerminalNode *Uint16_t(); antlr4::tree::TerminalNode *Uint32_t(); antlr4::tree::TerminalNode *Uint64_t(); - antlr4::tree::TerminalNode *UnsignedInt(); antlr4::tree::TerminalNode *Dword(); antlr4::tree::TerminalNode *Half(); antlr4::tree::TerminalNode *Float(); @@ -2463,8 +2471,7 @@ class azslParser : public antlr4::Parser { antlr4::Token *Name = nullptr; LeadingTypeFunctionSignatureContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - StorageFlagsContext *storageFlags(); - FunctionTypeContext *functionType(); + TypeContext *type(); antlr4::tree::TerminalNode *LeftParen(); antlr4::tree::TerminalNode *RightParen(); antlr4::tree::TerminalNode *Identifier(); @@ -2510,20 +2517,6 @@ class azslParser : public antlr4::Parser { HlslFunctionDeclarationContext* hlslFunctionDeclaration(); - class FunctionTypeContext : public antlr4::ParserRuleContext { - public: - FunctionTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - TypeContext *type(); - antlr4::tree::TerminalNode *Void(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - }; - - FunctionTypeContext* functionType(); - class UserDefinedTypeContext : public antlr4::ParserRuleContext { public: UserDefinedTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); @@ -2557,13 +2550,13 @@ class azslParser : public antlr4::Parser { class TypedefStatementContext : public antlr4::ParserRuleContext { public: - azslParser::FunctionTypeContext *ExistingType = nullptr; + azslParser::TypeContext *ExistingType = nullptr; antlr4::Token *NewTypeName = nullptr; TypedefStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; antlr4::tree::TerminalNode *KW_Typedef(); antlr4::tree::TerminalNode *Semi(); - FunctionTypeContext *functionType(); + TypeContext *type(); antlr4::tree::TerminalNode *Identifier(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; @@ -2576,14 +2569,14 @@ class azslParser : public antlr4::Parser { class TypealiasStatementContext : public antlr4::ParserRuleContext { public: antlr4::Token *NewTypeName = nullptr; - azslParser::FunctionTypeContext *ExistingType = nullptr; + azslParser::TypeContext *ExistingType = nullptr; TypealiasStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; antlr4::tree::TerminalNode *KW_TypeAlias(); antlr4::tree::TerminalNode *Assign(); antlr4::tree::TerminalNode *Semi(); antlr4::tree::TerminalNode *Identifier(); - FunctionTypeContext *functionType(); + TypeContext *type(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; @@ -2615,7 +2608,7 @@ class azslParser : public antlr4::Parser { antlr4::tree::TerminalNode *KW_Typeof(); antlr4::tree::TerminalNode *LeftParen(); antlr4::tree::TerminalNode *RightParen(); - FunctionTypeContext *functionType(); + TypeContext *type(); ExpressionExtContext *expressionExt(); antlr4::tree::TerminalNode *ColonColon(); IdExpressionContext *idExpression(); diff --git a/src/generated/azslParserBaseListener.h b/src/generated/azslParserBaseListener.h index a7aaad9..0a83e59 100644 --- a/src/generated/azslParserBaseListener.h +++ b/src/generated/azslParserBaseListener.h @@ -388,9 +388,6 @@ class azslParserBaseListener : public azslParserListener { virtual void enterHlslFunctionDeclaration(azslParser::HlslFunctionDeclarationContext * /*ctx*/) override { } virtual void exitHlslFunctionDeclaration(azslParser::HlslFunctionDeclarationContext * /*ctx*/) override { } - virtual void enterFunctionType(azslParser::FunctionTypeContext * /*ctx*/) override { } - virtual void exitFunctionType(azslParser::FunctionTypeContext * /*ctx*/) override { } - virtual void enterUserDefinedType(azslParser::UserDefinedTypeContext * /*ctx*/) override { } virtual void exitUserDefinedType(azslParser::UserDefinedTypeContext * /*ctx*/) override { } diff --git a/src/generated/azslParserListener.h b/src/generated/azslParserListener.h index b4d47df..3ed6651 100644 --- a/src/generated/azslParserListener.h +++ b/src/generated/azslParserListener.h @@ -386,9 +386,6 @@ class azslParserListener : public antlr4::tree::ParseTreeListener { virtual void enterHlslFunctionDeclaration(azslParser::HlslFunctionDeclarationContext *ctx) = 0; virtual void exitHlslFunctionDeclaration(azslParser::HlslFunctionDeclarationContext *ctx) = 0; - virtual void enterFunctionType(azslParser::FunctionTypeContext *ctx) = 0; - virtual void exitFunctionType(azslParser::FunctionTypeContext *ctx) = 0; - virtual void enterUserDefinedType(azslParser::UserDefinedTypeContext *ctx) = 0; virtual void exitUserDefinedType(azslParser::UserDefinedTypeContext *ctx) = 0; diff --git a/src/regenerate_azsl_antlr.bat b/src/regenerate_azsl_antlr.bat index 26748e3..1fb13f5 100644 --- a/src/regenerate_azsl_antlr.bat +++ b/src/regenerate_azsl_antlr.bat @@ -6,6 +6,12 @@ java -cp "../external/antlr-4.9.3-complete.jar" org.antlr.v4.Tool ../azslLexer.g java -cp "../external/antlr-4.9.3-complete.jar" org.antlr.v4.Tool ../azslParser.g4 -o java java -cp "../external/antlr-4.9.3-complete.jar" org.antlr.v4.Tool ../azslLexer.g4 -Dlanguage=Cpp java -cp "../external/antlr-4.9.3-complete.jar" org.antlr.v4.Tool ../azslParser.g4 -Dlanguage=Cpp +@REM for some reason it's necessary to call two times, or new tokens are unrecognized +java -cp "../external/antlr-4.9.3-complete.jar" org.antlr.v4.Tool ../azslLexer.g4 -o java +java -cp "../external/antlr-4.9.3-complete.jar" org.antlr.v4.Tool ../azslParser.g4 -o java +java -cp "../external/antlr-4.9.3-complete.jar" org.antlr.v4.Tool ../azslLexer.g4 -Dlanguage=Cpp +java -cp "../external/antlr-4.9.3-complete.jar" org.antlr.v4.Tool ../azslParser.g4 -Dlanguage=Cpp + cd java @REM for grun javac -cp "../../external/antlr-4.9.3-complete.jar" azsl*.java \ No newline at end of file diff --git a/tests/Advanced/seenat.py b/tests/Advanced/seenat.py index b46c2c7..d193f1e 100644 --- a/tests/Advanced/seenat.py +++ b/tests/Advanced/seenat.py @@ -27,7 +27,7 @@ def testVariables(thefile, compilerPath, silent): # now check global var `b` predicates.append(lambda: symbols["Symbol '/b'"]['kind'] == 'Variable') predicates.append(lambda: symbols["Symbol '/b'"]['type']['core']['name'] == '?int') - predicates.append(lambda: symbols["Symbol '/b'"]['storage'] == 'Static Const') + predicates.append(lambda: set(symbols["Symbol '/b'"]['storage'].split()) == set(['static', 'const'])) # it appears in 2 places: predicates.append(lambda: len(symbols["Symbol '/b'"]['references']) == 2) predicates.append(lambda: symbols["Symbol '/b'"]['references'][0]['line'] == 10) # c = b; diff --git a/tests/Advanced/texture2DMS-to-texture2D-noms.txt b/tests/Advanced/texture2DMS-to-texture2D-noms.txt index 4b35d88..e8f4813 100644 --- a/tests/Advanced/texture2DMS-to-texture2D-noms.txt +++ b/tests/Advanced/texture2DMS-to-texture2D-noms.txt @@ -11,13 +11,13 @@ "color += :: PassSrg_m_texture0ms . Load ( int3 ( texelLoc + texelLocDelta , 0 ) , int2 ( 0 , 2 ) ) ;" "color -= :: PassSrg_m_texture1 . Load ( int3 ( texelLoc , 0 ) ) ;" "color += :: PassSrg_m_texture1 . Load ( int3 ( texelLoc , 1 ) ) ;" -"color -= :: PassSrg_m_texture2ms . Load ( int3 ( texelLoc - 2.0 * texelLocDelta , 0 ) , int2 ( 1 , 1 ) ) ;" +"color -= :: PassSrg_m_texture2ms . Load ( int3 ( texelLoc - 2 . 0 * texelLocDelta , 0 ) , int2 ( 1 , 1 ) ) ;" "color += :: PassSrg_m_textureArray0ms . Load ( int4 ( int3 ( texelLoc , element ) , 0 ) ) - :: PassSrg_m_textureArray1 . Load ( int4 ( texelLoc , element , 3 ) ) ;" "return color ;" "}" "float2 PassSrg_GetSamplePosition ( int sampleIndex )" "{" -"return float2 ( 0, 0 ) + float2 ( 0, 0 ) + float2 ( 0, 0 ) ;" +"return float2 ( 0 , 0 ) + float2 ( 0 , 0 ) + float2 ( 0 , 0 ) ;" "}" "void PassSrg_GetDimensions ( out uint width , out uint height , out uint elements , out uint numSamples )" "{" @@ -62,7 +62,7 @@ "color += tex0ms . Load ( int3 ( texelLoc + texelLocDelta , 0 ) , int2 ( 0 , 2 ) ) ;" "color -= tex1 . Load ( int3 ( texelLoc , 0 ) ) ;" "color += tex1 . Load ( int3 ( texelLoc , 1 ) ) ;" -"color -= tex2ms . Load ( int3 ( texelLoc - 2.0 * texelLocDelta , 0 ) , int2 ( 1 , 1 ) ) ;" +"color -= tex2ms . Load ( int3 ( texelLoc - 2 . 0 * texelLocDelta , 0 ) , int2 ( 1 , 1 ) ) ;" "color += texArray0ms . Load ( int4 ( int3 ( texelLoc , element ) , 0 ) ) - texArray1 . Load ( int4 ( texelLoc , element , 3 ) ) ;" "return color ;" "}" diff --git a/tests/Advanced/texture2DMS-to-texture2D.txt b/tests/Advanced/texture2DMS-to-texture2D.txt index eb6ffd0..430107d 100644 --- a/tests/Advanced/texture2DMS-to-texture2D.txt +++ b/tests/Advanced/texture2DMS-to-texture2D.txt @@ -11,7 +11,7 @@ "color += :: PassSrg_m_texture0ms . Load ( texelLoc + texelLocDelta , sampleIndex + sampleIndex , int2 ( 0 , 2 ) ) ;" "color -= :: PassSrg_m_texture1 . Load ( int3 ( texelLoc , 0 ) ) ;" "color += :: PassSrg_m_texture1 . Load ( int3 ( texelLoc , 1 ) ) ;" -"color -= :: PassSrg_m_texture2ms . Load ( texelLoc - 2.0 * texelLocDelta , sampleIndex + 1 , int2 ( 1 , 1 ) ) ;" +"color -= :: PassSrg_m_texture2ms . Load ( texelLoc - 2 . 0 * texelLocDelta , sampleIndex + 1 , int2 ( 1 , 1 ) ) ;" "color += :: PassSrg_m_textureArray0ms . Load ( int3 ( texelLoc , element ) , sampleIndex / 2 ) - :: PassSrg_m_textureArray1 . Load ( int4 ( texelLoc , element , 3 ) ) ;" "return color ;" "}" @@ -62,7 +62,7 @@ "color += tex0ms . Load ( texelLoc + texelLocDelta , sampleIndex + sampleIndex , int2 ( 0 , 2 ) ) ;" "color -= tex1 . Load ( int3 ( texelLoc , 0 ) ) ;" "color += tex1 . Load ( int3 ( texelLoc , 1 ) ) ;" -"color -= tex2ms . Load ( texelLoc - 2.0 * texelLocDelta , sampleIndex + 1 , int2 ( 1 , 1 ) ) ;" +"color -= tex2ms . Load ( texelLoc - 2 . 0 * texelLocDelta , sampleIndex + 1 , int2 ( 1 , 1 ) ) ;" "color += texArray0ms . Load ( int3 ( texelLoc , element ) , sampleIndex / 2 ) - texArray1 . Load ( int4 ( texelLoc , element , 3 ) ) ;" "return color ;" "}" diff --git a/tests/Emission/RootSig.txt b/tests/Emission/RootSig.txt index df0cefe..60f22b7 100644 --- a/tests/Emission/RootSig.txt +++ b/tests/Emission/RootSig.txt @@ -6,31 +6,31 @@ "CBV ( b0 , space = 3" "CBV ( b0 , space = 5" "UAV ( u0 , space = 0" -"Sampler ( s0 , space = 0, numDescriptors = 1 )" -"Sampler ( s2 , space = 0, numDescriptors = 4 )" -"SRV ( t0 , space = 1, numDescriptors = 1 )" -"SRV ( t1 , space = 1, numDescriptors = 1 )" -"SRV ( t2 , space = 1, numDescriptors = 1 )" -"SRV ( t3 , space = 1, numDescriptors = 1 )" -"CBV ( b0 , space = 1, numDescriptors = 1 )" -"SRV ( t0 , space = 2, numDescriptors = 1 )" -"SRV ( t1 , space = 2, numDescriptors = 1 )" -"SRV ( t2 , space = 2, numDescriptors = 1 )" -"SRV ( t3 , space = 2, numDescriptors = 1 )" -"UAV ( u0 , space = 2, numDescriptors = 1 )" -"UAV ( u1 , space = 2, numDescriptors = 1 )" -"UAV ( u2 , space = 2, numDescriptors = 1 )" -"UAV ( u3 , space = 2, numDescriptors = 1 )" -"UAV ( u0 , space = 3, numDescriptors = 4 )" -"UAV ( u4 , space = 3, numDescriptors = 1 )" -"UAV ( u5 , space = 3, numDescriptors = 1 )" -"UAV ( u6 , space = 3, numDescriptors = 1 )" -"UAV ( u0 , space = 4, numDescriptors = 1 )" -"UAV ( u1 , space = 4, numDescriptors = 1 )" -"SRV ( t0 , space = 4, numDescriptors = 3 )" -"SRV ( t3 , space = 4, numDescriptors = 1 )" -"UAV ( u2 , space = 4, numDescriptors = 1 )" -"UAV ( u3 , space = 4, numDescriptors = 1 )" +"Sampler ( s0 , space = 0 , numDescriptors = 1 )" +"Sampler ( s2 , space = 0 , numDescriptors = 4 )" +"SRV ( t0 , space = 1 , numDescriptors = 1 )" +"SRV ( t1 , space = 1 , numDescriptors = 1 )" +"SRV ( t2 , space = 1 , numDescriptors = 1 )" +"SRV ( t3 , space = 1 , numDescriptors = 1 )" +"CBV ( b0 , space = 1 , numDescriptors = 1 )" +"SRV ( t0 , space = 2 , numDescriptors = 1 )" +"SRV ( t1 , space = 2 , numDescriptors = 1 )" +"SRV ( t2 , space = 2 , numDescriptors = 1 )" +"SRV ( t3 , space = 2 , numDescriptors = 1 )" +"UAV ( u0 , space = 2 , numDescriptors = 1 )" +"UAV ( u1 , space = 2 , numDescriptors = 1 )" +"UAV ( u2 , space = 2 , numDescriptors = 1 )" +"UAV ( u3 , space = 2 , numDescriptors = 1 )" +"UAV ( u0 , space = 3 , numDescriptors = 4 )" +"UAV ( u4 , space = 3 , numDescriptors = 1 )" +"UAV ( u5 , space = 3 , numDescriptors = 1 )" +"UAV ( u6 , space = 3 , numDescriptors = 1 )" +"UAV ( u0 , space = 4 , numDescriptors = 1 )" +"UAV ( u1 , space = 4 , numDescriptors = 1 )" +"SRV ( t0 , space = 4 , numDescriptors = 3 )" +"SRV ( t3 , space = 4 , numDescriptors = 1 )" +"UAV ( u2 , space = 4 , numDescriptors = 1 )" +"UAV ( u3 , space = 4 , numDescriptors = 1 )" "StaticSampler ( s1 , space = 0 " "StaticSampler ( s6 , space = 0 " diff --git a/tests/Emission/RootSigUnique.txt b/tests/Emission/RootSigUnique.txt index 02df084..baa5cfd 100644 --- a/tests/Emission/RootSigUnique.txt +++ b/tests/Emission/RootSigUnique.txt @@ -6,31 +6,31 @@ "CBV ( b7 , space = 3" "CBV ( b0 , space = 5" "UAV ( u0 , space = 0" -"Sampler ( s1 , space = 0, numDescriptors = 1 )" -"Sampler ( s3 , space = 0, numDescriptors = 4 )" -"SRV ( t0 , space = 1, numDescriptors = 1 )" -"SRV ( t1 , space = 1, numDescriptors = 1 )" -"SRV ( t2 , space = 1, numDescriptors = 1 )" -"SRV ( t3 , space = 1, numDescriptors = 1 )" -"CBV ( b4 , space = 1, numDescriptors = 1 )" -"SRV ( t0 , space = 2, numDescriptors = 1 )" -"SRV ( t1 , space = 2, numDescriptors = 1 )" -"SRV ( t2 , space = 2, numDescriptors = 1 )" -"SRV ( t3 , space = 2, numDescriptors = 1 )" -"UAV ( u4 , space = 2, numDescriptors = 1 )" -"UAV ( u5 , space = 2, numDescriptors = 1 )" -"UAV ( u6 , space = 2, numDescriptors = 1 )" -"UAV ( u7 , space = 2, numDescriptors = 1 )" -"UAV ( u0 , space = 3, numDescriptors = 4 )" -"UAV ( u4 , space = 3, numDescriptors = 1 )" -"UAV ( u5 , space = 3, numDescriptors = 1 )" -"UAV ( u6 , space = 3, numDescriptors = 1 )" -"UAV ( u0 , space = 4, numDescriptors = 1 )" -"UAV ( u1 , space = 4, numDescriptors = 1 )" -"SRV ( t2 , space = 4, numDescriptors = 3 )" -"SRV ( t5 , space = 4, numDescriptors = 1 )" -"UAV ( u6 , space = 4, numDescriptors = 1 )" -"UAV ( u7 , space = 4, numDescriptors = 1 )" +"Sampler ( s1 , space = 0 , numDescriptors = 1 )" +"Sampler ( s3 , space = 0 , numDescriptors = 4 )" +"SRV ( t0 , space = 1 , numDescriptors = 1 )" +"SRV ( t1 , space = 1 , numDescriptors = 1 )" +"SRV ( t2 , space = 1 , numDescriptors = 1 )" +"SRV ( t3 , space = 1 , numDescriptors = 1 )" +"CBV ( b4 , space = 1 , numDescriptors = 1 )" +"SRV ( t0 , space = 2 , numDescriptors = 1 )" +"SRV ( t1 , space = 2 , numDescriptors = 1 )" +"SRV ( t2 , space = 2 , numDescriptors = 1 )" +"SRV ( t3 , space = 2 , numDescriptors = 1 )" +"UAV ( u4 , space = 2 , numDescriptors = 1 )" +"UAV ( u5 , space = 2 , numDescriptors = 1 )" +"UAV ( u6 , space = 2 , numDescriptors = 1 )" +"UAV ( u7 , space = 2 , numDescriptors = 1 )" +"UAV ( u0 , space = 3 , numDescriptors = 4 )" +"UAV ( u4 , space = 3 , numDescriptors = 1 )" +"UAV ( u5 , space = 3 , numDescriptors = 1 )" +"UAV ( u6 , space = 3 , numDescriptors = 1 )" +"UAV ( u0 , space = 4 , numDescriptors = 1 )" +"UAV ( u1 , space = 4 , numDescriptors = 1 )" +"SRV ( t2 , space = 4 , numDescriptors = 3 )" +"SRV ( t5 , space = 4 , numDescriptors = 1 )" +"UAV ( u6 , space = 4 , numDescriptors = 1 )" +"UAV ( u7 , space = 4 , numDescriptors = 1 )" "StaticSampler ( s2 , space = 0 " "StaticSampler ( s7 , space = 0 " diff --git a/tests/Emission/attribute-specifiers-azsl.txt b/tests/Emission/attribute-specifiers-azsl.txt index 0925f2d..99bd13a 100644 --- a/tests/Emission/attribute-specifiers-azsl.txt +++ b/tests/Emission/attribute-specifiers-azsl.txt @@ -6,7 +6,7 @@ "define PLATFORM DX12 " "sometag" "struct SRG_SRGConstantsStruct" -"range ( 0, 10 ) " +"range ( 0 , 10 ) " "static const int a = a_OPTION_DEF ;" -"range ( 0, 10 ) " +"range ( 0 , 10 ) " "static const int a = GetShaderVariantKey_a ( ) ; " diff --git a/tests/Emission/complete-cs.txt b/tests/Emission/complete-cs.txt index 7df1e32..eb24742 100644 --- a/tests/Emission/complete-cs.txt +++ b/tests/Emission/complete-cs.txt @@ -1,5 +1,5 @@ "groupshared uint gs_GpShared [ 1024 ] " -" [ numthreads ( 1, 1, 1 ) ] " +" [ numthreads ( 1 , 1 , 1 ) ] " " InterlockedAdd ( gs_GpShared [ thread_id . x ] , 1 ) " " InterlockedAdd ( gs_GpShared [ thread_id . x ] , 1 , origVal ) " " InterlockedOr ( gs_GpShared [ thread_id . x ] , 1 ) " diff --git a/tests/Emission/default-argumentvalue-complex.txt b/tests/Emission/default-argumentvalue-complex.txt index 0855252..85921e8 100644 --- a/tests/Emission/default-argumentvalue-complex.txt +++ b/tests/Emission/default-argumentvalue-complex.txt @@ -1,14 +1,14 @@ "void f ( float , int ) ;" "void f ( float , int )" -"void g ( float = 3. f , int ) ;" +"void g ( float = 3 . f , int ) ;" "void g ( float , int )" "void h ( float , int = 2 ) ; " "void h ( float , int ) " -"void i ( float = ( h ( 0 , 0 ) , 0.2 f ) , int = 2 ) ;" +"void i ( float = ( h ( 0 , 0 ) , 0 . 2 f ) , int = 2 ) ;" "void i ( float , int )" "void j ( float , int = 4 ) ;" "void j ( float , int )" "void k ( float , int i = 5 )" "void l ( float , int = 6 ) ;" -"void m ( float = 0.3 f , int = 6 ) ;" +"void m ( float = 0 . 3 f , int = 6 ) ;" "void m ( float f , int i )" diff --git a/tests/Emission/func-qualifiers.azsl b/tests/Emission/func-qualifiers.azsl new file mode 100644 index 0000000..3ece4f5 --- /dev/null +++ b/tests/Emission/func-qualifiers.azsl @@ -0,0 +1,6 @@ +inline volatile payload static unorm const unsigned int t(); + +center centroid unorm const unsigned int t() +{ + return 0; +} diff --git a/tests/Emission/func-qualifiers.txt b/tests/Emission/func-qualifiers.txt new file mode 100644 index 0000000..bf4ea5c --- /dev/null +++ b/tests/Emission/func-qualifiers.txt @@ -0,0 +1,2 @@ +"static inline const volatile unsigned center centroid unorm payload int t ( ) ;" +"const volatile unsigned center centroid unorm payload int t ( )" diff --git a/tests/Emission/gmem.txt b/tests/Emission/gmem.txt index b0187a8..a67e4d8 100644 --- a/tests/Emission/gmem.txt +++ b/tests/Emission/gmem.txt @@ -8,7 +8,7 @@ "# define SubpassInput SubpassInputStub" "# ifdef AZ_USE_SUBPASSINPUT" "[[ vk :: input_attachment_index ( 0 ) ]]" -"[[ vk :: binding ( 0, 0 ) ]]" +"[[ vk :: binding ( 0 , 0 ) ]]" "# else" "SubpassInput SRG_m_sub ;" "MainPS" \ No newline at end of file diff --git a/tests/Emission/mesh-shader-microsoft-sample.azsl b/tests/Emission/mesh-shader-microsoft-sample.azsl new file mode 100644 index 0000000..a015c5e --- /dev/null +++ b/tests/Emission/mesh-shader-microsoft-sample.azsl @@ -0,0 +1,196 @@ +//********************************************************* +// +// Copyright (c) Microsoft. All rights reserved. +// This code is licensed under the MIT License (MIT). +// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF +// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY +// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR +// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. +// +//********************************************************* + +struct Instance +{ + float4x4 World; + float4x4 WorldInvTrans; + float Scale; + uint Flags; +}; + +struct Constants +{ + float4x4 View; + float4x4 ViewProj; + float4 Planes[6]; + + float3 ViewPosition; + uint HighlightedIndex; + + float3 CullViewPosition; + uint SelectedIndex; + + uint DrawMeshlets; +}; + +struct MeshInfo +{ + uint IndexSize; + uint MeshletCount; + + uint LastMeshletVertCount; + uint LastMeshletPrimCount; +}; + +struct Meshlet +{ + uint VertCount; + uint VertOffset; + uint PrimCount; + uint PrimOffset; +}; + +struct CullData +{ + float4 BoundingSphere; + uint NormalCone; + float ApexOffset; +}; + +bool IsConeDegenerate(CullData c) +{ + return (c.NormalCone >> 24) == 0xff; +} + +float4 UnpackCone(uint packed) +{ + float4 v; + v.x = float((packed >> 0) & 0xFF); + v.y = float((packed >> 8) & 0xFF); + v.z = float((packed >> 16) & 0xFF); + v.w = float((packed >> 24) & 0xFF); + + v = v / 255.0; + v.xyz = v.xyz * 2.0 - 1.0; + + return v; +} + +struct Vertex +{ + float3 Position; + float3 Normal; +}; + +struct VertexOut +{ + float4 PositionHS : SV_Position; + float3 PositionVS : POSITION0; + float3 Normal : NORMAL0; + uint MeshletIndex : COLOR0; +}; + +struct Payload +{ + uint MeshletIndices[ 32 ]; +}; + +ShaderResourceGroupSemantic slot1 +{ + FrequencyId = 1; +}; + +ShaderResourceGroup u_ : slot1 +{ + ConstantBuffer GConstants; + ConstantBuffer GMeshInfo; + ConstantBuffer GInstance; + StructuredBuffer Vertices; + StructuredBuffer Meshlets; + ByteAddressBuffer UniqueVertexIndices; + StructuredBuffer PrimitiveIndices; + StructuredBuffer MeshletCullData; +} + +float3 RotateVector(float3 v0, float3 axis, float angle) +{ + float cs = cos(angle); + return cs * v0 + sin(angle) * cross(axis, v0) + (1 - cs) * dot(axis, v0) * axis; +} + +uint3 UnpackPrimitive(uint primitive) { return uint3(primitive & 0x3FF, (primitive >> 10) & 0x3FF, (primitive >> 20) & 0x3FF); } + + +uint GetVertexIndex(Meshlet m, uint localIndex) +{ + localIndex = m.VertOffset + localIndex; + + if (u_::GMeshInfo.IndexSize == 4) + { + return u_::UniqueVertexIndices.Load(localIndex * 4); + } + else + { + + uint wordOffset = (localIndex & 0x1); + uint byteOffset = (localIndex / 2) * 4; + + + uint indexPair = u_::UniqueVertexIndices.Load(byteOffset); + uint index = (indexPair >> (wordOffset * 16)) & 0xffff; + + return index; + } +} + +uint3 GetPrimitive(Meshlet m, uint index) +{ + return UnpackPrimitive(u_::PrimitiveIndices[m.PrimOffset + index]); +} + +VertexOut GetVertexAttributes(uint meshletIndex, uint vertexIndex) +{ + Vertex v = u_::Vertices[vertexIndex]; + + float4 positionWS = mul(float4(v.Position, 1), u_::GInstance.World); + + VertexOut vout; + vout.PositionVS = mul(positionWS, u_::GConstants.View).xyz; + vout.PositionHS = mul(positionWS, u_::GConstants.ViewProj); + vout.Normal = mul(float4(v.Normal, 0), u_::GInstance.WorldInvTrans).xyz; + vout.MeshletIndex = meshletIndex; + + return vout; +} + + +[RootSignature( "CBV(b0), CBV(b1), CBV(b2), SRV(t0), SRV(t1), SRV(t2), SRV(t3), SRV(t4)" )] +[NumThreads(128, 1, 1)] +[OutputTopology("triangle")] +void main( + uint dtid : SV_DispatchThreadID, + uint gtid : SV_GroupThreadID, + uint gid : SV_GroupID, + in payload Payload a_payload, + out vertices VertexOut verts[64], + out indices uint3 tris[126] +) +{ + uint meshletIndex = a_payload.MeshletIndices[gid]; + + if (meshletIndex >= u_::GMeshInfo.MeshletCount) + return; + + Meshlet m = u_::Meshlets[meshletIndex]; + SetMeshOutputCounts(m.VertCount, m.PrimCount); + + if (gtid < m.VertCount) + { + uint vertexIndex = GetVertexIndex(m, gtid); + verts[gtid] = GetVertexAttributes(meshletIndex, vertexIndex); + } + + if (gtid < m.PrimCount) + { + tris[gtid] = GetPrimitive(m, gtid); + } +} diff --git a/tests/Emission/mesh-shader-microsoft-sample.txt b/tests/Emission/mesh-shader-microsoft-sample.txt new file mode 100644 index 0000000..feb055e --- /dev/null +++ b/tests/Emission/mesh-shader-microsoft-sample.txt @@ -0,0 +1,13 @@ +"struct Instance" +"float4x4 World ;" +"struct Constants" +"float4 Planes [ 6 ] ;" +"struct MeshInfo" +"struct Meshlet" +"bool IsConeDegenerate ( :: CullData c )" +"StructuredBuffer < Vertex > u__Vertices : register ( t0 , space0 ) ;" +"StructuredBuffer < Meshlet > u__Meshlets : register ( t1 , space0 ) ;" +"ConstantBuffer < :: MeshInfo > u__GMeshInfo : register ( b1 , space0 ) ;" +"[ NumThreads ( 128 , 1 , 1 ) ]" +"[ OutputTopology ( " triangle " ) ]" +" void main ( uint dtid : SV_DispatchThreadID , uint gtid : SV_GroupThreadID , uint gid : SV_GroupID , in payload :: Payload a_payload , out vertices :: VertexOut verts [ 64 ] , out indices uint3 tris [ 126 ] )" diff --git a/tests/Emission/output-attribute.azsl b/tests/Emission/output-attribute.azsl new file mode 100644 index 0000000..0d1fe23 --- /dev/null +++ b/tests/Emission/output-attribute.azsl @@ -0,0 +1 @@ +[[global::output_format(0, "R32")]] diff --git a/tests/Emission/output-attribute.txt b/tests/Emission/output-attribute.txt new file mode 100644 index 0000000..4ba1aec --- /dev/null +++ b/tests/Emission/output-attribute.txt @@ -0,0 +1 @@ +" # pragma OutputFormatHint ( target 0 R32 ) " diff --git a/tests/Emission/overloads.txt b/tests/Emission/overloads.txt index 3b26dcc..fc44170 100644 --- a/tests/Emission/overloads.txt +++ b/tests/Emission/overloads.txt @@ -2,6 +2,6 @@ "float MySRG_Luminosity ( float )" "void MySRG_DoStuff ( )" # here is the important part, we can see that the unresolved call is translated anyway. -"half x = :: MySRG_Luminosity ( 0.5 h ) ;" +"half x = :: MySRG_Luminosity ( 0 . 5 h ) ;" "void MySRG2_DoStuff ( )" -"half x = :: MySRG_Luminosity ( 0.5 ) ;" +"half x = :: MySRG_Luminosity ( 0 . 5 ) ;" diff --git a/tests/Emission/qualified-typealias.azsl b/tests/Emission/qualified-typealias.azsl new file mode 100644 index 0000000..076cc2e --- /dev/null +++ b/tests/Emission/qualified-typealias.azsl @@ -0,0 +1 @@ +typealias CUD = const unsigned dword; \ No newline at end of file diff --git a/tests/Emission/qualified-typealias.txt b/tests/Emission/qualified-typealias.txt new file mode 100644 index 0000000..da43843 --- /dev/null +++ b/tests/Emission/qualified-typealias.txt @@ -0,0 +1 @@ +" typedef const unsigned dword CUD ; " \ No newline at end of file diff --git a/tests/Emission/ray-tracing-hello-world.azsl b/tests/Emission/ray-tracing-hello-world.azsl index e996254..bf90268 100644 --- a/tests/Emission/ray-tracing-hello-world.azsl +++ b/tests/Emission/ray-tracing-hello-world.azsl @@ -95,11 +95,11 @@ void MyRaygenShader() // TMin should be kept small to prevent missing geometry at close contact areas. ray.TMin = 0.001; ray.TMax = 10000.0; - RayPayload payload = { float4(0, 0, 0, 0) }; - TraceRay(RaySRG::Scene, RAY_FLAG_CULL_BACK_FACING_TRIANGLES, ~0, 0, 1, 0, ray, payload); + RayPayload Payload = { float4(0, 0, 0, 0) }; + TraceRay(RaySRG::Scene, RAY_FLAG_CULL_BACK_FACING_TRIANGLES, ~0, 0, 1, 0, ray, Payload); // Write the raytraced color to the output texture. - RaySRG::RenderTarget[DispatchRaysIndex().xy] = payload.color; + RaySRG::RenderTarget[DispatchRaysIndex().xy] = Payload.color; } else { @@ -109,14 +109,14 @@ void MyRaygenShader() } [shader("closesthit")] -void MyClosestHitShader(inout RayPayload payload, in MyAttributes attr) +void MyClosestHitShader(inout RayPayload a_payload, in MyAttributes attr) { float3 barycentrics = float3(1 - attr.barycentrics.x - attr.barycentrics.y, attr.barycentrics.x, attr.barycentrics.y); - payload.color = float4(barycentrics, 1); + a_payload.color = float4(barycentrics, 1); } [shader("miss")] -void MyMissShader(inout RayPayload payload) +void MyMissShader(inout RayPayload a_payload) { - payload.color = float4(0, 0, 0, 1); + a_payload.color = float4(0, 0, 0, 1); } diff --git a/tests/Emission/ray-tracing-hello-world.txt b/tests/Emission/ray-tracing-hello-world.txt index 6e66e4b..70a07a4 100644 --- a/tests/Emission/ray-tracing-hello-world.txt +++ b/tests/Emission/ray-tracing-hello-world.txt @@ -1,4 +1,5 @@ "RaytracingAccelerationStructure RaySRG_Scene : register ( t0 , space0 ) ;" "RWTexture2D < float4 > RaySRG_RenderTarget : register ( u0 , space0 ) ;" "ConstantBuffer < :: RayGenConstantBuffer > RaySRG_g_rayGenCB : register ( b0 , space0 ) ;" - +"[ shader ( " miss " ) ]" +"void MyMissShader ( inout :: RayPayload a_payload )" diff --git a/tests/Emission/ray-tracing-procedural-geometry.azsl b/tests/Emission/ray-tracing-procedural-geometry.azsl index a09caae..3ab9927 100644 --- a/tests/Emission/ray-tracing-procedural-geometry.azsl +++ b/tests/Emission/ray-tracing-procedural-geometry.azsl @@ -180,31 +180,27 @@ bool IsInRange(in float val, in float min, in float max) return (val >= min && val <= max); } - -// TODO Support the static keyword -// Can functions *not* be inlined? -// static -uint3 Load3x16BitIndices(uint offsetBytes, ByteAddressBuffer Indices) +static uint3 Load3x16BitIndices(uint offsetBytes, ByteAddressBuffer Indices) { - uint3 indices; + uint3 indices_; const uint dwordAlignedOffset = offsetBytes & ~3; const uint2 four16BitIndices = Indices.Load2(dwordAlignedOffset); if (dwordAlignedOffset == offsetBytes) { - indices.x = four16BitIndices.x & 0xffff; - indices.y = (four16BitIndices.x >> 16) & 0xffff; - indices.z = four16BitIndices.y & 0xffff; + indices_.x = four16BitIndices.x & 0xffff; + indices_.y = (four16BitIndices.x >> 16) & 0xffff; + indices_.z = four16BitIndices.y & 0xffff; } else { - indices.x = (four16BitIndices.x >> 16) & 0xffff; - indices.y = four16BitIndices.y & 0xffff; - indices.z = (four16BitIndices.y >> 16) & 0xffff; + indices_.x = (four16BitIndices.x >> 16) & 0xffff; + indices_.y = four16BitIndices.y & 0xffff; + indices_.z = (four16BitIndices.y >> 16) & 0xffff; } - return indices; + return indices_; } @@ -323,17 +319,17 @@ bool SolveQuadraticEqn(float a, float b, float c, out float x0, out float x1) } -float3 CalculateNormalForARaySphereHit(in Ray ray, in float thit, float3 center) +float3 CalculateNormalForARaySphereHit(in Ray ray, in float thit, float3 a_center) { float3 hitPosition = ray.origin + thit * ray.direction; - return normalize(hitPosition - center); + return normalize(hitPosition - a_center); } -bool SolveRaySphereIntersectionEquation(in Ray ray, out float tmin, out float tmax, in float3 center, in float radius) +bool SolveRaySphereIntersectionEquation(in Ray ray, out float tmin, out float tmax, in float3 a_center, in float radius) { - float3 L = ray.origin - center; + float3 L = ray.origin - a_center; float a = dot(ray.direction, ray.direction); float b = 2 * dot(ray.direction, L); float c = dot(L, L) - radius * radius; @@ -341,11 +337,11 @@ bool SolveRaySphereIntersectionEquation(in Ray ray, out float tmin, out float tm } -bool RaySphereIntersectionTest(in Ray ray, out float thit, out float tmax, in ProceduralPrimitiveAttributes attr, in float3 center = float3(0, 0, 0), in float radius = 1) +bool RaySphereIntersectionTest(in Ray ray, out float thit, out float tmax, in ProceduralPrimitiveAttributes attr, in float3 a_center = float3(0, 0, 0), in float radius = 1) { float t0, t1; - if (!SolveRaySphereIntersectionEquation(ray, t0, t1, center, radius)) return false; + if (!SolveRaySphereIntersectionEquation(ray, t0, t1, a_center, radius)) return false; tmax = t1; if (t0 < RayTMin()) @@ -353,7 +349,7 @@ bool RaySphereIntersectionTest(in Ray ray, out float thit, out float tmax, in Pr if (t1 < RayTMin()) return false; - attr.normal = CalculateNormalForARaySphereHit(ray, t1, center); + attr.normal = CalculateNormalForARaySphereHit(ray, t1, a_center); if (IsAValidHit(ray, t1, attr.normal)) { thit = t1; @@ -362,14 +358,14 @@ bool RaySphereIntersectionTest(in Ray ray, out float thit, out float tmax, in Pr } else { - attr.normal = CalculateNormalForARaySphereHit(ray, t0, center); + attr.normal = CalculateNormalForARaySphereHit(ray, t0, a_center); if (IsAValidHit(ray, t0, attr.normal)) { thit = t0; return true; } - attr.normal = CalculateNormalForARaySphereHit(ray, t1, center); + attr.normal = CalculateNormalForARaySphereHit(ray, t1, a_center); if (IsAValidHit(ray, t1, attr.normal)) { thit = t1; @@ -381,11 +377,11 @@ bool RaySphereIntersectionTest(in Ray ray, out float thit, out float tmax, in Pr -bool RaySolidSphereIntersectionTest(in Ray ray, out float thit, out float tmax, in float3 center = float3(0, 0, 0), in float radius = 1) +bool RaySolidSphereIntersectionTest(in Ray ray, out float thit, out float tmax, in float3 a_center = float3(0, 0, 0), in float radius = 1) { float t0, t1; - if (!SolveRaySphereIntersectionEquation(ray, t0, t1, center, radius)) + if (!SolveRaySphereIntersectionEquation(ray, t0, t1, a_center, radius)) return false; @@ -483,7 +479,7 @@ bool RayAABBIntersectionTest(Ray ray, float3 aabb[2], out float thit, out Proced struct Metaball { - float3 center; + float3 m_center; float radius; }; @@ -492,7 +488,7 @@ struct Metaball float CalculateMetaballPotential(in float3 position, in Metaball blob, out float distance) { - distance = length(position - blob.center); + distance = length(position - blob.m_center); if (distance <= blob.radius) { @@ -558,7 +554,7 @@ void InitializeAnimatedMetaballs(out Metaball blobs[3], in float elapsedTime, in float tAnimate = CalculateAnimationInterpolant(elapsedTime, cycleDuration); for (uint j = 0; j < 3; j++) { - blobs[j].center = lerp(keyFrameCenters[j][0], keyFrameCenters[j][1], tAnimate); + blobs[j].m_center = lerp(keyFrameCenters[j][0], keyFrameCenters[j][1], tAnimate); blobs[j].radius = radii[j]; } } @@ -575,7 +571,7 @@ void FindIntersectingMetaballs(in Ray ray, out float tmin, out float tmax, inout for (uint i = 0; i < 3; i++) { float _thit, _tmax; - if (RaySolidSphereIntersectionTest(ray, _thit, _tmax, blobs[i].center, blobs[i].radius)) + if (RaySolidSphereIntersectionTest(ray, _thit, _tmax, blobs[i].m_center, blobs[i].radius)) { tmin = min(_thit, tmin); tmax = max(_tmax, tmax); @@ -1201,10 +1197,10 @@ void MyClosestHitShader_Triangle(inout RayPayload rayPayload, in BuiltInTriangle uint baseIndex = PrimitiveIndex() * triangleIndexStride; - const uint3 indices = Load3x16BitIndices(baseIndex, g_indices); + const uint3 indices_ = Load3x16BitIndices(baseIndex, g_indices); - float3 triangleNormal = g_vertices[indices[0]].normal; + float3 triangleNormal = g_vertices[indices_[0]].normal; diff --git a/tests/Emission/ray-tracing-procedural-geometry.txt b/tests/Emission/ray-tracing-procedural-geometry.txt index 96ed400..54b2e5c 100644 --- a/tests/Emission/ray-tracing-procedural-geometry.txt +++ b/tests/Emission/ray-tracing-procedural-geometry.txt @@ -1,3 +1,6 @@ +"enum class SignedDistancePrimitive_Enum" +"void swap ( inout float a , inout float b )" +"static uint3 Load3x16BitIndices ( uint offsetBytes , ByteAddressBuffer Indices )" "RaytracingAccelerationStructure RaySRG_g_scene : register ( t0 , space0 ) ;" "RWTexture2D < float4 > RaySRG_g_renderTarget : register ( u0 , space0 ) ;" "ByteAddressBuffer RaySRG_g_indices : register ( t1 , space0 ) ;" diff --git a/tests/Emission/ray-tracing-simple-lighting.azsl b/tests/Emission/ray-tracing-simple-lighting.azsl index 2eb56d7..eb7a22f 100644 --- a/tests/Emission/ray-tracing-simple-lighting.azsl +++ b/tests/Emission/ray-tracing-simple-lighting.azsl @@ -78,7 +78,7 @@ ShaderResourceGroup RaySRG : RaySemantic // Load three 16 bit indices from a byte addressed buffer. uint3 Load3x16BitIndices(uint offsetBytes) { - uint3 indices; + uint3 indices_; // ByteAdressBuffer loads must be aligned at a 4 byte boundary. // Since we need to read three 16 bit indices: { 0, 1, 2 } @@ -93,18 +93,18 @@ uint3 Load3x16BitIndices(uint offsetBytes) // Aligned: { 0 1 | 2 - } => retrieve first three 16bit indices if (dwordAlignedOffset == offsetBytes) { - indices.x = four16BitIndices.x & 0xffff; - indices.y = (four16BitIndices.x >> 16) & 0xffff; - indices.z = four16BitIndices.y & 0xffff; + indices_.x = four16BitIndices.x & 0xffff; + indices_.y = (four16BitIndices.x >> 16) & 0xffff; + indices_.z = four16BitIndices.y & 0xffff; } else // Not aligned: { - 0 | 1 2 } => retrieve last three 16bit indices { - indices.x = (four16BitIndices.x >> 16) & 0xffff; - indices.y = four16BitIndices.y & 0xffff; - indices.z = (four16BitIndices.y >> 16) & 0xffff; + indices_.x = (four16BitIndices.x >> 16) & 0xffff; + indices_.y = four16BitIndices.y & 0xffff; + indices_.z = (four16BitIndices.y >> 16) & 0xffff; } - return indices; + return indices_; } // [Atom-942] TODO support typedef @@ -176,15 +176,15 @@ void MyRaygenShader() // TMin should be kept small to prevent missing geometry at close contact areas. ray.TMin = 0.001; ray.TMax = 10000.0; - RayPayload payload = { float4(0, 0, 0, 0) }; - TraceRay(RaySRG::Scene, RAY_FLAG_CULL_BACK_FACING_TRIANGLES, ~0, 0, 1, 0, ray, payload); + RayPayload payload_ = { float4(0, 0, 0, 0) }; + TraceRay(RaySRG::Scene, RAY_FLAG_CULL_BACK_FACING_TRIANGLES, ~0, 0, 1, 0, ray, payload_); // Write the raytraced color to the output texture. - RaySRG::RenderTarget[DispatchRaysIndex().xy] = payload.color; + RaySRG::RenderTarget[DispatchRaysIndex().xy] = payload_.color; } [shader("closesthit")] -void MyClosestHitShader(inout RayPayload payload, in BuiltInTriangleIntersectionAttributes attr) +void MyClosestHitShader(inout RayPayload a_payload, in BuiltInTriangleIntersectionAttributes attr) { float3 hitPosition = HitWorldPosition(); @@ -195,13 +195,13 @@ void MyClosestHitShader(inout RayPayload payload, in BuiltInTriangleIntersection uint baseIndex = PrimitiveIndex() * triangleIndexStride; // Load up 3 16 bit indices for the triangle. - const uint3 indices = Load3x16BitIndices(baseIndex); + const uint3 indices_ = Load3x16BitIndices(baseIndex); // Retrieve corresponding vertex normals for the triangle vertices. float3 vertexNormals[3] = { - RaySRG::Vertices[indices[0]].normal, - RaySRG::Vertices[indices[1]].normal, - RaySRG::Vertices[indices[2]].normal + RaySRG::Vertices[indices_[0]].normal, + RaySRG::Vertices[indices_[1]].normal, + RaySRG::Vertices[indices_[2]].normal }; // Compute the triangle's normal. @@ -212,12 +212,12 @@ void MyClosestHitShader(inout RayPayload payload, in BuiltInTriangleIntersection float4 diffuseColor = CalculateDiffuseLighting(hitPosition, triangleNormal); float4 color = RaySRG::g_sceneCB.lightAmbientColor + diffuseColor; - payload.color = color; + a_payload.color = color; } [shader("miss")] -void MyMissShader(inout RayPayload payload) +void MyMissShader(inout RayPayload a_payload) { float4 background = float4(0.0f, 0.2f, 0.4f, 1.0f); - payload.color = background; + a_payload.color = background; } diff --git a/tests/Semantic/16bit-scalar.azsl b/tests/Semantic/16bit-scalar.azsl new file mode 100644 index 0000000..47b0ba0 --- /dev/null +++ b/tests/Semantic/16bit-scalar.azsl @@ -0,0 +1 @@ +static unsigned int16_t g; \ No newline at end of file diff --git a/tests/Semantic/AsError/constantbuffer-forbidden-context-arg.azsl b/tests/Semantic/AsError/constantbuffer-forbidden-context-arg.azsl deleted file mode 100644 index cb7034a..0000000 --- a/tests/Semantic/AsError/constantbuffer-forbidden-context-arg.azsl +++ /dev/null @@ -1,4 +0,0 @@ -struct S{}; -void func(ConstantBuffer arg) // #EC 512 'impossible to use ConstantBuffer in that context' -{ -} diff --git a/tests/Semantic/AsError/constantbuffer-forbidden-context-funcret.azsl b/tests/Semantic/AsError/constantbuffer-forbidden-context-funcret.azsl deleted file mode 100644 index 9a8fcae..0000000 --- a/tests/Semantic/AsError/constantbuffer-forbidden-context-funcret.azsl +++ /dev/null @@ -1 +0,0 @@ -ConstantBuffer func(); // #EC 512 impossible to use ConstantBuffer in that context \ No newline at end of file diff --git a/tests/Semantic/AsError/constantbuffer-forbidden-context-var.azsl b/tests/Semantic/AsError/constantbuffer-forbidden-context-var.azsl deleted file mode 100644 index d7c5d1a..0000000 --- a/tests/Semantic/AsError/constantbuffer-forbidden-context-var.azsl +++ /dev/null @@ -1,5 +0,0 @@ -struct S{}; -void func() -{ - ConstantBuffer var; // #EC 513 'ConstantBuffer variable declarations may only appear in ShaderResourceGroup' -} diff --git a/tests/Semantic/AsError/disallowed-function-modifiers.azsl b/tests/Semantic/AsError/disallowed-function-modifiers.azsl index 19d22c7..02c7106 100644 --- a/tests/Semantic/AsError/disallowed-function-modifiers.azsl +++ b/tests/Semantic/AsError/disallowed-function-modifiers.azsl @@ -1,21 +1,3 @@ -const void FuncC(); -row_major void FuncRM(); -column_major void FuncCM(); -extern void FuncE(); -option void FuncO(); -precise void FuncP(); -shared void FuncS(); -groupshared void FuncGS(); -uniform void FuncU(); -volatile inline void FuncV(); -linear void FuncL(); -centroid void FuncCD(); -nointerpolation void FuncNI(); -noperspective void FuncNP(); -sample void FuncSpl(); -in void FuncIn(); -out void FuncOut(); -inout void FuncIO(); +option void Func1(); // #EC 33 -// Semantic Error 33: line 1 ' Functions can only have the static and inline modifiers!' -// #EC 33 \ No newline at end of file +// Semantic Error 33: ' Functions can't have option or rootconstant qualified return types. diff --git a/tests/Semantic/AsError/disallowed-function-modifiers2.azsl b/tests/Semantic/AsError/disallowed-function-modifiers2.azsl new file mode 100644 index 0000000..ee506cf --- /dev/null +++ b/tests/Semantic/AsError/disallowed-function-modifiers2.azsl @@ -0,0 +1,3 @@ +rootconstant void Func2(); // #EC 33 + +// Semantic Error 33: line 1 ' Functions can't have option or rootconstant qualified return types. diff --git a/tests/Semantic/AsError/disallowed-function-param-qualifier.azsl b/tests/Semantic/AsError/disallowed-function-param-qualifier.azsl new file mode 100644 index 0000000..2d0ec62 --- /dev/null +++ b/tests/Semantic/AsError/disallowed-function-param-qualifier.azsl @@ -0,0 +1,2 @@ +void Func1(option int a, rootconstant float b); // #EC11 +// Semantic error 11: rootconstant or option qualifier is only accepted at top-level scope diff --git a/tests/Semantic/AsError/same-varname-as-type.azsl b/tests/Semantic/AsError/same-varname-as-type.azsl new file mode 100644 index 0000000..88158d5 --- /dev/null +++ b/tests/Semantic/AsError/same-varname-as-type.azsl @@ -0,0 +1,5 @@ +struct A{}; + +static A A; // #EC32 + +// Semantic error 32: redeclaration of /A with a different kind: Variable but was Struct, first seen line 1 diff --git a/tests/Semantic/function-signatures.azsl b/tests/Semantic/function-signatures.azsl new file mode 100644 index 0000000..99e79a8 --- /dev/null +++ b/tests/Semantic/function-signatures.azsl @@ -0,0 +1,49 @@ +struct MyT{}; + +int func1(); +void func2(); +float func3(int arg1); +snorm float func4(int); +MyT func5(); +MyT func6(MyT); +MyT func7(MyT arg1); +float4x4 func8(unorm double arg1, float3x3 arg2, int, bool); +uint64_t func9(int32_t arg1, int64_t arg2, uint32_t arg3, uint64_t arg4); +bool func10(in out int); +bool func11(in out int i); +bool func12(inout int i); +float4 func13() : SV_Target0; +float4 func14(in float2 : TEXCOORD0) : SV_Target0; +float4 func15(in float2 uv : TEXCOORD0) : SV_Target0; + +[shader( "raygeneration" )] +void func16(); + +struct TriVertex{ float3 p : POSITION; }; +float4 main( TriVertex in_ ) : SV_POSITION {return 0;} + +struct P { float3 c; }; +struct Attributes { float2 bary; }; +[shader( "closesthit" )] +void closest(inout P a_payload : SV_RayPayload, + Attributes attrib); + +[shader("anyhit")] +void closest(inout P a_payload : SV_RayPayload, + in BuiltInTriangleIntersectionAttributes myAttr); + +struct Payload {}; +struct VertexOut {}; + +[RootSignature( "CBV(b0), CBV(b1), CBV(b2), SRV(t0), SRV(t1), SRV(t2), SRV(t3), SRV(t4)" )] +[NumThreads(128, 1, 1)] +[OutputTopology("triangle")] +void main2( + uint dtid : SV_DispatchThreadID, + uint gtid : SV_GroupThreadID, + uint gid : SV_GroupID, + in payload Payload a_payload, + out vertices VertexOut verts[64], + out indices uint3 tris[126] +) +{} \ No newline at end of file diff --git a/tests/Syntax/attribute-specifiers-sequence-closure.azsl b/tests/Syntax/attribute-specifiers-sequence-closure.azsl index 55cf5b9..e091596 100644 --- a/tests/Syntax/attribute-specifiers-sequence-closure.azsl +++ b/tests/Syntax/attribute-specifiers-sequence-closure.azsl @@ -10,14 +10,14 @@ [[global::output_format(7, "R32G32B32A32")]] struct V { float3 normal; }; -static const V vertices[8]; -static const uint3 indices; +static const V Vertices[8]; +static const uint3 Indices; void F() { float3 vertexNormals[3] = { - Vertices[indices[0]].normal, - Vertices[indices[1]].normal, - Vertices[indices[2]].normal + Vertices[Indices[0]].normal, + Vertices[Indices[1]].normal, + Vertices[Indices[2]].normal }; } diff --git a/tests/Syntax/function-signatures.azsl b/tests/Syntax/function-signatures.azsl index 2809645..b2a66d3 100644 --- a/tests/Syntax/function-signatures.azsl +++ b/tests/Syntax/function-signatures.azsl @@ -1,9 +1,18 @@ int func1(); void func2(); float func3(int arg1); -float func4(int); +snorm float func4(int); MyT func5(); MyT func6(MyT); MyT func7(MyT arg1); -float4x4 func8(double arg1, float3x3 arg2, int, bool); +float4x4 func8(unorm double arg1, float3x3 arg2, int, bool); uint64_t func9(int32_t arg1, int64_t arg2, uint32_t arg3, uint64_t arg4); +bool func10(in out int); +bool func11(in out int i); +bool func12(inout int i); +float4 func13() : SV_Target0; +float4 func14(in float2 : TEXCOORD0) : SV_Target0; +float4 func15(in float2 uv : TEXCOORD0) : SV_Target0; +[shader( "raygeneration" )] +void func16(); +float4 main( TriVertex in_ ) : SV_POSITION; \ No newline at end of file diff --git a/tests/testfuncs.py b/tests/testfuncs.py index 0c3f551..500180a 100644 --- a/tests/testfuncs.py +++ b/tests/testfuncs.py @@ -156,7 +156,7 @@ def dumpKeywords(compilerPath): return (None, False) return (tokens, code == 0) -def verifyAllPredicates(predicates, j, silent=True): +def verifyAllPredicates(predicates, code, silent=True): import clr import pprint import inspect @@ -176,5 +176,5 @@ def verifyAllPredicates(predicates, j, silent=True): if not allok and not silent: print ("dump as parsed:") pp = pprint.PrettyPrinter(indent=2, width=160) - pp.pprint(j) + pp.pprint(code) return allok diff --git a/tests/testhelper.py b/tests/testhelper.py index 90e0436..ebefb0e 100644 --- a/tests/testhelper.py +++ b/tests/testhelper.py @@ -43,7 +43,7 @@ def found(needle, haystack): return True return False -# pars the argument mentioned in the shader source file Ex : Cmdargs: --namespace=vk or Cmdargs: ['--unique-idx', '--root-sig', '--root-const', '0'] +# parse the argument mentioned in the shader source file Ex : Cmdargs: --namespace=vk or Cmdargs: ['--unique-idx', '--root-sig', '--root-const', '0'] def parse_strlist(sl): clean = re.sub("[\[\],\s]","",sl) splitted = re.split("[\'\"]",clean) @@ -59,7 +59,7 @@ def verifyEmissionPattern(azslFile, patternsFileName, compilerPath, silent, argL print ("Pattern file not found: " + patternsFileName) return False arg = [] - with io.open(patternsFileName, "r", encoding="latin-1") as f: + with io.open(patternsFileName, "r", encoding="utf-8") as f: for line in f: if line.find("Cmdargs") >= 0: line = line[line.rfind(':')+1:] @@ -72,12 +72,12 @@ def verifyEmissionPattern(azslFile, patternsFileName, compilerPath, silent, argL if not silent: print (style.BRIGHT + fg.CYAN + "Now to check emission patterns for " + patternsFileName + style.RESET_ALL) # normalizes the shader code by inserting spaces around identifiers stuck to other things. # eg : 'func()' will become 'func ( )' - allidents = re.split("([a-zA-Z_]+[a-zA-Z_0-9]*)|(;)|(\()|(\))|(<)|(>)|( )", shaderCode.decode('utf-8')) + allidents = re.split("([a-zA-Z_]+[a-zA-Z_0-9]*)|(\.)|(,)|(::)|(;)|(\()|(\))|(<)|(>)|( )", shaderCode.decode('utf-8')) allidents = filter(lambda s: s is not None and s!="" and s!=" ", allidents) # remove empties from ['', 'code', '', 'piece']... shaderCode = " ".join(allidents) predicates = [] # load the pattern file: - with io.open(patternsFileName, encoding="latin-1") as f: + with io.open(patternsFileName, encoding="utf-8") as f: i = 0 for line in f: if line.startswith("\""): @@ -138,7 +138,7 @@ def compileAndExpectError(thefile, compilerPath, silent, argList): failList.append(thefile) return 0 # Failure # Read the expected error code from the source file. - f = io.open(thefile, 'r', encoding="latin-1") + f = io.open(thefile, 'r', encoding="utf-8") azslCode = f.read() f.close() expectedErrorCode = testfuncs.findTokenToInt(azslCode, r"#EC\s\d*")