diff --git a/Projects/OS2/VACPP40/xerces_validators.icc b/Projects/OS2/VACPP40/xerces_validators.icc index 490c1002a10618bf77c33bed051f6c75f5cdb282..d03eac18b70dee390ebac7a461c04721dc6c914f 100644 --- a/Projects/OS2/VACPP40/xerces_validators.icc +++ b/Projects/OS2/VACPP40/xerces_validators.icc @@ -43,4 +43,5 @@ group xerces_validators = BASE_DIR "\\src\\validators\\schema\\ComplexTypeInfo.cpp", BASE_DIR "\\src\\validators\\schema\\GeneralAttributeCheck.cpp", BASE_DIR "\\src\\validators\\schema\\XercesGroupInfo.cpp", + BASE_DIR "\\src\\validators\\schema\\XercesAttGroupInfo.cpp", BASE_DIR "\\src\\validators\\schema\\TraverseSchema.cpp" diff --git a/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp b/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp index fe1a96adb112a3f94f11abacfea4805e16d38a9f..072c9edc17e3ad378dbf6e3bd0582c841e0f9c78 100644 --- a/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp +++ b/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp @@ -2003,6 +2003,14 @@ SOURCE=..\..\..\..\..\src\validators\schema\TraverseSchema.hpp # End Source File # Begin Source File +SOURCE=..\..\..\..\..\src\validators\schema\XercesAttGroupInfo.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\..\src\validators\schema\XercesAttGroupInfo.hpp +# End Source File +# Begin Source File + SOURCE=..\..\..\..\..\src\validators\schema\XercesGroupInfo.cpp # End Source File # Begin Source File diff --git a/src/NLS/EN_US/XMLErrList_EN_US.Xml b/src/NLS/EN_US/XMLErrList_EN_US.Xml index 294f7fd78cc9cf34972911ca98dd70f6fb516c55..3392bba9bdccf8545e1c1518c7e28bf0680e4f6d 100644 --- a/src/NLS/EN_US/XMLErrList_EN_US.Xml +++ b/src/NLS/EN_US/XMLErrList_EN_US.Xml @@ -21,11 +21,11 @@ <Message Id="NoNameRefAttribute" Text="Attribute must have a name or a ref - attribute declaration ignored"/> <Message Id="GlobalNoNameElement" Text="Globally-declared element must have a name - element declaration ignored"/> <Message Id="NoNameRefElement" Text="Element must have a name or a ref attribute - element ignored"/> - <Message Id="NoNameRefGroup" Text="<group> must have a name or a ref attribute - element ignored"/> + <Message Id="NoNameRefGroup" Text="<group> must have a name or a ref attribute - declaration ignored"/> + <Message Id="NoNameRefAttGroup" Text="<attributeGroup> must have a name or a ref attribute - declaration ignored"/> <Message Id="AnonComplexTypeWithName" Text="Anonymous complexType in element {0} has a name attribute"/> <Message Id="AnonSimpleTypeWithName" Text="Anonymous simpleType in element {0} has a name attribute"/> <Message Id="InvalidElementContent" Text="The content of an element information item does not match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*)"/> - <Message Id="InvalidAttributeName" Text="Invalid attribute name: {0} - declaration ignored"/> <Message Id="UntypedElement" Text="Untyped element: {0}"/> <Message Id="SimpleTypeContentError" Text="Error in content of simpleType"/> <Message Id="ExpectedSimpleTypeInList" Text="Expected simpleType in 'list' declaration for {0}"/> @@ -50,7 +50,6 @@ <Message Id="BaseTypeNotFound" Text="Base type could not be found: {0}"/> <Message Id="NoAttributeInSchema" Text="No attribute '{0}' was defined in schema: {1}"/> <Message Id="DatatypeValidatorCreationError" Text="Error creating datatype validator: {0}"/> - <Message Id="InvalidComplexTypeName" Text="Error: Invalid complexType name - '{0}' is not a valid NCName"/> <Message Id="InvalidChildFollowingSimpleContent" Text="Invalid child following the simpleContent child in the complexType"/> <Message Id="InvalidChildFollowingConplexContent" Text="Invalid child following the complexContent child in the complexType"/> <Message Id="InvalidComplexTypeBlockValue" Text="The 'block' attribute values of a complexType must be #all | list(restriction,extension); {0} was found"/> @@ -63,11 +62,9 @@ <Message Id="AttributeWithTypeAndSimpleType" Text="Attribute declarations may not contain both a type and a simpleType declaration"/> <Message Id="AttributeSimpleTypeNotFound" Text="SimpleType ({0}:{1}) for attribute: {2} not found"/> <Message Id="ElementWithFixedAndDefault" Text="An element cannot have both 'fixed' and 'default' present at the same time"/> - <Message Id="ElementWithNameRef" Text="Element name:{0} has also a ref defined - name ignored"/> - <Message Id="GroupWithNameRef" Text="group:'{0}' has also a ref defined - name ignored"/> + <Message Id="DeclarationWithNameRef" Text="{0}:'{1}' has also a ref defined - name ignored"/> <Message Id="BadAttWithRef" Text="ref cannot appear with any of type, abstract, block, final, nullable, default or fixed"/> - <Message Id="InvalidElementName" Text="Invalid element name: {0} - declaration ignored"/> - <Message Id="InvalidGroupName" Text="Invalid group name:'{0}' - declaration ignored"/> + <Message Id="InvalidDeclarationName" Text="Invalid {0} name:'{1}' - declaration ignored"/> <Message Id="GlobalElementWithRef" Text="Globally-declared element {0} cannot have a ref attribute - ref ignored"/> <Message Id="ElementWithTypeAndAnonType" Text="Element '{0}' cannot have both a type attribute and a simpleType/complexType type child"/> <Message Id="NotSimpleOrMixedElement" Text="Element {0} has a fixed or default value and must have a mixed simple or simple content model"/> @@ -110,7 +107,7 @@ <Message Id="NoNameGlobalElement" Text="Global <{0}> must have a name - declaration ignored"/> <Message Id="NoCircularDefinition" Text="No circular definitions are allowed: '{0}'"/> <Message Id="DuplicateGlobalType" Text="Global {0}:'{1}' declared more than once or also declared as {2}"/> - <Message Id="DuplicateGlobalGroup" Text="Global group:'{1}' declared more than once"/> + <Message Id="DuplicateGlobalDeclaration" Text="Global {0}:'{1}' declared more than once"/> <Message Id="WS_CollapseExpected" Text="Invalid value '{0}' for facet 'whiteSpace'. Value should be 'collapse'."/> <Message Id="Import_1_1" Text="The namespace of an <import> element must be different from the targetNamespace of the <import>ing schema"/> <Message Id="Import_1_2" Text="If the namespace on an <import> element is not present, the <import>ing schema must have a targetNamespace"/> @@ -120,15 +117,17 @@ <Message Id="EmptyComplexRestrictionDerivation" Text="The content of complexType is EMPTY, but base is not empty or does not have emptiable particle."/> <Message Id="MixedOrElementOnly" Text="The content type of the base type:'{0}' and derived type:'{1}' must both be mixed or element-only."/> <Message Id="InvalidContentRestriction" Text="The content type is not a valid restriction of the content type of the base."/> - <Message Id="ForbiddenDerivation" Text="Derivation by extension or restriction is forbiden by either the base type '{0}' or the schema"/> + <Message Id="ForbiddenDerivation" Text="Derivation by extension or restriction is forbiden by either the base type '{0}' or the schema"/> <Message Id="AtomicItemType" Text="The {item type definition} must have {variety} of atomic or union (where all member types must be atomic)"/> <Message Id="MemberTypeNoUnion" Text="The {member type definitions} must all have {variety} of atomic or list"/> <Message Id="GroupContentError" Text="The group:'0' must contain (all | choice | sequence)"/> + <Message Id="AttGroupContentError" Text="The attributeGroup:'0' must match (annotation?. ((attribute | attributeGroup)*, anyAttribute?))"/> <Message Id="MinMaxOnGroupChild" Text="The child of a model group definition must not specify either the minOccurs or maxOccurs attribute."/> - <Message Id="GroupNotFound" Text="The group:'{0}' not found in the schema"/> + <Message Id="DeclarationNotFound" Text="The {0} -'{1}:{2}'- not found in the schema"/> <Message Id="AllContentLimited" Text="A group whose content is 'all' must only appear as the content type of a complex type definition."/> <Message Id="BadMinMaxAllCT" Text="When a model group has {compositor} 'all' which constitutes the {content type} of a complex type, minOccurs=maxOccurs=1"/> <Message Id="BadMinMaxAllElem" Text="In an 'all' schema component, the value of minCoccurs/maxOccurs of an element must be '0' or '1'."/> + <Message Id="NoCircularAttGroup" Text="Circular attributeGroup reference -{0}- is disallowed outside <redefine>"/> <Message Id="DisplayErrorMessage" Text="{0}"/> </Error> <FatalError> @@ -300,7 +299,7 @@ <Message Id="GroupContentRestricted" Text="Error: {0} content must be one of element, group, modelGroupRef. Saw {1}"/> <Message Id="UnknownBaseDatatype" Text="Unknown base type {0} for type {1}."/> <Message Id="OneOfTypeRefArchRef" Text="Can only have one of type and ref attributes."/> - <Message Id="NoContentForRef" Text="Cannot have child content for an element/group declaration that has a ref attribute"/> + <Message Id="NoContentForRef" Text="A <{0}> declaration that has a ref attribute, cannot have child content."/> <Message Id="IncorrectDefaultType" Text="Incorrect type for {0}'s default value: {1}"/> <Message Id="IllegalAttContent" Text="Illegal content {0} in attribute group"/> <Message Id="ValueNotInteger" Text="Value of {0} is not an integer."/> diff --git a/src/framework/XMLErrorCodes.hpp b/src/framework/XMLErrorCodes.hpp index 998c93a086f3101f8e6843801b145aff225581da..596b84cc0dba52d2957c8cfca618d88b0addc8dc 100644 --- a/src/framework/XMLErrorCodes.hpp +++ b/src/framework/XMLErrorCodes.hpp @@ -26,10 +26,10 @@ public : , GlobalNoNameElement = 13 , NoNameRefElement = 14 , NoNameRefGroup = 15 - , AnonComplexTypeWithName = 16 - , AnonSimpleTypeWithName = 17 - , InvalidElementContent = 18 - , InvalidAttributeName = 19 + , NoNameRefAttGroup = 16 + , AnonComplexTypeWithName = 17 + , AnonSimpleTypeWithName = 18 + , InvalidElementContent = 19 , UntypedElement = 20 , SimpleTypeContentError = 21 , ExpectedSimpleTypeInList = 22 @@ -54,214 +54,213 @@ public : , BaseTypeNotFound = 41 , NoAttributeInSchema = 42 , DatatypeValidatorCreationError = 43 - , InvalidComplexTypeName = 44 - , InvalidChildFollowingSimpleContent = 45 - , InvalidChildFollowingConplexContent = 46 - , InvalidComplexTypeBlockValue = 47 - , InvalidComplexTypeFinalValue = 48 - , AttributeDefaultFixedValue = 49 - , NotOptionalDefaultAttValue = 50 - , LocalAttributeWithNameRef = 51 - , GlobalAttributeWithNameRef = 52 - , DuplicateAttribute = 53 - , AttributeWithTypeAndSimpleType = 54 - , AttributeSimpleTypeNotFound = 55 - , ElementWithFixedAndDefault = 56 - , ElementWithNameRef = 57 - , GroupWithNameRef = 58 - , BadAttWithRef = 59 - , InvalidElementName = 60 - , InvalidGroupName = 61 - , GlobalElementWithRef = 62 - , ElementWithTypeAndAnonType = 63 - , NotSimpleOrMixedElement = 64 - , DisallowedSimpleTypeExtension = 65 - , InvalidSimpleContentBase = 66 - , InvalidComplexTypeBase = 67 - , InvalidChildInSimpleContent = 68 - , InvalidChildInComplexContent = 69 - , AnnotationError = 70 - , DisallowedBaseDerivation = 71 - , SubstitutionRepeated = 72 - , UnionRepeated = 73 - , ExtensionRepeated = 74 - , ListRepeated = 75 - , RestrictionRepeated = 76 - , InvalidBlockValue = 77 - , InvalidFinalValue = 78 - , InvalidSubstitutionGroupElement = 79 - , SubstitutionGroupTypeMismatch = 80 - , DuplicateElementDeclaration = 81 - , InvalidElementBlockValue = 82 - , InvalidElementFinalValue = 83 - , InvalidAttValue = 84 - , AttributeRefContentError = 85 - , DuplicateRefAttribute = 86 - , ForbiddenDerivationByRestriction = 87 - , ForbiddenDerivationByExtension = 88 - , BaseNotComplexType = 89 - , ImportNoSchemaLocation = 90 - , ImportNamespaceDifference = 91 - , ImportRootError = 92 - , IncludeNoSchemaLocation = 93 - , IncludeNamespaceDifference = 94 - , OnlyAnnotationExpected = 95 - , InvalidAttributeContent = 96 - , AttributeRequired = 97 - , AttributeDisallowed = 98 - , InvalidMin2MaxOccurs = 99 - , AnyAttributeContentError = 100 - , NoNameGlobalElement = 101 - , NoCircularDefinition = 102 - , DuplicateGlobalType = 103 - , DuplicateGlobalGroup = 104 - , WS_CollapseExpected = 105 - , Import_1_1 = 106 - , Import_1_2 = 107 - , ElemIDValueConstraint = 108 - , NoNotationType = 109 - , EmptiableMixedContent = 110 - , EmptyComplexRestrictionDerivation = 111 - , MixedOrElementOnly = 112 - , InvalidContentRestriction = 113 - , ForbiddenDerivation = 114 - , AtomicItemType = 115 - , MemberTypeNoUnion = 116 - , GroupContentError = 117 - , MinMaxOnGroupChild = 118 - , GroupNotFound = 119 - , AllContentLimited = 120 - , BadMinMaxAllCT = 121 - , BadMinMaxAllElem = 122 - , DisplayErrorMessage = 123 - , E_HighBounds = 124 - , F_LowBounds = 125 - , ExpectedCommentOrCDATA = 126 - , ExpectedAttrName = 127 - , ExpectedNotationName = 128 - , NoRepInMixed = 129 - , BadDefAttrDecl = 130 - , ExpectedDefAttrDecl = 131 - , AttListSyntaxError = 132 - , ExpectedEqSign = 133 - , DupAttrName = 134 - , BadIdForXMLLangAttr = 135 - , ExpectedElementName = 136 - , MustStartWithXMLDecl = 137 - , CommentsMustStartWith = 138 - , InvalidDocumentStructure = 139 - , ExpectedDeclString = 140 - , BadXMLVersion = 141 - , UnsupportedXMLVersion = 142 - , UnterminatedXMLDecl = 143 - , BadXMLEncoding = 144 - , BadStandalone = 145 - , UnterminatedComment = 146 - , PINameExpected = 147 - , UnterminatedPI = 148 - , InvalidCharacter = 149 - , UnexpectedTextBeforeRoot = 150 - , UnterminatedStartTag = 151 - , ExpectedAttrValue = 152 - , UnterminatedEndTag = 153 - , ExpectedAttributeType = 154 - , ExpectedEndOfTagX = 155 - , ExpectedMarkup = 156 - , NotValidAfterContent = 157 - , ExpectedComment = 158 - , ExpectedCommentOrPI = 159 - , ExpectedWhitespace = 160 - , NoRootElemInDOCTYPE = 161 - , ExpectedQuotedString = 162 - , ExpectedPublicId = 163 - , InvalidPublicIdChar = 164 - , UnterminatedDOCTYPE = 165 - , InvalidCharacterInIntSubset = 166 - , ExpectedCDATA = 167 - , InvalidInitialNameChar = 168 - , InvalidNameChar = 169 - , UnexpectedWhitespace = 170 - , InvalidCharacterInAttrValue = 171 - , ExpectedMarkupDecl = 172 - , TextDeclNotLegalHere = 173 - , ConditionalSectInIntSubset = 174 - , ExpectedPEName = 175 - , UnterminatedEntityDecl = 176 - , InvalidCharacterRef = 177 - , UnterminatedCharRef = 178 - , ExpectedEntityRefName = 179 - , EntityNotFound = 180 - , NoUnparsedEntityRefs = 181 - , UnterminatedEntityRef = 182 - , RecursiveEntity = 183 - , PartialMarkupInEntity = 184 - , UnterminatedElementDecl = 185 - , ExpectedContentSpecExpr = 186 - , ExpectedAsterisk = 187 - , UnterminatedContentModel = 188 - , ExpectedSystemId = 189 - , ExpectedSystemOrPublicId = 190 - , UnterminatedNotationDecl = 191 - , ExpectedSeqChoiceLeaf = 192 - , ExpectedChoiceOrCloseParen = 193 - , ExpectedSeqOrCloseParen = 194 - , ExpectedEnumValue = 195 - , ExpectedEnumSepOrParen = 196 - , UnterminatedEntityLiteral = 197 - , MoreEndThanStartTags = 198 - , ExpectedOpenParen = 199 - , AttrAlreadyUsedInSTag = 200 - , BracketInAttrValue = 201 - , Expected2ndSurrogateChar = 202 - , ExpectedEndOfConditional = 203 - , ExpectedIncOrIgn = 204 - , ExpectedINCLUDEBracket = 205 - , ExpectedTextDecl = 206 - , ExpectedXMLDecl = 207 - , UnexpectedEOE = 208 - , PEPropogated = 209 - , ExtraCloseSquare = 210 - , PERefInMarkupInIntSubset = 211 - , EntityPropogated = 212 - , ExpectedNumericalCharRef = 213 - , ExpectedOpenSquareBracket = 214 - , BadSequenceInCharData = 215 - , IllegalSequenceInComment = 216 - , UnterminatedCDATASection = 217 - , ExpectedNDATA = 218 - , NDATANotValidForPE = 219 - , HexRadixMustBeLowerCase = 220 - , DeclStringRep = 221 - , DeclStringsInWrongOrder = 222 - , NoExtRefsInAttValue = 223 - , XMLDeclMustBeLowerCase = 224 - , ExpectedEntityValue = 225 - , BadDigitForRadix = 226 - , EndedWithTagsOnStack = 227 - , AmbiguousContentModel = 228 - , NestedCDATA = 229 - , UnknownPrefix = 230 - , PartialTagMarkupError = 231 - , EmptyMainEntity = 232 - , CDATAOutsideOfContent = 233 - , OnlyCharRefsAllowedHere = 234 - , Unexpected2ndSurrogateChar = 235 - , NoPIStartsWithXML = 236 - , XMLDeclMustBeFirst = 237 - , XMLVersionRequired = 238 - , StandaloneNotLegal = 239 - , EncodingRequired = 240 - , TooManyColonsInName = 241 - , InvalidColonPos = 242 - , ColonNotLegalWithNS = 243 - , SysException = 244 - , XMLException = 245 - , UnexpectedEOF = 246 - , UnexpectedError = 247 - , BadSchemaLocation = 248 - , NoGrammarResolver = 249 - , SchemaScanFatalError = 250 - , F_HighBounds = 251 + , InvalidChildFollowingSimpleContent = 44 + , InvalidChildFollowingConplexContent = 45 + , InvalidComplexTypeBlockValue = 46 + , InvalidComplexTypeFinalValue = 47 + , AttributeDefaultFixedValue = 48 + , NotOptionalDefaultAttValue = 49 + , LocalAttributeWithNameRef = 50 + , GlobalAttributeWithNameRef = 51 + , DuplicateAttribute = 52 + , AttributeWithTypeAndSimpleType = 53 + , AttributeSimpleTypeNotFound = 54 + , ElementWithFixedAndDefault = 55 + , DeclarationWithNameRef = 56 + , BadAttWithRef = 57 + , InvalidDeclarationName = 58 + , GlobalElementWithRef = 59 + , ElementWithTypeAndAnonType = 60 + , NotSimpleOrMixedElement = 61 + , DisallowedSimpleTypeExtension = 62 + , InvalidSimpleContentBase = 63 + , InvalidComplexTypeBase = 64 + , InvalidChildInSimpleContent = 65 + , InvalidChildInComplexContent = 66 + , AnnotationError = 67 + , DisallowedBaseDerivation = 68 + , SubstitutionRepeated = 69 + , UnionRepeated = 70 + , ExtensionRepeated = 71 + , ListRepeated = 72 + , RestrictionRepeated = 73 + , InvalidBlockValue = 74 + , InvalidFinalValue = 75 + , InvalidSubstitutionGroupElement = 76 + , SubstitutionGroupTypeMismatch = 77 + , DuplicateElementDeclaration = 78 + , InvalidElementBlockValue = 79 + , InvalidElementFinalValue = 80 + , InvalidAttValue = 81 + , AttributeRefContentError = 82 + , DuplicateRefAttribute = 83 + , ForbiddenDerivationByRestriction = 84 + , ForbiddenDerivationByExtension = 85 + , BaseNotComplexType = 86 + , ImportNoSchemaLocation = 87 + , ImportNamespaceDifference = 88 + , ImportRootError = 89 + , IncludeNoSchemaLocation = 90 + , IncludeNamespaceDifference = 91 + , OnlyAnnotationExpected = 92 + , InvalidAttributeContent = 93 + , AttributeRequired = 94 + , AttributeDisallowed = 95 + , InvalidMin2MaxOccurs = 96 + , AnyAttributeContentError = 97 + , NoNameGlobalElement = 98 + , NoCircularDefinition = 99 + , DuplicateGlobalType = 100 + , DuplicateGlobalDeclaration = 101 + , WS_CollapseExpected = 102 + , Import_1_1 = 103 + , Import_1_2 = 104 + , ElemIDValueConstraint = 105 + , NoNotationType = 106 + , EmptiableMixedContent = 107 + , EmptyComplexRestrictionDerivation = 108 + , MixedOrElementOnly = 109 + , InvalidContentRestriction = 110 + , ForbiddenDerivation = 111 + , AtomicItemType = 112 + , MemberTypeNoUnion = 113 + , GroupContentError = 114 + , AttGroupContentError = 115 + , MinMaxOnGroupChild = 116 + , DeclarationNotFound = 117 + , AllContentLimited = 118 + , BadMinMaxAllCT = 119 + , BadMinMaxAllElem = 120 + , NoCircularAttGroup = 121 + , DisplayErrorMessage = 122 + , E_HighBounds = 123 + , F_LowBounds = 124 + , ExpectedCommentOrCDATA = 125 + , ExpectedAttrName = 126 + , ExpectedNotationName = 127 + , NoRepInMixed = 128 + , BadDefAttrDecl = 129 + , ExpectedDefAttrDecl = 130 + , AttListSyntaxError = 131 + , ExpectedEqSign = 132 + , DupAttrName = 133 + , BadIdForXMLLangAttr = 134 + , ExpectedElementName = 135 + , MustStartWithXMLDecl = 136 + , CommentsMustStartWith = 137 + , InvalidDocumentStructure = 138 + , ExpectedDeclString = 139 + , BadXMLVersion = 140 + , UnsupportedXMLVersion = 141 + , UnterminatedXMLDecl = 142 + , BadXMLEncoding = 143 + , BadStandalone = 144 + , UnterminatedComment = 145 + , PINameExpected = 146 + , UnterminatedPI = 147 + , InvalidCharacter = 148 + , UnexpectedTextBeforeRoot = 149 + , UnterminatedStartTag = 150 + , ExpectedAttrValue = 151 + , UnterminatedEndTag = 152 + , ExpectedAttributeType = 153 + , ExpectedEndOfTagX = 154 + , ExpectedMarkup = 155 + , NotValidAfterContent = 156 + , ExpectedComment = 157 + , ExpectedCommentOrPI = 158 + , ExpectedWhitespace = 159 + , NoRootElemInDOCTYPE = 160 + , ExpectedQuotedString = 161 + , ExpectedPublicId = 162 + , InvalidPublicIdChar = 163 + , UnterminatedDOCTYPE = 164 + , InvalidCharacterInIntSubset = 165 + , ExpectedCDATA = 166 + , InvalidInitialNameChar = 167 + , InvalidNameChar = 168 + , UnexpectedWhitespace = 169 + , InvalidCharacterInAttrValue = 170 + , ExpectedMarkupDecl = 171 + , TextDeclNotLegalHere = 172 + , ConditionalSectInIntSubset = 173 + , ExpectedPEName = 174 + , UnterminatedEntityDecl = 175 + , InvalidCharacterRef = 176 + , UnterminatedCharRef = 177 + , ExpectedEntityRefName = 178 + , EntityNotFound = 179 + , NoUnparsedEntityRefs = 180 + , UnterminatedEntityRef = 181 + , RecursiveEntity = 182 + , PartialMarkupInEntity = 183 + , UnterminatedElementDecl = 184 + , ExpectedContentSpecExpr = 185 + , ExpectedAsterisk = 186 + , UnterminatedContentModel = 187 + , ExpectedSystemId = 188 + , ExpectedSystemOrPublicId = 189 + , UnterminatedNotationDecl = 190 + , ExpectedSeqChoiceLeaf = 191 + , ExpectedChoiceOrCloseParen = 192 + , ExpectedSeqOrCloseParen = 193 + , ExpectedEnumValue = 194 + , ExpectedEnumSepOrParen = 195 + , UnterminatedEntityLiteral = 196 + , MoreEndThanStartTags = 197 + , ExpectedOpenParen = 198 + , AttrAlreadyUsedInSTag = 199 + , BracketInAttrValue = 200 + , Expected2ndSurrogateChar = 201 + , ExpectedEndOfConditional = 202 + , ExpectedIncOrIgn = 203 + , ExpectedINCLUDEBracket = 204 + , ExpectedTextDecl = 205 + , ExpectedXMLDecl = 206 + , UnexpectedEOE = 207 + , PEPropogated = 208 + , ExtraCloseSquare = 209 + , PERefInMarkupInIntSubset = 210 + , EntityPropogated = 211 + , ExpectedNumericalCharRef = 212 + , ExpectedOpenSquareBracket = 213 + , BadSequenceInCharData = 214 + , IllegalSequenceInComment = 215 + , UnterminatedCDATASection = 216 + , ExpectedNDATA = 217 + , NDATANotValidForPE = 218 + , HexRadixMustBeLowerCase = 219 + , DeclStringRep = 220 + , DeclStringsInWrongOrder = 221 + , NoExtRefsInAttValue = 222 + , XMLDeclMustBeLowerCase = 223 + , ExpectedEntityValue = 224 + , BadDigitForRadix = 225 + , EndedWithTagsOnStack = 226 + , AmbiguousContentModel = 227 + , NestedCDATA = 228 + , UnknownPrefix = 229 + , PartialTagMarkupError = 230 + , EmptyMainEntity = 231 + , CDATAOutsideOfContent = 232 + , OnlyCharRefsAllowedHere = 233 + , Unexpected2ndSurrogateChar = 234 + , NoPIStartsWithXML = 235 + , XMLDeclMustBeFirst = 236 + , XMLVersionRequired = 237 + , StandaloneNotLegal = 238 + , EncodingRequired = 239 + , TooManyColonsInName = 240 + , InvalidColonPos = 241 + , ColonNotLegalWithNS = 242 + , SysException = 243 + , XMLException = 244 + , UnexpectedEOF = 245 + , UnexpectedError = 246 + , BadSchemaLocation = 247 + , NoGrammarResolver = 248 + , SchemaScanFatalError = 249 + , F_HighBounds = 250 }; static bool isFatal(const XMLErrs::Codes toCheck) diff --git a/src/util/MsgLoaders/InMemory/CppErrMsgs_EN_US.hpp b/src/util/MsgLoaders/InMemory/CppErrMsgs_EN_US.hpp index ca376d101fcf0d41b1466f903fde970e138f1570..e3b86cfd7d078aee78d409da8031e991c52f88d7 100644 --- a/src/util/MsgLoaders/InMemory/CppErrMsgs_EN_US.hpp +++ b/src/util/MsgLoaders/InMemory/CppErrMsgs_EN_US.hpp @@ -19,11 +19,11 @@ const XMLCh gXMLErrArray[][128] = , { 0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x002D,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 } , { 0x0047,0x006C,0x006F,0x0062,0x0061,0x006C,0x006C,0x0079,0x002D,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x002D,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 } , { 0x0045,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x002D,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 } - , { 0x003C,0x0067,0x0072,0x006F,0x0075,0x0070,0x003E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x002D,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 } + , { 0x003C,0x0067,0x0072,0x006F,0x0075,0x0070,0x003E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x002D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 } + , { 0x003C,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x003E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x002D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 } , { 0x0041,0x006E,0x006F,0x006E,0x0079,0x006D,0x006F,0x0075,0x0073,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x007B,0x0030,0x007D,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } , { 0x0041,0x006E,0x006F,0x006E,0x0079,0x006D,0x006F,0x0075,0x0073,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x007B,0x0030,0x007D,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } , { 0x0054,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0061,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0066,0x006F,0x0072,0x006D,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0074,0x0065,0x006D,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0028,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003F,0x002C,0x0020,0x0028,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x007C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0029,0x003F,0x002C,0x0020,0x0028,0x0075,0x006E,0x0069,0x0071,0x0075,0x0065,0x0020,0x007C,0x0020,0x006B,0x0065,0x0079,0x0020,0x007C,0x0020,0x006B,0x0065,0x0079,0x0072,0x0065,0x0066,0x0029,0x002A,0x0029,0x00 } - , { 0x0049,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x003A,0x0020,0x007B,0x0030,0x007D,0x0020,0x002D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 } , { 0x0055,0x006E,0x0074,0x0079,0x0070,0x0065,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x003A,0x0020,0x007B,0x0030,0x007D,0x00 } , { 0x0045,0x0072,0x0072,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x00 } , { 0x0045,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0027,0x006C,0x0069,0x0073,0x0074,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0072,0x0020,0x007B,0x0030,0x007D,0x00 } @@ -48,7 +48,6 @@ const XMLCh gXMLErrArray[][128] = , { 0x0042,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0063,0x006F,0x0075,0x006C,0x0064,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x003A,0x0020,0x007B,0x0030,0x007D,0x00 } , { 0x004E,0x006F,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0077,0x0061,0x0073,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x003A,0x0020,0x007B,0x0031,0x007D,0x00 } , { 0x0045,0x0072,0x0072,0x006F,0x0072,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0069,0x006E,0x0067,0x0020,0x0064,0x0061,0x0074,0x0061,0x0074,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x006F,0x0072,0x003A,0x0020,0x007B,0x0030,0x007D,0x00 } - , { 0x0045,0x0072,0x0072,0x006F,0x0072,0x003A,0x0020,0x0049,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x002D,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x004E,0x0043,0x004E,0x0061,0x006D,0x0065,0x00 } , { 0x0049,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x00 } , { 0x0049,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x00 } , { 0x0054,0x0068,0x0065,0x0020,0x0027,0x0062,0x006C,0x006F,0x0063,0x006B,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0023,0x0061,0x006C,0x006C,0x0020,0x007C,0x0020,0x006C,0x0069,0x0073,0x0074,0x0028,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x002C,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0029,0x003B,0x0020,0x007B,0x0030,0x007D,0x0020,0x0077,0x0061,0x0073,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } @@ -61,11 +60,9 @@ const XMLCh gXMLErrArray[][128] = , { 0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x0020,0x006D,0x0061,0x0079,0x0020,0x006E,0x006F,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0061,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0061,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0053,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0028,0x007B,0x0030,0x007D,0x003A,0x007B,0x0031,0x007D,0x0029,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x003A,0x0020,0x007B,0x0032,0x007D,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } , { 0x0041,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0027,0x0066,0x0069,0x0078,0x0065,0x0064,0x0027,0x0020,0x0061,0x006E,0x0064,0x0020,0x0027,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0027,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0074,0x0069,0x006D,0x0065,0x00 } - , { 0x0045,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x003A,0x007B,0x0030,0x007D,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0073,0x006F,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x002D,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 } - , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x003A,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0073,0x006F,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x002D,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 } + , { 0x007B,0x0030,0x007D,0x003A,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0073,0x006F,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x002D,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 } , { 0x0072,0x0065,0x0066,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0061,0x006E,0x0079,0x0020,0x006F,0x0066,0x0020,0x0074,0x0079,0x0070,0x0065,0x002C,0x0020,0x0061,0x0062,0x0073,0x0074,0x0072,0x0061,0x0063,0x0074,0x002C,0x0020,0x0062,0x006C,0x006F,0x0063,0x006B,0x002C,0x0020,0x0066,0x0069,0x006E,0x0061,0x006C,0x002C,0x0020,0x006E,0x0075,0x006C,0x006C,0x0061,0x0062,0x006C,0x0065,0x002C,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x006F,0x0072,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x00 } - , { 0x0049,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x003A,0x0020,0x007B,0x0030,0x007D,0x0020,0x002D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 } - , { 0x0049,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x006E,0x0061,0x006D,0x0065,0x003A,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x002D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 } + , { 0x0049,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x007B,0x0030,0x007D,0x0020,0x006E,0x0061,0x006D,0x0065,0x003A,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x002D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 } , { 0x0047,0x006C,0x006F,0x0062,0x0061,0x006C,0x006C,0x0079,0x002D,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x007B,0x0030,0x007D,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x002D,0x0020,0x0072,0x0065,0x0066,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 } , { 0x0045,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0061,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0061,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x002F,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x00 } , { 0x0045,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x007B,0x0030,0x007D,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006F,0x0072,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006D,0x0069,0x0078,0x0065,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x006F,0x0072,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x00 } @@ -108,7 +105,7 @@ const XMLCh gXMLErrArray[][128] = , { 0x0047,0x006C,0x006F,0x0062,0x0061,0x006C,0x0020,0x003C,0x007B,0x0030,0x007D,0x003E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x002D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 } , { 0x004E,0x006F,0x0020,0x0063,0x0069,0x0072,0x0063,0x0075,0x006C,0x0061,0x0072,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x003A,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0047,0x006C,0x006F,0x0062,0x0061,0x006C,0x0020,0x007B,0x0030,0x007D,0x003A,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0063,0x0065,0x0020,0x006F,0x0072,0x0020,0x0061,0x006C,0x0073,0x006F,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0061,0x0073,0x0020,0x007B,0x0032,0x007D,0x00 } - , { 0x0047,0x006C,0x006F,0x0062,0x0061,0x006C,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x003A,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0063,0x0065,0x00 } + , { 0x0047,0x006C,0x006F,0x0062,0x0061,0x006C,0x0020,0x007B,0x0030,0x007D,0x003A,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0063,0x0065,0x00 } , { 0x0049,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0066,0x006F,0x0072,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0027,0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0027,0x002E,0x0020,0x0056,0x0061,0x006C,0x0075,0x0065,0x0020,0x0073,0x0068,0x006F,0x0075,0x006C,0x0064,0x0020,0x0062,0x0065,0x0020,0x0027,0x0063,0x006F,0x006C,0x006C,0x0061,0x0070,0x0073,0x0065,0x0027,0x002E,0x00 } , { 0x0054,0x0068,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x006E,0x0020,0x003C,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x003E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x004E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x003C,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x003E,0x0069,0x006E,0x0067,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x00 } , { 0x0049,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x006E,0x0020,0x0061,0x006E,0x0020,0x003C,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x003E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x002C,0x0020,0x0074,0x0068,0x0065,0x0020,0x003C,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x003E,0x0069,0x006E,0x0067,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x004E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } @@ -122,11 +119,13 @@ const XMLCh gXMLErrArray[][128] = , { 0x0054,0x0068,0x0065,0x0020,0x007B,0x0069,0x0074,0x0065,0x006D,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x007D,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x007B,0x0076,0x0061,0x0072,0x0069,0x0065,0x0074,0x0079,0x007D,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x006F,0x006D,0x0069,0x0063,0x0020,0x006F,0x0072,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x0020,0x0028,0x0077,0x0068,0x0065,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x006D,0x0065,0x006D,0x0062,0x0065,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0073,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0074,0x006F,0x006D,0x0069,0x0063,0x0029,0x00 } , { 0x0054,0x0068,0x0065,0x0020,0x007B,0x006D,0x0065,0x006D,0x0062,0x0065,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0073,0x007D,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0061,0x006C,0x006C,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x007B,0x0076,0x0061,0x0072,0x0069,0x0065,0x0074,0x0079,0x007D,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x006F,0x006D,0x0069,0x0063,0x0020,0x006F,0x0072,0x0020,0x006C,0x0069,0x0073,0x0074,0x00 } , { 0x0054,0x0068,0x0065,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x003A,0x0027,0x0030,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0028,0x0061,0x006C,0x006C,0x0020,0x007C,0x0020,0x0063,0x0068,0x006F,0x0069,0x0063,0x0065,0x0020,0x007C,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x0029,0x00 } + , { 0x0054,0x0068,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x003A,0x0027,0x0030,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0028,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003F,0x002E,0x0020,0x0028,0x0028,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x007C,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x0029,0x002A,0x002C,0x0020,0x0061,0x006E,0x0079,0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x003F,0x0029,0x0029,0x00 } , { 0x0054,0x0068,0x0065,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0079,0x0020,0x0065,0x0069,0x0074,0x0068,0x0065,0x0072,0x0020,0x0074,0x0068,0x0065,0x0020,0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x006F,0x0072,0x0020,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x002E,0x00 } - , { 0x0054,0x0068,0x0065,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x003A,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x00 } + , { 0x0054,0x0068,0x0065,0x0020,0x007B,0x0030,0x007D,0x0020,0x002D,0x0027,0x007B,0x0031,0x007D,0x003A,0x007B,0x0032,0x007D,0x0027,0x002D,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x00 } , { 0x0041,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0077,0x0068,0x006F,0x0073,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x0073,0x0020,0x0027,0x0061,0x006C,0x006C,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0061,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x002E,0x00 } , { 0x0057,0x0068,0x0065,0x006E,0x0020,0x0061,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0068,0x0061,0x0073,0x0020,0x007B,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x007D,0x0020,0x0027,0x0061,0x006C,0x006C,0x0027,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0065,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x007B,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x007D,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x002C,0x0020,0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x003D,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x003D,0x0031,0x00 } , { 0x0049,0x006E,0x0020,0x0061,0x006E,0x0020,0x0027,0x0061,0x006C,0x006C,0x0027,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x006E,0x0065,0x006E,0x0074,0x002C,0x0020,0x0074,0x0068,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0066,0x0020,0x006D,0x0069,0x006E,0x0043,0x006F,0x0063,0x0063,0x0075,0x0072,0x0073,0x002F,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x006F,0x0066,0x0020,0x0061,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0027,0x0030,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0031,0x0027,0x002E,0x00 } + , { 0x0043,0x0069,0x0072,0x0063,0x0075,0x006C,0x0061,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x002D,0x007B,0x0030,0x007D,0x002D,0x0020,0x0069,0x0073,0x0020,0x0064,0x0069,0x0073,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x006F,0x0075,0x0074,0x0073,0x0069,0x0064,0x0065,0x0020,0x003C,0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x003E,0x00 } , { 0x007B,0x0030,0x007D,0x00 } , { 0x0045,0x005F,0x0045,0x006E,0x0064,0x00 } , { 0x0046,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } @@ -258,7 +257,7 @@ const XMLCh gXMLErrArray[][128] = , { 0x0046,0x005F,0x0045,0x006E,0x0064,0x00 } }; -const unsigned int gXMLErrArraySize = 252; +const unsigned int gXMLErrArraySize = 251; const XMLCh gXMLValidityArray[][128] = { @@ -302,7 +301,7 @@ const XMLCh gXMLValidityArray[][128] = , { 0x0045,0x0072,0x0072,0x006F,0x0072,0x003A,0x0020,0x007B,0x0030,0x007D,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006F,0x006E,0x0065,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x002C,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x002C,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0047,0x0072,0x006F,0x0075,0x0070,0x0052,0x0065,0x0066,0x002E,0x0020,0x0053,0x0061,0x0077,0x0020,0x007B,0x0031,0x007D,0x00 } , { 0x0055,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x007B,0x0030,0x007D,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x007B,0x0031,0x007D,0x002E,0x00 } , { 0x0043,0x0061,0x006E,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006F,0x006E,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0072,0x0065,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0073,0x002E,0x00 } - , { 0x0043,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x002F,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x0041,0x0020,0x003C,0x007B,0x0030,0x007D,0x003E,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x002C,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x002E,0x00 } , { 0x0049,0x006E,0x0063,0x006F,0x0072,0x0072,0x0065,0x0063,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x007B,0x0030,0x007D,0x0027,0x0073,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x003A,0x0020,0x007B,0x0031,0x007D,0x00 } , { 0x0049,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x007B,0x0030,0x007D,0x0020,0x0069,0x006E,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x00 } , { 0x0056,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0066,0x0020,0x007B,0x0030,0x007D,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006E,0x0020,0x0069,0x006E,0x0074,0x0065,0x0067,0x0065,0x0072,0x002E,0x00 } diff --git a/src/util/MsgLoaders/MsgCatalog/XMLMsgCat_EN_US.Msg b/src/util/MsgLoaders/MsgCatalog/XMLMsgCat_EN_US.Msg index c686b15a007eec3c19e9d8199d557b59f1ca3f3d..b4f99ec71641ab4272ece8e1e972bf7c20606ec0 100644 --- a/src/util/MsgLoaders/MsgCatalog/XMLMsgCat_EN_US.Msg +++ b/src/util/MsgLoaders/MsgCatalog/XMLMsgCat_EN_US.Msg @@ -11,11 +11,11 @@ $set 1 12 Attribute must have a name or a ref - attribute declaration ignored 13 Globally-declared element must have a name - element declaration ignored 14 Element must have a name or a ref attribute - element ignored - 15 <group> must have a name or a ref attribute - element ignored - 16 Anonymous complexType in element {0} has a name attribute - 17 Anonymous simpleType in element {0} has a name attribute - 18 The content of an element information item does not match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*) - 19 Invalid attribute name: {0} - declaration ignored + 15 <group> must have a name or a ref attribute - declaration ignored + 16 <attributeGroup> must have a name or a ref attribute - declaration ignored + 17 Anonymous complexType in element {0} has a name attribute + 18 Anonymous simpleType in element {0} has a name attribute + 19 The content of an element information item does not match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*) 20 Untyped element: {0} 21 Error in content of simpleType 22 Expected simpleType in 'list' declaration for {0} @@ -40,211 +40,210 @@ $set 1 41 Base type could not be found: {0} 42 No attribute '{0}' was defined in schema: {1} 43 Error creating datatype validator: {0} - 44 Error: Invalid complexType name - '{0}' is not a valid NCName - 45 Invalid child following the simpleContent child in the complexType - 46 Invalid child following the complexContent child in the complexType - 47 The 'block' attribute values of a complexType must be #all | list(restriction,extension); {0} was found - 48 The 'final' attribute values of a complexType must be #all | list(restriction,extension); {0} was found - 49 An attribute cannot have both 'fixed' and 'default' present at the same time - default used - 50 If default and use are both present, use must have the value 'optional'. - 51 Local attribute:{0} has also a ref defined - name ignored - 52 Global attribute:'{0}' cannot have a ref defined - 53 Error: Attribute '{0}' declared more than once in the same scope- ignoring - 54 Attribute declarations may not contain both a type and a simpleType declaration - 55 SimpleType ({0}:{1}) for attribute: {2} not found - 56 An element cannot have both 'fixed' and 'default' present at the same time - 57 Element name:{0} has also a ref defined - name ignored - 58 group:'{0}' has also a ref defined - name ignored - 59 ref cannot appear with any of type, abstract, block, final, nullable, default or fixed - 60 Invalid element name: {0} - declaration ignored - 61 Invalid group name:'{0}' - declaration ignored - 62 Globally-declared element {0} cannot have a ref attribute - ref ignored - 63 Element '{0}' cannot have both a type attribute and a simpleType/complexType type child - 64 Element {0} has a fixed or default value and must have a mixed simple or simple content model - 65 The simpleType {0} that {1} uses has a value of 'final' which does not permit extension - 66 The type '{0}' specified as the base in the simpleContent element must not have complexContent - 67 The type '{0}' is a simple type. It cannot be used in a derivation by RESTRICTION for a complexType - 68 Invalid child following the RESTRICTION or EXTENSION element in the simpleContent definition - 69 Invalid child following the RESTRICTION or EXTENSION element in the complexContent definition - 70 Annotation can only appear once: type {0} - 71 The base type {0} does not allow itself to be used as the base for a restriction and/or as a type in a list and/or union - 72 The value 'substitution' already in the list - 73 The value 'union' is already in the list - 74 The value 'extension' is already in the list - 75 The value 'list' is already in the list - 76 The value 'restriction' is already in the list - 77 Invalid block value: {0} - 78 Invalid final value: {0} - 79 Element {0} cannot be part of the substitution group headed by {1} - 80 Element {0} has a type which does not derive from the type of the element at the head of the substitution group - 81 Duplicate element decl in the same scope: {0} - 82 The 'block' attribute values of an element must be #all | list(substitution,restriction,extension); {0} was found - 83 The 'final' attribute values of an element must be #all | list(restriction,extension); {0} was found - 84 Invalid value '{0}' for attribute: '{1}'. - 85 Ref is present, and simpleType/form/type found - 86 Duplicate reference attribute {0}:{1} in complexType - 87 Derivation by restriction is forbidden by either the base type '{0}' or the schema - 88 Derivation by extension is forbidden by either the base type '{0}' or the schema - 89 The base type specified in the complexContent element must be a complexType - 90 A schemaLocation attribute must be specified on an 'import' element. - 91 Imported schema '{0}' has a different targetNameSpace '{1}' from what's declared '{2}' - 92 Could not get the doc root for imported Schema: {0} - 93 A schemaLocation attribute must be specified on an 'include' element. - 94 Included schema '{0}' has a different targetNameSpace '{1}' - 95 At most one <annotation> element is expected in the content. - 96 The 'atribute' content must be (annotation?, simpleType?); '{0}' encountered - 97 Attribute '{0}' must appear in {1} {2} declarations - 98 Attribute '{0}' cannot appear in {1} {2} declarations - 99 Value of minOccurs '{0}' must not be greater than value of maxOccurs '{1}' -100 'anyAttribute' elements can contain at most one 'annotation' element in their children -101 Global <{0}> must have a name - declaration ignored -102 No circular definitions are allowed: '{0}' -103 Global {0}:'{1}' declared more than once or also declared as {2} -104 Global group:'{1}' declared more than once -105 Invalid value '{0}' for facet 'whiteSpace'. Value should be 'collapse'. -106 The namespace of an <import> element must be different from the targetNamespace of the <import>ing schema -107 If the namespace on an <import> element is not present, the <import>ing schema must have a targetNamespace -108 Element '{0}' must not have a value constraint:'{1}' as its type is derived from ID -109 It is an error for NOTATION to be used directly in a schema in element/attribute '{0}' -110 For element '{0}', the {content type} is mixed, then the {content type}'s particle must be emptiable -111 The content of complexType is EMPTY, but base is not empty or does not have emptiable particle. -112 The content type of the base type:'{0}' and derived type:'{1}' must both be mixed or element-only. -113 The content type is not a valid restriction of the content type of the base. -114 Derivation by extension or restriction is forbiden by either the base type '{0}' or the schema -115 The {item type definition} must have {variety} of atomic or union (where all member types must be atomic) -116 The {member type definitions} must all have {variety} of atomic or list -117 The group:'0' must contain (all | choice | sequence) -118 The child of a model group definition must not specify either the minOccurs or maxOccurs attribute. -119 The group:'{0}' not found in the schema -120 A group whose content is 'all' must only appear as the content type of a complex type definition. -121 When a model group has {compositor} 'all' which constitutes the {content type} of a complex type, minOccurs=maxOccurs=1 -122 In an 'all' schema component, the value of minCoccurs/maxOccurs of an element must be '0' or '1'. -123 {0} -126 Expected comment or CDATA -127 Expected an attribute name -128 Expected a notation name -129 Repetition of individual elements is not legal for mixed content models -130 Bad default attribute declaration -131 Expected default attribute declaration, assuming #IMPLIED -132 Attribute list syntax error -133 Expected equal sign -134 Duplication attribute name -135 Bad ID, '{0}', for xml:lang attribute -136 Expected an element name -137 Must start with an XMLDecl -138 Comments must start with <!-- -139 Invalid document structure -140 Expected a 'version=', 'encoding=', or 'standalone=' -141 Bad XML version string -142 Unsupported XML version, '{0}' -143 Unterminated XML decl -144 Bad XML encoding declaration, '{0}' -145 Bad standalone declaration -146 Unterminated comment -147 Processing instruction name expected -148 Unterminated processing instruction -149 Invalid character (Unicode: 0x{0}) -150 Unexpected text before root element -151 Unterminated start tag, '{0}' -152 Expected an attribute value -153 Unterminated end tag -154 Expected type (CDATA, ID, NMTOKEN, ..), for attribute '{0}' of element '{1}' -155 Expected end of tag '{0}' -156 Expected tag name, comment, PI, or other markup -157 Not valid after content -158 Expected comment -159 Expected comment or processing instruction -160 Expected whitespace -161 No root element in DOCTYPE -162 Expected quoted string -163 Expected public id -164 Invalid character in public id (Unicode: 0x{0}) -165 Unterminated DOCTYPE declaration -166 Invalid character in internal subset (Unicode: 0x{0}) -167 Expected CDATA section -168 Invalid initial name character -169 Invalid name character -170 Unexpected whitespace -171 Invalid character in attribute value (Unicode: 0x{0}) -172 Expected a markup declaration -173 Text declaration not legal here -174 Conditional section in internal subset -175 Expected parameter entity name -176 Unterminated entity declaration, '{0}' -177 Invalid character reference -178 Unterminated character reference -179 Expected entity name for reference -180 Entity '{0}' was not found -181 Unparsed entitty references, '{0}', not valid here -182 Unterminated entity reference -183 Recursive entity expansion -184 Partial markup in entity value -185 Unterminated element declaration, '{0}' -186 Expected content specification expression for element '{0}' -187 Expected asterisk -188 Unterminated Content model -189 Expected system id -190 Expected system or public id -191 Unterminated notation declaration -192 Expected ',', '|', or ')' characters -193 Expected '|' or ')' characters -194 Expected ',' or ')' characters or close parenthesis in content model of element '{0}' -195 Expected enumeration value for attribute '{0}' -196 Expected | enumeration separator, or closing paren -197 Unterminated entity literal -198 There are more end tags than start tags -199 Expected an open parenthesis -200 The attribute '{0}' is already used in element '{1}' -201 A '<' character cannot be used in attribute '{0}', except through < -202 A leading surrogate character was not followed by a legal second character -203 Expected ']]>' to end a conditional section -204 Expected INCLUDE or IGNORE here -205 Expected [ to follow INCLUDE or IGNORE -206 Expected a TextDecl here: <?xml .... -207 Expected a XMLDecl here: <?xml .... -208 Unexpected end of entity {0} -209 A PE propogated out of the int/ext subset, discarding extra text -210 An extra ] character was found an ignored -211 PE refs are not allowed inside markup in the internal subset -212 An entity propogated out of the content section into Miscellaneous -213 Expected &# to be followed by a numeric character value -214 Expected an open bracket ('[') here -215 The sequence ']]>' is not allowed in character data -216 Illegal sequence '--' in comment -217 Unterminated CDATA section -218 Expected NDATA -219 NDATA is not legal for parameter entities -220 Hex radix character refs must use 'x', not 'X' -221 '{0}' has already been set. Ignoring redundant setting -222 The XMLDecl strings must be in the order: version, encoding, standalone -223 External entities cannot be referred to from attribute values -224 The XML or Text decl must start with '<?xml ', not '<?XML ' -225 Expected a literal entity value or PUBLIC/SYSTEM id -226 '{0}' is not a valid digit for the indicated radix -227 The input ended before all started tags were ended. Last tag started was '{0}' -228 The content model for element '{0}' is ambiguous -229 Nested CDATA sections are not allowed -230 The prefix '{0}' has not been mapped to any URI -231 The start and the end tag were in the different entities -232 The main XML document cannot be empty -233 CDATA is not allowed outside the root element -234 Only numeric character entities or special character entities are legal here -235 Got an unexpected trailing surrogate character -236 No processing instruction starts with 'xml' -237 The XML or Text declaration must start at line/column 1/1 -238 The 'version=' string is required in an XMLDecl -239 The 'standalone=' string is only allowed in the main XML entity -240 The 'encoding=' string is required in an Text Decl -241 When namespaces are enabled, a name can have only one colon character -242 When namespaces are enabled, the colon cannot be the first or last character -243 Colons are not allowed in this name when namespaces are enabled -244 A system exception occured during processing -245 An exception occured! Type:{0}, Message:{1} -246 Unexpected end of file exception. Message: {0} -247 UnexpectedError -248 The schemaLocation attribute does not contain pairs of values. -249 Internal error: don't have a GrammarResolver for TraverseSchema -250 Fatal error encountered during schema scan + 44 Invalid child following the simpleContent child in the complexType + 45 Invalid child following the complexContent child in the complexType + 46 The 'block' attribute values of a complexType must be #all | list(restriction,extension); {0} was found + 47 The 'final' attribute values of a complexType must be #all | list(restriction,extension); {0} was found + 48 An attribute cannot have both 'fixed' and 'default' present at the same time - default used + 49 If default and use are both present, use must have the value 'optional'. + 50 Local attribute:{0} has also a ref defined - name ignored + 51 Global attribute:'{0}' cannot have a ref defined + 52 Error: Attribute '{0}' declared more than once in the same scope- ignoring + 53 Attribute declarations may not contain both a type and a simpleType declaration + 54 SimpleType ({0}:{1}) for attribute: {2} not found + 55 An element cannot have both 'fixed' and 'default' present at the same time + 56 {0}:'{1}' has also a ref defined - name ignored + 57 ref cannot appear with any of type, abstract, block, final, nullable, default or fixed + 58 Invalid {0} name:'{1}' - declaration ignored + 59 Globally-declared element {0} cannot have a ref attribute - ref ignored + 60 Element '{0}' cannot have both a type attribute and a simpleType/complexType type child + 61 Element {0} has a fixed or default value and must have a mixed simple or simple content model + 62 The simpleType {0} that {1} uses has a value of 'final' which does not permit extension + 63 The type '{0}' specified as the base in the simpleContent element must not have complexContent + 64 The type '{0}' is a simple type. It cannot be used in a derivation by RESTRICTION for a complexType + 65 Invalid child following the RESTRICTION or EXTENSION element in the simpleContent definition + 66 Invalid child following the RESTRICTION or EXTENSION element in the complexContent definition + 67 Annotation can only appear once: type {0} + 68 The base type {0} does not allow itself to be used as the base for a restriction and/or as a type in a list and/or union + 69 The value 'substitution' already in the list + 70 The value 'union' is already in the list + 71 The value 'extension' is already in the list + 72 The value 'list' is already in the list + 73 The value 'restriction' is already in the list + 74 Invalid block value: {0} + 75 Invalid final value: {0} + 76 Element {0} cannot be part of the substitution group headed by {1} + 77 Element {0} has a type which does not derive from the type of the element at the head of the substitution group + 78 Duplicate element decl in the same scope: {0} + 79 The 'block' attribute values of an element must be #all | list(substitution,restriction,extension); {0} was found + 80 The 'final' attribute values of an element must be #all | list(restriction,extension); {0} was found + 81 Invalid value '{0}' for attribute: '{1}'. + 82 Ref is present, and simpleType/form/type found + 83 Duplicate reference attribute {0}:{1} in complexType + 84 Derivation by restriction is forbidden by either the base type '{0}' or the schema + 85 Derivation by extension is forbidden by either the base type '{0}' or the schema + 86 The base type specified in the complexContent element must be a complexType + 87 A schemaLocation attribute must be specified on an 'import' element. + 88 Imported schema '{0}' has a different targetNameSpace '{1}' from what's declared '{2}' + 89 Could not get the doc root for imported Schema: {0} + 90 A schemaLocation attribute must be specified on an 'include' element. + 91 Included schema '{0}' has a different targetNameSpace '{1}' + 92 At most one <annotation> element is expected in the content. + 93 The 'atribute' content must be (annotation?, simpleType?); '{0}' encountered + 94 Attribute '{0}' must appear in {1} {2} declarations + 95 Attribute '{0}' cannot appear in {1} {2} declarations + 96 Value of minOccurs '{0}' must not be greater than value of maxOccurs '{1}' + 97 'anyAttribute' elements can contain at most one 'annotation' element in their children + 98 Global <{0}> must have a name - declaration ignored + 99 No circular definitions are allowed: '{0}' +100 Global {0}:'{1}' declared more than once or also declared as {2} +101 Global {0}:'{1}' declared more than once +102 Invalid value '{0}' for facet 'whiteSpace'. Value should be 'collapse'. +103 The namespace of an <import> element must be different from the targetNamespace of the <import>ing schema +104 If the namespace on an <import> element is not present, the <import>ing schema must have a targetNamespace +105 Element '{0}' must not have a value constraint:'{1}' as its type is derived from ID +106 It is an error for NOTATION to be used directly in a schema in element/attribute '{0}' +107 For element '{0}', the {content type} is mixed, then the {content type}'s particle must be emptiable +108 The content of complexType is EMPTY, but base is not empty or does not have emptiable particle. +109 The content type of the base type:'{0}' and derived type:'{1}' must both be mixed or element-only. +110 The content type is not a valid restriction of the content type of the base. +111 Derivation by extension or restriction is forbiden by either the base type '{0}' or the schema +112 The {item type definition} must have {variety} of atomic or union (where all member types must be atomic) +113 The {member type definitions} must all have {variety} of atomic or list +114 The group:'0' must contain (all | choice | sequence) +115 The attributeGroup:'0' must match (annotation?. ((attribute | attributeGroup)*, anyAttribute?)) +116 The child of a model group definition must not specify either the minOccurs or maxOccurs attribute. +117 The {0} -'{1}:{2}'- not found in the schema +118 A group whose content is 'all' must only appear as the content type of a complex type definition. +119 When a model group has {compositor} 'all' which constitutes the {content type} of a complex type, minOccurs=maxOccurs=1 +120 In an 'all' schema component, the value of minCoccurs/maxOccurs of an element must be '0' or '1'. +121 Circular attributeGroup reference -{0}- is disallowed outside <redefine> +122 {0} +125 Expected comment or CDATA +126 Expected an attribute name +127 Expected a notation name +128 Repetition of individual elements is not legal for mixed content models +129 Bad default attribute declaration +130 Expected default attribute declaration, assuming #IMPLIED +131 Attribute list syntax error +132 Expected equal sign +133 Duplication attribute name +134 Bad ID, '{0}', for xml:lang attribute +135 Expected an element name +136 Must start with an XMLDecl +137 Comments must start with <!-- +138 Invalid document structure +139 Expected a 'version=', 'encoding=', or 'standalone=' +140 Bad XML version string +141 Unsupported XML version, '{0}' +142 Unterminated XML decl +143 Bad XML encoding declaration, '{0}' +144 Bad standalone declaration +145 Unterminated comment +146 Processing instruction name expected +147 Unterminated processing instruction +148 Invalid character (Unicode: 0x{0}) +149 Unexpected text before root element +150 Unterminated start tag, '{0}' +151 Expected an attribute value +152 Unterminated end tag +153 Expected type (CDATA, ID, NMTOKEN, ..), for attribute '{0}' of element '{1}' +154 Expected end of tag '{0}' +155 Expected tag name, comment, PI, or other markup +156 Not valid after content +157 Expected comment +158 Expected comment or processing instruction +159 Expected whitespace +160 No root element in DOCTYPE +161 Expected quoted string +162 Expected public id +163 Invalid character in public id (Unicode: 0x{0}) +164 Unterminated DOCTYPE declaration +165 Invalid character in internal subset (Unicode: 0x{0}) +166 Expected CDATA section +167 Invalid initial name character +168 Invalid name character +169 Unexpected whitespace +170 Invalid character in attribute value (Unicode: 0x{0}) +171 Expected a markup declaration +172 Text declaration not legal here +173 Conditional section in internal subset +174 Expected parameter entity name +175 Unterminated entity declaration, '{0}' +176 Invalid character reference +177 Unterminated character reference +178 Expected entity name for reference +179 Entity '{0}' was not found +180 Unparsed entitty references, '{0}', not valid here +181 Unterminated entity reference +182 Recursive entity expansion +183 Partial markup in entity value +184 Unterminated element declaration, '{0}' +185 Expected content specification expression for element '{0}' +186 Expected asterisk +187 Unterminated Content model +188 Expected system id +189 Expected system or public id +190 Unterminated notation declaration +191 Expected ',', '|', or ')' characters +192 Expected '|' or ')' characters +193 Expected ',' or ')' characters or close parenthesis in content model of element '{0}' +194 Expected enumeration value for attribute '{0}' +195 Expected | enumeration separator, or closing paren +196 Unterminated entity literal +197 There are more end tags than start tags +198 Expected an open parenthesis +199 The attribute '{0}' is already used in element '{1}' +200 A '<' character cannot be used in attribute '{0}', except through < +201 A leading surrogate character was not followed by a legal second character +202 Expected ']]>' to end a conditional section +203 Expected INCLUDE or IGNORE here +204 Expected [ to follow INCLUDE or IGNORE +205 Expected a TextDecl here: <?xml .... +206 Expected a XMLDecl here: <?xml .... +207 Unexpected end of entity {0} +208 A PE propogated out of the int/ext subset, discarding extra text +209 An extra ] character was found an ignored +210 PE refs are not allowed inside markup in the internal subset +211 An entity propogated out of the content section into Miscellaneous +212 Expected &# to be followed by a numeric character value +213 Expected an open bracket ('[') here +214 The sequence ']]>' is not allowed in character data +215 Illegal sequence '--' in comment +216 Unterminated CDATA section +217 Expected NDATA +218 NDATA is not legal for parameter entities +219 Hex radix character refs must use 'x', not 'X' +220 '{0}' has already been set. Ignoring redundant setting +221 The XMLDecl strings must be in the order: version, encoding, standalone +222 External entities cannot be referred to from attribute values +223 The XML or Text decl must start with '<?xml ', not '<?XML ' +224 Expected a literal entity value or PUBLIC/SYSTEM id +225 '{0}' is not a valid digit for the indicated radix +226 The input ended before all started tags were ended. Last tag started was '{0}' +227 The content model for element '{0}' is ambiguous +228 Nested CDATA sections are not allowed +229 The prefix '{0}' has not been mapped to any URI +230 The start and the end tag were in the different entities +231 The main XML document cannot be empty +232 CDATA is not allowed outside the root element +233 Only numeric character entities or special character entities are legal here +234 Got an unexpected trailing surrogate character +235 No processing instruction starts with 'xml' +236 The XML or Text declaration must start at line/column 1/1 +237 The 'version=' string is required in an XMLDecl +238 The 'standalone=' string is only allowed in the main XML entity +239 The 'encoding=' string is required in an Text Decl +240 When namespaces are enabled, a name can have only one colon character +241 When namespaces are enabled, the colon cannot be the first or last character +242 Colons are not allowed in this name when namespaces are enabled +243 A system exception occured during processing +244 An exception occured! Type:{0}, Message:{1} +245 Unexpected end of file exception. Message: {0} +246 UnexpectedError +247 The schemaLocation attribute does not contain pairs of values. +248 Internal error: don't have a GrammarResolver for TraverseSchema +249 Fatal error encountered during schema scan $set 2 @@ -287,7 +286,7 @@ $set 2 38 Error: {0} content must be one of element, group, modelGroupRef. Saw {1} 39 Unknown base type {0} for type {1}. 40 Can only have one of type and ref attributes. - 41 Cannot have child content for an element/group declaration that has a ref attribute + 41 A <{0}> declaration that has a ref attribute, cannot have child content. 42 Incorrect type for {0}'s default value: {1} 43 Illegal content {0} in attribute group 44 Value of {0} is not an integer. diff --git a/src/util/Platforms/Win32/Version.rc b/src/util/Platforms/Win32/Version.rc index 481ce9b7948d991c5ec5eb04a33fb2d26d8d2edb..7b8008349ff1a2640c6dbf667497b8d6c652ee22 100644 --- a/src/util/Platforms/Win32/Version.rc +++ b/src/util/Platforms/Win32/Version.rc @@ -99,8 +99,6 @@ END - - // ---------------------------------------------------------------- // This file was generated from the XML error message source. // so do not edit this file directly!! @@ -119,11 +117,11 @@ BEGIN 12 L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x006F\x0072\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x002D\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" 13 L"\x0047\x006C\x006F\x0062\x0061\x006C\x006C\x0079\x002D\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x002D\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" 14 L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x006F\x0072\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x002D\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" - 15 L"\x003C\x0067\x0072\x006F\x0075\x0070\x003E\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x006F\x0072\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x002D\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" - 16 L"\x0041\x006E\x006F\x006E\x0079\x006D\x006F\x0075\x0073\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x00" - 17 L"\x0041\x006E\x006F\x006E\x0079\x006D\x006F\x0075\x0073\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x00" - 18 L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0066\x006F\x0072\x006D\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0074\x0065\x006D\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x006D\x0061\x0074\x0063\x0068\x0020\x0028\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x003F\x002C\x0020\x0028\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x007C\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0029\x003F\x002C\x0020\x0028\x0075\x006E\x0069\x0071\x0075\x0065\x0020\x007C\x0020\x006B\x0065\x0079\x0020\x007C\x0020\x006B\x0065\x0079\x0072\x0065\x0066\x0029\x002A\x0029\x00" - 19 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006E\x0061\x006D\x0065\x003A\x0020\x007B\x0030\x007D\x0020\x002D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" + 15 L"\x003C\x0067\x0072\x006F\x0075\x0070\x003E\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x006F\x0072\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x002D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" + 16 L"\x003C\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0047\x0072\x006F\x0075\x0070\x003E\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x006F\x0072\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x002D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" + 17 L"\x0041\x006E\x006F\x006E\x0079\x006D\x006F\x0075\x0073\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x00" + 18 L"\x0041\x006E\x006F\x006E\x0079\x006D\x006F\x0075\x0073\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x00" + 19 L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0066\x006F\x0072\x006D\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0074\x0065\x006D\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x006D\x0061\x0074\x0063\x0068\x0020\x0028\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x003F\x002C\x0020\x0028\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x007C\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0029\x003F\x002C\x0020\x0028\x0075\x006E\x0069\x0071\x0075\x0065\x0020\x007C\x0020\x006B\x0065\x0079\x0020\x007C\x0020\x006B\x0065\x0079\x0072\x0065\x0066\x0029\x002A\x0029\x00" 20 L"\x0055\x006E\x0074\x0079\x0070\x0065\x0064\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x003A\x0020\x007B\x0030\x007D\x00" 21 L"\x0045\x0072\x0072\x006F\x0072\x0020\x0069\x006E\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006F\x0066\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x00" 22 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x0069\x006E\x0020\x0027\x006C\x0069\x0073\x0074\x0027\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0066\x006F\x0072\x0020\x007B\x0030\x007D\x00" @@ -148,211 +146,210 @@ BEGIN 41 L"\x0042\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0063\x006F\x0075\x006C\x0064\x0020\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0066\x006F\x0075\x006E\x0064\x003A\x0020\x007B\x0030\x007D\x00" 42 L"\x004E\x006F\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0077\x0061\x0073\x0020\x0064\x0065\x0066\x0069\x006E\x0065\x0064\x0020\x0069\x006E\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x003A\x0020\x007B\x0031\x007D\x00" 43 L"\x0045\x0072\x0072\x006F\x0072\x0020\x0063\x0072\x0065\x0061\x0074\x0069\x006E\x0067\x0020\x0064\x0061\x0074\x0061\x0074\x0079\x0070\x0065\x0020\x0076\x0061\x006C\x0069\x0064\x0061\x0074\x006F\x0072\x003A\x0020\x007B\x0030\x007D\x00" - 44 L"\x0045\x0072\x0072\x006F\x0072\x003A\x0020\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x006E\x0061\x006D\x0065\x0020\x002D\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x004E\x0043\x004E\x0061\x006D\x0065\x00" - 45 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0069\x006E\x0067\x0020\x0074\x0068\x0065\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00" - 46 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0069\x006E\x0067\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00" - 47 L"\x0054\x0068\x0065\x0020\x0027\x0062\x006C\x006F\x0063\x006B\x0027\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x0020\x006F\x0066\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0023\x0061\x006C\x006C\x0020\x007C\x0020\x006C\x0069\x0073\x0074\x0028\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x002C\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0029\x003B\x0020\x007B\x0030\x007D\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x00" - 48 L"\x0054\x0068\x0065\x0020\x0027\x0066\x0069\x006E\x0061\x006C\x0027\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x0020\x006F\x0066\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0023\x0061\x006C\x006C\x0020\x007C\x0020\x006C\x0069\x0073\x0074\x0028\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x002C\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0029\x003B\x0020\x007B\x0030\x007D\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x00" - 49 L"\x0041\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0062\x006F\x0074\x0068\x0020\x0027\x0066\x0069\x0078\x0065\x0064\x0027\x0020\x0061\x006E\x0064\x0020\x0027\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0027\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x0020\x0061\x0074\x0020\x0074\x0068\x0065\x0020\x0073\x0061\x006D\x0065\x0020\x0074\x0069\x006D\x0065\x0020\x002D\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0075\x0073\x0065\x0064\x00" - 50 L"\x0049\x0066\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0061\x006E\x0064\x0020\x0075\x0073\x0065\x0020\x0061\x0072\x0065\x0020\x0062\x006F\x0074\x0068\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x002C\x0020\x0075\x0073\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0074\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x006F\x0070\x0074\x0069\x006F\x006E\x0061\x006C\x0027\x002E\x00" - 51 L"\x004C\x006F\x0063\x0061\x006C\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003A\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x006C\x0073\x006F\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0064\x0065\x0066\x0069\x006E\x0065\x0064\x0020\x002D\x0020\x006E\x0061\x006D\x0065\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" - 52 L"\x0047\x006C\x006F\x0062\x0061\x006C\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003A\x0027\x007B\x0030\x007D\x0027\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0064\x0065\x0066\x0069\x006E\x0065\x0064\x00" - 53 L"\x0045\x0072\x0072\x006F\x0072\x003A\x0020\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x006D\x006F\x0072\x0065\x0020\x0074\x0068\x0061\x006E\x0020\x006F\x006E\x0063\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0061\x006D\x0065\x0020\x0073\x0063\x006F\x0070\x0065\x002D\x0020\x0069\x0067\x006E\x006F\x0072\x0069\x006E\x0067\x00" - 54 L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0073\x0020\x006D\x0061\x0079\x0020\x006E\x006F\x0074\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0062\x006F\x0074\x0068\x0020\x0061\x0020\x0074\x0079\x0070\x0065\x0020\x0061\x006E\x0064\x0020\x0061\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00" - 55 L"\x0053\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x0028\x007B\x0030\x007D\x003A\x007B\x0031\x007D\x0029\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003A\x0020\x007B\x0032\x007D\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x0075\x006E\x0064\x00" - 56 L"\x0041\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0062\x006F\x0074\x0068\x0020\x0027\x0066\x0069\x0078\x0065\x0064\x0027\x0020\x0061\x006E\x0064\x0020\x0027\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0027\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x0020\x0061\x0074\x0020\x0074\x0068\x0065\x0020\x0073\x0061\x006D\x0065\x0020\x0074\x0069\x006D\x0065\x00" - 57 L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006E\x0061\x006D\x0065\x003A\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x006C\x0073\x006F\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0064\x0065\x0066\x0069\x006E\x0065\x0064\x0020\x002D\x0020\x006E\x0061\x006D\x0065\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" - 58 L"\x0067\x0072\x006F\x0075\x0070\x003A\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x006C\x0073\x006F\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0064\x0065\x0066\x0069\x006E\x0065\x0064\x0020\x002D\x0020\x006E\x0061\x006D\x0065\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" - 59 L"\x0072\x0065\x0066\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0077\x0069\x0074\x0068\x0020\x0061\x006E\x0079\x0020\x006F\x0066\x0020\x0074\x0079\x0070\x0065\x002C\x0020\x0061\x0062\x0073\x0074\x0072\x0061\x0063\x0074\x002C\x0020\x0062\x006C\x006F\x0063\x006B\x002C\x0020\x0066\x0069\x006E\x0061\x006C\x002C\x0020\x006E\x0075\x006C\x006C\x0061\x0062\x006C\x0065\x002C\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x006F\x0072\x0020\x0066\x0069\x0078\x0065\x0064\x00" - 60 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006E\x0061\x006D\x0065\x003A\x0020\x007B\x0030\x007D\x0020\x002D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" - 61 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x006E\x0061\x006D\x0065\x003A\x0027\x007B\x0030\x007D\x0027\x0020\x002D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" - 62 L"\x0047\x006C\x006F\x0062\x0061\x006C\x006C\x0079\x002D\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x002D\x0020\x0072\x0065\x0066\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" - 63 L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0062\x006F\x0074\x0068\x0020\x0061\x0020\x0074\x0079\x0070\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0061\x006E\x0064\x0020\x0061\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x002F\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0063\x0068\x0069\x006C\x0064\x00" - 64 L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0066\x0069\x0078\x0065\x0064\x0020\x006F\x0072\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0061\x006E\x0064\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006D\x0069\x0078\x0065\x0064\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0020\x006F\x0072\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x00" - 65 L"\x0054\x0068\x0065\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x007B\x0030\x007D\x0020\x0074\x0068\x0061\x0074\x0020\x007B\x0031\x007D\x0020\x0075\x0073\x0065\x0073\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x0027\x0066\x0069\x006E\x0061\x006C\x0027\x0020\x0077\x0068\x0069\x0063\x0068\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0070\x0065\x0072\x006D\x0069\x0074\x0020\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x00" - 66 L"\x0054\x0068\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0065\x0064\x0020\x0061\x0073\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x00" - 67 L"\x0054\x0068\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x0061\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0020\x0074\x0079\x0070\x0065\x002E\x0020\x0049\x0074\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x0020\x0064\x0065\x0072\x0069\x0076\x0061\x0074\x0069\x006F\x006E\x0020\x0062\x0079\x0020\x0052\x0045\x0053\x0054\x0052\x0049\x0043\x0054\x0049\x004F\x004E\x0020\x0066\x006F\x0072\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00" - 68 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0069\x006E\x0067\x0020\x0074\x0068\x0065\x0020\x0052\x0045\x0053\x0054\x0052\x0049\x0043\x0054\x0049\x004F\x004E\x0020\x006F\x0072\x0020\x0045\x0058\x0054\x0045\x004E\x0053\x0049\x004F\x004E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x00" - 69 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0069\x006E\x0067\x0020\x0074\x0068\x0065\x0020\x0052\x0045\x0053\x0054\x0052\x0049\x0043\x0054\x0049\x004F\x004E\x0020\x006F\x0072\x0020\x0045\x0058\x0054\x0045\x004E\x0053\x0049\x004F\x004E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x00" - 70 L"\x0041\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0020\x0063\x0061\x006E\x0020\x006F\x006E\x006C\x0079\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x006F\x006E\x0063\x0065\x003A\x0020\x0074\x0079\x0070\x0065\x0020\x007B\x0030\x007D\x00" - 71 L"\x0054\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x007B\x0030\x007D\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0020\x0069\x0074\x0073\x0065\x006C\x0066\x0020\x0074\x006F\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0061\x0073\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0066\x006F\x0072\x0020\x0061\x0020\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0020\x0061\x006E\x0064\x002F\x006F\x0072\x0020\x0061\x0073\x0020\x0061\x0020\x0074\x0079\x0070\x0065\x0020\x0069\x006E\x0020\x0061\x0020\x006C\x0069\x0073\x0074\x0020\x0061\x006E\x0064\x002F\x006F\x0072\x0020\x0075\x006E\x0069\x006F\x006E\x00" - 72 L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x0073\x0075\x0062\x0073\x0074\x0069\x0074\x0075\x0074\x0069\x006F\x006E\x0027\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00" - 73 L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x0075\x006E\x0069\x006F\x006E\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00" - 74 L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00" - 75 L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x006C\x0069\x0073\x0074\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00" - 76 L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00" - 77 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0062\x006C\x006F\x0063\x006B\x0020\x0076\x0061\x006C\x0075\x0065\x003A\x0020\x007B\x0030\x007D\x00" - 78 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0066\x0069\x006E\x0061\x006C\x0020\x0076\x0061\x006C\x0075\x0065\x003A\x0020\x007B\x0030\x007D\x00" - 79 L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0070\x0061\x0072\x0074\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0073\x0075\x0062\x0073\x0074\x0069\x0074\x0075\x0074\x0069\x006F\x006E\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x0068\x0065\x0061\x0064\x0065\x0064\x0020\x0062\x0079\x0020\x007B\x0031\x007D\x00" - 80 L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0074\x0079\x0070\x0065\x0020\x0077\x0068\x0069\x0063\x0068\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0064\x0065\x0072\x0069\x0076\x0065\x0020\x0066\x0072\x006F\x006D\x0020\x0074\x0068\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0061\x0074\x0020\x0074\x0068\x0065\x0020\x0068\x0065\x0061\x0064\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0073\x0075\x0062\x0073\x0074\x0069\x0074\x0075\x0074\x0069\x006F\x006E\x0020\x0067\x0072\x006F\x0075\x0070\x00" - 81 L"\x0044\x0075\x0070\x006C\x0069\x0063\x0061\x0074\x0065\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0064\x0065\x0063\x006C\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0061\x006D\x0065\x0020\x0073\x0063\x006F\x0070\x0065\x003A\x0020\x007B\x0030\x007D\x00" - 82 L"\x0054\x0068\x0065\x0020\x0027\x0062\x006C\x006F\x0063\x006B\x0027\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0023\x0061\x006C\x006C\x0020\x007C\x0020\x006C\x0069\x0073\x0074\x0028\x0073\x0075\x0062\x0073\x0074\x0069\x0074\x0075\x0074\x0069\x006F\x006E\x002C\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x002C\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0029\x003B\x0020\x007B\x0030\x007D\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x00" - 83 L"\x0054\x0068\x0065\x0020\x0027\x0066\x0069\x006E\x0061\x006C\x0027\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0023\x0061\x006C\x006C\x0020\x007C\x0020\x006C\x0069\x0073\x0074\x0028\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x002C\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0029\x003B\x0020\x007B\x0030\x007D\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x00" - 84 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003A\x0020\x0027\x007B\x0031\x007D\x0027\x002E\x00" - 85 L"\x0052\x0065\x0066\x0020\x0069\x0073\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x002C\x0020\x0061\x006E\x0064\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x002F\x0066\x006F\x0072\x006D\x002F\x0074\x0079\x0070\x0065\x0020\x0066\x006F\x0075\x006E\x0064\x00" - 86 L"\x0044\x0075\x0070\x006C\x0069\x0063\x0061\x0074\x0065\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x007B\x0030\x007D\x003A\x007B\x0031\x007D\x0020\x0069\x006E\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00" - 87 L"\x0044\x0065\x0072\x0069\x0076\x0061\x0074\x0069\x006F\x006E\x0020\x0062\x0079\x0020\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x0073\x0020\x0066\x006F\x0072\x0062\x0069\x0064\x0064\x0065\x006E\x0020\x0062\x0079\x0020\x0065\x0069\x0074\x0068\x0065\x0072\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00" - 88 L"\x0044\x0065\x0072\x0069\x0076\x0061\x0074\x0069\x006F\x006E\x0020\x0062\x0079\x0020\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0020\x0069\x0073\x0020\x0066\x006F\x0072\x0062\x0069\x0064\x0064\x0065\x006E\x0020\x0062\x0079\x0020\x0065\x0069\x0074\x0068\x0065\x0072\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00" - 89 L"\x0054\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00" - 90 L"\x0041\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x004C\x006F\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0065\x0064\x0020\x006F\x006E\x0020\x0061\x006E\x0020\x0027\x0069\x006D\x0070\x006F\x0072\x0074\x0027\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002E\x00" - 91 L"\x0049\x006D\x0070\x006F\x0072\x0074\x0065\x0064\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0074\x0061\x0072\x0067\x0065\x0074\x004E\x0061\x006D\x0065\x0053\x0070\x0061\x0063\x0065\x0020\x0027\x007B\x0031\x007D\x0027\x0020\x0066\x0072\x006F\x006D\x0020\x0077\x0068\x0061\x0074\x0027\x0073\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x0027\x007B\x0032\x007D\x0027\x00" - 92 L"\x0043\x006F\x0075\x006C\x0064\x0020\x006E\x006F\x0074\x0020\x0067\x0065\x0074\x0020\x0074\x0068\x0065\x0020\x0064\x006F\x0063\x0020\x0072\x006F\x006F\x0074\x0020\x0066\x006F\x0072\x0020\x0069\x006D\x0070\x006F\x0072\x0074\x0065\x0064\x0020\x0053\x0063\x0068\x0065\x006D\x0061\x003A\x0020\x007B\x0030\x007D\x00" - 93 L"\x0041\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x004C\x006F\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0065\x0064\x0020\x006F\x006E\x0020\x0061\x006E\x0020\x0027\x0069\x006E\x0063\x006C\x0075\x0064\x0065\x0027\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002E\x00" - 94 L"\x0049\x006E\x0063\x006C\x0075\x0064\x0065\x0064\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0074\x0061\x0072\x0067\x0065\x0074\x004E\x0061\x006D\x0065\x0053\x0070\x0061\x0063\x0065\x0020\x0027\x007B\x0031\x007D\x0027\x00" - 95 L"\x0041\x0074\x0020\x006D\x006F\x0073\x0074\x0020\x006F\x006E\x0065\x0020\x003C\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x003E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x0073\x0020\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x002E\x00" - 96 L"\x0054\x0068\x0065\x0020\x0027\x0061\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0027\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0028\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x003F\x002C\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x003F\x0029\x003B\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0065\x006E\x0063\x006F\x0075\x006E\x0074\x0065\x0072\x0065\x0064\x00" - 97 L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0069\x006E\x0020\x007B\x0031\x007D\x0020\x007B\x0032\x007D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0073\x00" - 98 L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0069\x006E\x0020\x007B\x0031\x007D\x0020\x007B\x0032\x007D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0073\x00" - 99 L"\x0056\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x006D\x0069\x006E\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0067\x0072\x0065\x0061\x0074\x0065\x0072\x0020\x0074\x0068\x0061\x006E\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x006D\x0061\x0078\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x0027\x007B\x0031\x007D\x0027\x00" - 100 L"\x0027\x0061\x006E\x0079\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0027\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0073\x0020\x0063\x0061\x006E\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0061\x0074\x0020\x006D\x006F\x0073\x0074\x0020\x006F\x006E\x0065\x0020\x0027\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0027\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0069\x0072\x0020\x0063\x0068\x0069\x006C\x0064\x0072\x0065\x006E\x00" - 101 L"\x0047\x006C\x006F\x0062\x0061\x006C\x0020\x003C\x007B\x0030\x007D\x003E\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x002D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" - 102 L"\x004E\x006F\x0020\x0063\x0069\x0072\x0063\x0075\x006C\x0061\x0072\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x0073\x0020\x0061\x0072\x0065\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x003A\x0020\x0027\x007B\x0030\x007D\x0027\x00" - 103 L"\x0047\x006C\x006F\x0062\x0061\x006C\x0020\x007B\x0030\x007D\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x006D\x006F\x0072\x0065\x0020\x0074\x0068\x0061\x006E\x0020\x006F\x006E\x0063\x0065\x0020\x006F\x0072\x0020\x0061\x006C\x0073\x006F\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x0061\x0073\x0020\x007B\x0032\x007D\x00" - 104 L"\x0047\x006C\x006F\x0062\x0061\x006C\x0020\x0067\x0072\x006F\x0075\x0070\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x006D\x006F\x0072\x0065\x0020\x0074\x0068\x0061\x006E\x0020\x006F\x006E\x0063\x0065\x00" - 105 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0066\x006F\x0072\x0020\x0066\x0061\x0063\x0065\x0074\x0020\x0027\x0077\x0068\x0069\x0074\x0065\x0053\x0070\x0061\x0063\x0065\x0027\x002E\x0020\x0056\x0061\x006C\x0075\x0065\x0020\x0073\x0068\x006F\x0075\x006C\x0064\x0020\x0062\x0065\x0020\x0027\x0063\x006F\x006C\x006C\x0061\x0070\x0073\x0065\x0027\x002E\x00" - 106 L"\x0054\x0068\x0065\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x003C\x0069\x006D\x0070\x006F\x0072\x0074\x003E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0066\x0072\x006F\x006D\x0020\x0074\x0068\x0065\x0020\x0074\x0061\x0072\x0067\x0065\x0074\x004E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x003C\x0069\x006D\x0070\x006F\x0072\x0074\x003E\x0069\x006E\x0067\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00" - 107 L"\x0049\x0066\x0020\x0074\x0068\x0065\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0020\x006F\x006E\x0020\x0061\x006E\x0020\x003C\x0069\x006D\x0070\x006F\x0072\x0074\x003E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x002C\x0020\x0074\x0068\x0065\x0020\x003C\x0069\x006D\x0070\x006F\x0072\x0074\x003E\x0069\x006E\x0067\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0074\x0061\x0072\x0067\x0065\x0074\x004E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x00" - 108 L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0063\x006F\x006E\x0073\x0074\x0072\x0061\x0069\x006E\x0074\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x0061\x0073\x0020\x0069\x0074\x0073\x0020\x0074\x0079\x0070\x0065\x0020\x0069\x0073\x0020\x0064\x0065\x0072\x0069\x0076\x0065\x0064\x0020\x0066\x0072\x006F\x006D\x0020\x0049\x0044\x00" - 109 L"\x0049\x0074\x0020\x0069\x0073\x0020\x0061\x006E\x0020\x0065\x0072\x0072\x006F\x0072\x0020\x0066\x006F\x0072\x0020\x004E\x004F\x0054\x0041\x0054\x0049\x004F\x004E\x0020\x0074\x006F\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0064\x0069\x0072\x0065\x0063\x0074\x006C\x0079\x0020\x0069\x006E\x0020\x0061\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002F\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x00" - 110 L"\x0046\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x0074\x0068\x0065\x0020\x007B\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x007D\x0020\x0069\x0073\x0020\x006D\x0069\x0078\x0065\x0064\x002C\x0020\x0074\x0068\x0065\x006E\x0020\x0074\x0068\x0065\x0020\x007B\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x007D\x0027\x0073\x0020\x0070\x0061\x0072\x0074\x0069\x0063\x006C\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0065\x006D\x0070\x0074\x0069\x0061\x0062\x006C\x0065\x00" - 111 L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006F\x0066\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x0069\x0073\x0020\x0045\x004D\x0050\x0054\x0059\x002C\x0020\x0062\x0075\x0074\x0020\x0062\x0061\x0073\x0065\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0065\x006D\x0070\x0074\x0079\x0020\x006F\x0072\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0065\x006D\x0070\x0074\x0069\x0061\x0062\x006C\x0065\x0020\x0070\x0061\x0072\x0074\x0069\x0063\x006C\x0065\x002E\x00" - 112 L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x003A\x0027\x007B\x0030\x007D\x0027\x0020\x0061\x006E\x0064\x0020\x0064\x0065\x0072\x0069\x0076\x0065\x0064\x0020\x0074\x0079\x0070\x0065\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x006F\x0074\x0068\x0020\x0062\x0065\x0020\x006D\x0069\x0078\x0065\x0064\x0020\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002D\x006F\x006E\x006C\x0079\x002E\x00" - 113 L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x002E\x00" - 114 L"\x0044\x0065\x0072\x0069\x0076\x0061\x0074\x0069\x006F\x006E\x0020\x0062\x0079\x0020\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0020\x006F\x0072\x0020\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x0073\x0020\x0066\x006F\x0072\x0062\x0069\x0064\x0065\x006E\x0020\x0062\x0079\x0020\x0065\x0069\x0074\x0068\x0065\x0072\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00" - 115 L"\x0054\x0068\x0065\x0020\x007B\x0069\x0074\x0065\x006D\x0020\x0074\x0079\x0070\x0065\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x007D\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x007B\x0076\x0061\x0072\x0069\x0065\x0074\x0079\x007D\x0020\x006F\x0066\x0020\x0061\x0074\x006F\x006D\x0069\x0063\x0020\x006F\x0072\x0020\x0075\x006E\x0069\x006F\x006E\x0020\x0028\x0077\x0068\x0065\x0072\x0065\x0020\x0061\x006C\x006C\x0020\x006D\x0065\x006D\x0062\x0065\x0072\x0020\x0074\x0079\x0070\x0065\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0061\x0074\x006F\x006D\x0069\x0063\x0029\x00" - 116 L"\x0054\x0068\x0065\x0020\x007B\x006D\x0065\x006D\x0062\x0065\x0072\x0020\x0074\x0079\x0070\x0065\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x0073\x007D\x0020\x006D\x0075\x0073\x0074\x0020\x0061\x006C\x006C\x0020\x0068\x0061\x0076\x0065\x0020\x007B\x0076\x0061\x0072\x0069\x0065\x0074\x0079\x007D\x0020\x006F\x0066\x0020\x0061\x0074\x006F\x006D\x0069\x0063\x0020\x006F\x0072\x0020\x006C\x0069\x0073\x0074\x00" - 117 L"\x0054\x0068\x0065\x0020\x0067\x0072\x006F\x0075\x0070\x003A\x0027\x0030\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0028\x0061\x006C\x006C\x0020\x007C\x0020\x0063\x0068\x006F\x0069\x0063\x0065\x0020\x007C\x0020\x0073\x0065\x0071\x0075\x0065\x006E\x0063\x0065\x0029\x00" - 118 L"\x0054\x0068\x0065\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x006F\x0066\x0020\x0061\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x0020\x006D\x0075\x0073\x0074\x0020\x006E\x006F\x0074\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0079\x0020\x0065\x0069\x0074\x0068\x0065\x0072\x0020\x0074\x0068\x0065\x0020\x006D\x0069\x006E\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x006F\x0072\x0020\x006D\x0061\x0078\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x002E\x00" - 119 L"\x0054\x0068\x0065\x0020\x0067\x0072\x006F\x0075\x0070\x003A\x0027\x007B\x0030\x007D\x0027\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x0075\x006E\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00" - 120 L"\x0041\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x0077\x0068\x006F\x0073\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0069\x0073\x0020\x0027\x0061\x006C\x006C\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x006F\x006E\x006C\x0079\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0061\x0073\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x006F\x0066\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0020\x0074\x0079\x0070\x0065\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x002E\x00" - 121 L"\x0057\x0068\x0065\x006E\x0020\x0061\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x0068\x0061\x0073\x0020\x007B\x0063\x006F\x006D\x0070\x006F\x0073\x0069\x0074\x006F\x0072\x007D\x0020\x0027\x0061\x006C\x006C\x0027\x0020\x0077\x0068\x0069\x0063\x0068\x0020\x0063\x006F\x006E\x0073\x0074\x0069\x0074\x0075\x0074\x0065\x0073\x0020\x0074\x0068\x0065\x0020\x007B\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x007D\x0020\x006F\x0066\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0020\x0074\x0079\x0070\x0065\x002C\x0020\x006D\x0069\x006E\x004F\x0063\x0063\x0075\x0072\x0073\x003D\x006D\x0061\x0078\x004F\x0063\x0063\x0075\x0072\x0073\x003D\x0031\x00" - 122 L"\x0049\x006E\x0020\x0061\x006E\x0020\x0027\x0061\x006C\x006C\x0027\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0063\x006F\x006D\x0070\x006F\x006E\x0065\x006E\x0074\x002C\x0020\x0074\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x006D\x0069\x006E\x0043\x006F\x0063\x0063\x0075\x0072\x0073\x002F\x006D\x0061\x0078\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0027\x0030\x0027\x0020\x006F\x0072\x0020\x0027\x0031\x0027\x002E\x00" - 123 L"\x007B\x0030\x007D\x00" - 126 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x0020\x006F\x0072\x0020\x0043\x0044\x0041\x0054\x0041\x00" - 127 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006E\x0061\x006D\x0065\x00" - 128 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0020\x006E\x0061\x006D\x0065\x00" - 129 L"\x0052\x0065\x0070\x0065\x0074\x0069\x0074\x0069\x006F\x006E\x0020\x006F\x0066\x0020\x0069\x006E\x0064\x0069\x0076\x0069\x0064\x0075\x0061\x006C\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0073\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0066\x006F\x0072\x0020\x006D\x0069\x0078\x0065\x0064\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0073\x00" - 130 L"\x0042\x0061\x0064\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00" - 131 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0061\x0073\x0073\x0075\x006D\x0069\x006E\x0067\x0020\x0023\x0049\x004D\x0050\x004C\x0049\x0045\x0044\x0020\x00" - 132 L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006C\x0069\x0073\x0074\x0020\x0073\x0079\x006E\x0074\x0061\x0078\x0020\x0065\x0072\x0072\x006F\x0072\x00" - 133 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x0071\x0075\x0061\x006C\x0020\x0073\x0069\x0067\x006E\x00" - 134 L"\x0044\x0075\x0070\x006C\x0069\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006E\x0061\x006D\x0065\x00" - 135 L"\x0042\x0061\x0064\x0020\x0049\x0044\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x0066\x006F\x0072\x0020\x0078\x006D\x006C\x003A\x006C\x0061\x006E\x0067\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x00" - 136 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006E\x0061\x006D\x0065\x00" - 137 L"\x004D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x0061\x006E\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x00" - 138 L"\x0043\x006F\x006D\x006D\x0065\x006E\x0074\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x003C\x0021\x002D\x002D\x00" - 139 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0064\x006F\x0063\x0075\x006D\x0065\x006E\x0074\x0020\x0073\x0074\x0072\x0075\x0063\x0074\x0075\x0072\x0065\x00" - 140 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0027\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x003D\x0027\x002C\x0020\x0027\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x003D\x0027\x002C\x0020\x006F\x0072\x0020\x0027\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x003D\x0027\x00" - 141 L"\x0042\x0061\x0064\x0020\x0058\x004D\x004C\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x00" - 142 L"\x0055\x006E\x0073\x0075\x0070\x0070\x006F\x0072\x0074\x0065\x0064\x0020\x0058\x004D\x004C\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00" - 143 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0058\x004D\x004C\x0020\x0064\x0065\x0063\x006C\x00" - 144 L"\x0042\x0061\x0064\x0020\x0058\x004D\x004C\x0020\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00" - 145 L"\x0042\x0061\x0064\x0020\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00" - 146 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00" - 147 L"\x0050\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x0020\x006E\x0061\x006D\x0065\x0020\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x00" - 148 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x00" - 149 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00" - 150 L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0065\x0078\x0074\x0020\x0062\x0065\x0066\x006F\x0072\x0065\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x00" - 151 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0074\x0061\x0067\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00" - 152 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x00" - 153 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x00" - 154 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0079\x0070\x0065\x0020\x0028\x0043\x0044\x0041\x0054\x0041\x002C\x0020\x0049\x0044\x002C\x0020\x004E\x004D\x0054\x004F\x004B\x0045\x004E\x002C\x0020\x002E\x002E\x0029\x002C\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0066\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0031\x007D\x0027\x00" - 155 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0074\x0061\x0067\x0020\x0027\x007B\x0030\x007D\x0027\x00" - 156 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0061\x0067\x0020\x006E\x0061\x006D\x0065\x002C\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x002C\x0020\x0050\x0049\x002C\x0020\x006F\x0072\x0020\x006F\x0074\x0068\x0065\x0072\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x00" - 157 L"\x004E\x006F\x0074\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0061\x0066\x0074\x0065\x0072\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x00" - 158 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00" - 159 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x0020\x006F\x0072\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x00" - 160 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0077\x0068\x0069\x0074\x0065\x0073\x0070\x0061\x0063\x0065\x00" - 161 L"\x004E\x006F\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0044\x004F\x0043\x0054\x0059\x0050\x0045\x00" - 162 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0071\x0075\x006F\x0074\x0065\x0064\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x00" - 163 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x00" - 164 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00" - 165 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0044\x004F\x0043\x0054\x0059\x0050\x0045\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00" - 166 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00" - 167 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00" - 168 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0069\x006E\x0069\x0074\x0069\x0061\x006C\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00" - 169 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00" - 170 L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0077\x0068\x0069\x0074\x0065\x0073\x0070\x0061\x0063\x0065\x00" - 171 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00" - 172 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00" - 173 L"\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0068\x0065\x0072\x0065\x00" - 174 L"\x0043\x006F\x006E\x0064\x0069\x0074\x0069\x006F\x006E\x0061\x006C\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x006E\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x00" - 175 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0070\x0061\x0072\x0061\x006D\x0065\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006E\x0061\x006D\x0065\x00" - 176 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00" - 177 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00" - 178 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00" - 179 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006E\x0061\x006D\x0065\x0020\x0066\x006F\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00" - 180 L"\x0045\x006E\x0074\x0069\x0074\x0079\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0077\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x0075\x006E\x0064\x00" - 181 L"\x0055\x006E\x0070\x0061\x0072\x0073\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0074\x0079\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x0073\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0068\x0065\x0072\x0065\x00" - 182 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00" - 183 L"\x0052\x0065\x0063\x0075\x0072\x0073\x0069\x0076\x0065\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0065\x0078\x0070\x0061\x006E\x0073\x0069\x006F\x006E\x00" - 184 L"\x0050\x0061\x0072\x0074\x0069\x0061\x006C\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0069\x006E\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0076\x0061\x006C\x0075\x0065\x00" - 185 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00" - 186 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0065\x0078\x0070\x0072\x0065\x0073\x0073\x0069\x006F\x006E\x0020\x0066\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x00" - 187 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0073\x0074\x0065\x0072\x0069\x0073\x006B\x00" - 188 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x00" - 189 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x0069\x0064\x00" - 190 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x006F\x0072\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x00" - 191 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00" - 192 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x002C\x0027\x002C\x0020\x0027\x007C\x0027\x002C\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x00" - 193 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x007C\x0027\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x00" - 194 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x002C\x0027\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x0020\x006F\x0072\x0020\x0063\x006C\x006F\x0073\x0065\x0020\x0070\x0061\x0072\x0065\x006E\x0074\x0068\x0065\x0073\x0069\x0073\x0020\x0069\x006E\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x006F\x0066\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x00" - 195 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0075\x006D\x0065\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x00" - 196 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x007C\x0020\x0065\x006E\x0075\x006D\x0065\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0073\x0065\x0070\x0061\x0072\x0061\x0074\x006F\x0072\x002C\x0020\x006F\x0072\x0020\x0063\x006C\x006F\x0073\x0069\x006E\x0067\x0020\x0070\x0061\x0072\x0065\x006E\x00" - 197 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006C\x0069\x0074\x0065\x0072\x0061\x006C\x00" - 198 L"\x0054\x0068\x0065\x0072\x0065\x0020\x0061\x0072\x0065\x0020\x006D\x006F\x0072\x0065\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x0073\x0020\x0074\x0068\x0061\x006E\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0074\x0061\x0067\x0073\x00" - 199 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x006F\x0070\x0065\x006E\x0020\x0070\x0061\x0072\x0065\x006E\x0074\x0068\x0065\x0073\x0069\x0073\x00" - 200 L"\x0054\x0068\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0075\x0073\x0065\x0064\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0031\x007D\x0027\x00" - 201 L"\x0041\x0020\x0027\x003C\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0020\x0074\x0068\x0072\x006F\x0075\x0067\x0068\x0020\x0026\x006C\x0074\x003B\x00" - 202 L"\x0041\x0020\x006C\x0065\x0061\x0064\x0069\x006E\x0067\x0020\x0073\x0075\x0072\x0072\x006F\x0067\x0061\x0074\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0077\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0062\x0079\x0020\x0061\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0073\x0065\x0063\x006F\x006E\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00" - 203 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x005D\x005D\x003E\x0027\x0020\x0074\x006F\x0020\x0065\x006E\x0064\x0020\x0061\x0020\x0063\x006F\x006E\x0064\x0069\x0074\x0069\x006F\x006E\x0061\x006C\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00" - 204 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0049\x004E\x0043\x004C\x0055\x0044\x0045\x0020\x006F\x0072\x0020\x0049\x0047\x004E\x004F\x0052\x0045\x0020\x0068\x0065\x0072\x0065\x00" - 205 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x005B\x0020\x0074\x006F\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0020\x0049\x004E\x0043\x004C\x0055\x0044\x0045\x0020\x006F\x0072\x0020\x0049\x0047\x004E\x004F\x0052\x0045\x00" - 206 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0054\x0065\x0078\x0074\x0044\x0065\x0063\x006C\x0020\x0068\x0065\x0072\x0065\x003A\x0020\x003C\x003F\x0078\x006D\x006C\x0020\x002E\x002E\x002E\x002E\x00" - 207 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x0020\x0068\x0065\x0072\x0065\x003A\x0020\x003C\x003F\x0078\x006D\x006C\x0020\x002E\x002E\x002E\x002E\x00" - 208 L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x007B\x0030\x007D\x00" - 209 L"\x0041\x0020\x0050\x0045\x0020\x0070\x0072\x006F\x0070\x006F\x0067\x0061\x0074\x0065\x0064\x0020\x006F\x0075\x0074\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0074\x002F\x0065\x0078\x0074\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x002C\x0020\x0064\x0069\x0073\x0063\x0061\x0072\x0064\x0069\x006E\x0067\x0020\x0065\x0078\x0074\x0072\x0061\x0020\x0074\x0065\x0078\x0074\x00" - 210 L"\x0041\x006E\x0020\x0065\x0078\x0074\x0072\x0061\x0020\x005D\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x0020\x0061\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" - 211 L"\x0050\x0045\x0020\x0072\x0065\x0066\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0073\x0069\x0064\x0065\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x00" - 212 L"\x0041\x006E\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0070\x0072\x006F\x0070\x006F\x0067\x0061\x0074\x0065\x0064\x0020\x006F\x0075\x0074\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x006E\x0074\x006F\x0020\x004D\x0069\x0073\x0063\x0065\x006C\x006C\x0061\x006E\x0065\x006F\x0075\x0073\x00" - 213 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0026\x0023\x0020\x0074\x006F\x0020\x0062\x0065\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0062\x0079\x0020\x0061\x0020\x006E\x0075\x006D\x0065\x0072\x0069\x0063\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0076\x0061\x006C\x0075\x0065\x00" - 214 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x006F\x0070\x0065\x006E\x0020\x0062\x0072\x0061\x0063\x006B\x0065\x0074\x0020\x0028\x0027\x005B\x0027\x0029\x0020\x0068\x0065\x0072\x0065\x00" - 215 L"\x0054\x0068\x0065\x0020\x0073\x0065\x0071\x0075\x0065\x006E\x0063\x0065\x0020\x0027\x005D\x005D\x003E\x0027\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0064\x0061\x0074\x0061\x00" - 216 L"\x0049\x006C\x006C\x0065\x0067\x0061\x006C\x0020\x0073\x0065\x0071\x0075\x0065\x006E\x0063\x0065\x0020\x0027\x002D\x002D\x0027\x0020\x0069\x006E\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00" - 217 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00" - 218 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x004E\x0044\x0041\x0054\x0041\x00" - 219 L"\x004E\x0044\x0041\x0054\x0041\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0066\x006F\x0072\x0020\x0070\x0061\x0072\x0061\x006D\x0065\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x00" - 220 L"\x0048\x0065\x0078\x0020\x0072\x0061\x0064\x0069\x0078\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0075\x0073\x0065\x0020\x0027\x0078\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0027\x0058\x0027\x00" - 221 L"\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0062\x0065\x0065\x006E\x0020\x0073\x0065\x0074\x002E\x0020\x0049\x0067\x006E\x006F\x0072\x0069\x006E\x0067\x0020\x0072\x0065\x0064\x0075\x006E\x0064\x0061\x006E\x0074\x0020\x0073\x0065\x0074\x0074\x0069\x006E\x0067\x00" - 222 L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006F\x0072\x0064\x0065\x0072\x003A\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x002C\x0020\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x002C\x0020\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x00" - 223 L"\x0045\x0078\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0072\x0065\x0066\x0065\x0072\x0072\x0065\x0064\x0020\x0074\x006F\x0020\x0066\x0072\x006F\x006D\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x00" - 224 L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0020\x006F\x0072\x0020\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x0027\x003C\x003F\x0078\x006D\x006C\x0020\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0027\x003C\x003F\x0058\x004D\x004C\x0020\x0027\x00" - 225 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006C\x0069\x0074\x0065\x0072\x0061\x006C\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0072\x0020\x0050\x0055\x0042\x004C\x0049\x0043\x002F\x0053\x0059\x0053\x0054\x0045\x004D\x0020\x0069\x0064\x00" - 226 L"\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0064\x0069\x0067\x0069\x0074\x0020\x0066\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0064\x0069\x0063\x0061\x0074\x0065\x0064\x0020\x0072\x0061\x0064\x0069\x0078\x00" - 227 L"\x0054\x0068\x0065\x0020\x0069\x006E\x0070\x0075\x0074\x0020\x0065\x006E\x0064\x0065\x0064\x0020\x0062\x0065\x0066\x006F\x0072\x0065\x0020\x0061\x006C\x006C\x0020\x0073\x0074\x0061\x0072\x0074\x0065\x0064\x0020\x0074\x0061\x0067\x0073\x0020\x0077\x0065\x0072\x0065\x0020\x0065\x006E\x0064\x0065\x0064\x002E\x0020\x004C\x0061\x0073\x0074\x0020\x0074\x0061\x0067\x0020\x0073\x0074\x0061\x0072\x0074\x0065\x0064\x0020\x0077\x0061\x0073\x0020\x0027\x007B\x0030\x007D\x0027\x00" - 228 L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x0066\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x0061\x006D\x0062\x0069\x0067\x0075\x006F\x0075\x0073\x00" - 229 L"\x004E\x0065\x0073\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x00" - 230 L"\x0054\x0068\x0065\x0020\x0070\x0072\x0065\x0066\x0069\x0078\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0062\x0065\x0065\x006E\x0020\x006D\x0061\x0070\x0070\x0065\x0064\x0020\x0074\x006F\x0020\x0061\x006E\x0079\x0020\x0055\x0052\x0049\x00" - 231 L"\x0054\x0068\x0065\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0061\x006E\x0064\x0020\x0074\x0068\x0065\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x0020\x0077\x0065\x0072\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x00" - 232 L"\x0054\x0068\x0065\x0020\x006D\x0061\x0069\x006E\x0020\x0058\x004D\x004C\x0020\x0064\x006F\x0063\x0075\x006D\x0065\x006E\x0074\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0065\x006D\x0070\x0074\x0079\x00" - 233 L"\x0043\x0044\x0041\x0054\x0041\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x006F\x0075\x0074\x0073\x0069\x0064\x0065\x0020\x0074\x0068\x0065\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x00" - 234 L"\x004F\x006E\x006C\x0079\x0020\x006E\x0075\x006D\x0065\x0072\x0069\x0063\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x006F\x0072\x0020\x0073\x0070\x0065\x0063\x0069\x0061\x006C\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0068\x0065\x0072\x0065\x00" - 235 L"\x0047\x006F\x0074\x0020\x0061\x006E\x0020\x0075\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0072\x0061\x0069\x006C\x0069\x006E\x0067\x0020\x0073\x0075\x0072\x0072\x006F\x0067\x0061\x0074\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00" - 236 L"\x004E\x006F\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x0020\x0073\x0074\x0061\x0072\x0074\x0073\x0020\x0077\x0069\x0074\x0068\x0020\x0027\x0078\x006D\x006C\x0027\x00" - 237 L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0020\x006F\x0072\x0020\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0061\x0074\x0020\x006C\x0069\x006E\x0065\x002F\x0063\x006F\x006C\x0075\x006D\x006E\x0020\x0031\x002F\x0031\x00" - 238 L"\x0054\x0068\x0065\x0020\x0027\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x003D\x0027\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0020\x0069\x0073\x0020\x0072\x0065\x0071\x0075\x0069\x0072\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x006E\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x00" - 239 L"\x0054\x0068\x0065\x0020\x0027\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x003D\x0027\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0020\x0069\x0073\x0020\x006F\x006E\x006C\x0079\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006D\x0061\x0069\x006E\x0020\x0058\x004D\x004C\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x00" - 240 L"\x0054\x0068\x0065\x0020\x0027\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x003D\x0027\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0020\x0069\x0073\x0020\x0072\x0065\x0071\x0075\x0069\x0072\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x006E\x0020\x0054\x0065\x0078\x0074\x0020\x0044\x0065\x0063\x006C\x00" - 241 L"\x0057\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x002C\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0061\x006E\x0020\x0068\x0061\x0076\x0065\x0020\x006F\x006E\x006C\x0079\x0020\x006F\x006E\x0065\x0020\x0063\x006F\x006C\x006F\x006E\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00" - 242 L"\x0057\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x002C\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006C\x006F\x006E\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0074\x0068\x0065\x0020\x0066\x0069\x0072\x0073\x0074\x0020\x006F\x0072\x0020\x006C\x0061\x0073\x0074\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00" - 243 L"\x0043\x006F\x006C\x006F\x006E\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0069\x0073\x0020\x006E\x0061\x006D\x0065\x0020\x0077\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x00" - 244 L"\x0041\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x0020\x006F\x0063\x0063\x0075\x0072\x0065\x0064\x0020\x0064\x0075\x0072\x0069\x006E\x0067\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x00" - 245 L"\x0041\x006E\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x0020\x006F\x0063\x0063\x0075\x0072\x0065\x0064\x0021\x0020\x0054\x0079\x0070\x0065\x003A\x007B\x0030\x007D\x002C\x0020\x004D\x0065\x0073\x0073\x0061\x0067\x0065\x003A\x007B\x0031\x007D\x00" - 246 L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0066\x0069\x006C\x0065\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x002E\x0020\x004D\x0065\x0073\x0073\x0061\x0067\x0065\x003A\x0020\x007B\x0030\x007D\x00" - 247 L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0045\x0072\x0072\x006F\x0072\x00" - 248 L"\x0054\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x004C\x006F\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0070\x0061\x0069\x0072\x0073\x0020\x006F\x0066\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x002E\x00" - 249 L"\x0049\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0065\x0072\x0072\x006F\x0072\x003A\x0020\x0064\x006F\x006E\x0027\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0047\x0072\x0061\x006D\x006D\x0061\x0072\x0052\x0065\x0073\x006F\x006C\x0076\x0065\x0072\x0020\x0066\x006F\x0072\x0020\x0054\x0072\x0061\x0076\x0065\x0072\x0073\x0065\x0053\x0063\x0068\x0065\x006D\x0061\x00" - 250 L"\x0046\x0061\x0074\x0061\x006C\x0020\x0065\x0072\x0072\x006F\x0072\x0020\x0065\x006E\x0063\x006F\x0075\x006E\x0074\x0065\x0072\x0065\x0064\x0020\x0064\x0075\x0072\x0069\x006E\x0067\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0073\x0063\x0061\x006E\x00" + 44 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0069\x006E\x0067\x0020\x0074\x0068\x0065\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00" + 45 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0069\x006E\x0067\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00" + 46 L"\x0054\x0068\x0065\x0020\x0027\x0062\x006C\x006F\x0063\x006B\x0027\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x0020\x006F\x0066\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0023\x0061\x006C\x006C\x0020\x007C\x0020\x006C\x0069\x0073\x0074\x0028\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x002C\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0029\x003B\x0020\x007B\x0030\x007D\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x00" + 47 L"\x0054\x0068\x0065\x0020\x0027\x0066\x0069\x006E\x0061\x006C\x0027\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x0020\x006F\x0066\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0023\x0061\x006C\x006C\x0020\x007C\x0020\x006C\x0069\x0073\x0074\x0028\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x002C\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0029\x003B\x0020\x007B\x0030\x007D\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x00" + 48 L"\x0041\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0062\x006F\x0074\x0068\x0020\x0027\x0066\x0069\x0078\x0065\x0064\x0027\x0020\x0061\x006E\x0064\x0020\x0027\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0027\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x0020\x0061\x0074\x0020\x0074\x0068\x0065\x0020\x0073\x0061\x006D\x0065\x0020\x0074\x0069\x006D\x0065\x0020\x002D\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0075\x0073\x0065\x0064\x00" + 49 L"\x0049\x0066\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0061\x006E\x0064\x0020\x0075\x0073\x0065\x0020\x0061\x0072\x0065\x0020\x0062\x006F\x0074\x0068\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x002C\x0020\x0075\x0073\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0074\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x006F\x0070\x0074\x0069\x006F\x006E\x0061\x006C\x0027\x002E\x00" + 50 L"\x004C\x006F\x0063\x0061\x006C\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003A\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x006C\x0073\x006F\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0064\x0065\x0066\x0069\x006E\x0065\x0064\x0020\x002D\x0020\x006E\x0061\x006D\x0065\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" + 51 L"\x0047\x006C\x006F\x0062\x0061\x006C\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003A\x0027\x007B\x0030\x007D\x0027\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0064\x0065\x0066\x0069\x006E\x0065\x0064\x00" + 52 L"\x0045\x0072\x0072\x006F\x0072\x003A\x0020\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x006D\x006F\x0072\x0065\x0020\x0074\x0068\x0061\x006E\x0020\x006F\x006E\x0063\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0061\x006D\x0065\x0020\x0073\x0063\x006F\x0070\x0065\x002D\x0020\x0069\x0067\x006E\x006F\x0072\x0069\x006E\x0067\x00" + 53 L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0073\x0020\x006D\x0061\x0079\x0020\x006E\x006F\x0074\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0062\x006F\x0074\x0068\x0020\x0061\x0020\x0074\x0079\x0070\x0065\x0020\x0061\x006E\x0064\x0020\x0061\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00" + 54 L"\x0053\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x0028\x007B\x0030\x007D\x003A\x007B\x0031\x007D\x0029\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003A\x0020\x007B\x0032\x007D\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x0075\x006E\x0064\x00" + 55 L"\x0041\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0062\x006F\x0074\x0068\x0020\x0027\x0066\x0069\x0078\x0065\x0064\x0027\x0020\x0061\x006E\x0064\x0020\x0027\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0027\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x0020\x0061\x0074\x0020\x0074\x0068\x0065\x0020\x0073\x0061\x006D\x0065\x0020\x0074\x0069\x006D\x0065\x00" + 56 L"\x007B\x0030\x007D\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x006C\x0073\x006F\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0064\x0065\x0066\x0069\x006E\x0065\x0064\x0020\x002D\x0020\x006E\x0061\x006D\x0065\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" + 57 L"\x0072\x0065\x0066\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0077\x0069\x0074\x0068\x0020\x0061\x006E\x0079\x0020\x006F\x0066\x0020\x0074\x0079\x0070\x0065\x002C\x0020\x0061\x0062\x0073\x0074\x0072\x0061\x0063\x0074\x002C\x0020\x0062\x006C\x006F\x0063\x006B\x002C\x0020\x0066\x0069\x006E\x0061\x006C\x002C\x0020\x006E\x0075\x006C\x006C\x0061\x0062\x006C\x0065\x002C\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x006F\x0072\x0020\x0066\x0069\x0078\x0065\x0064\x00" + 58 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x007B\x0030\x007D\x0020\x006E\x0061\x006D\x0065\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x002D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" + 59 L"\x0047\x006C\x006F\x0062\x0061\x006C\x006C\x0079\x002D\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x002D\x0020\x0072\x0065\x0066\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" + 60 L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0062\x006F\x0074\x0068\x0020\x0061\x0020\x0074\x0079\x0070\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0061\x006E\x0064\x0020\x0061\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x002F\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0063\x0068\x0069\x006C\x0064\x00" + 61 L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0066\x0069\x0078\x0065\x0064\x0020\x006F\x0072\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0061\x006E\x0064\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006D\x0069\x0078\x0065\x0064\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0020\x006F\x0072\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x00" + 62 L"\x0054\x0068\x0065\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x007B\x0030\x007D\x0020\x0074\x0068\x0061\x0074\x0020\x007B\x0031\x007D\x0020\x0075\x0073\x0065\x0073\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x0027\x0066\x0069\x006E\x0061\x006C\x0027\x0020\x0077\x0068\x0069\x0063\x0068\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0070\x0065\x0072\x006D\x0069\x0074\x0020\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x00" + 63 L"\x0054\x0068\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0065\x0064\x0020\x0061\x0073\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x00" + 64 L"\x0054\x0068\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x0061\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0020\x0074\x0079\x0070\x0065\x002E\x0020\x0049\x0074\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x0020\x0064\x0065\x0072\x0069\x0076\x0061\x0074\x0069\x006F\x006E\x0020\x0062\x0079\x0020\x0052\x0045\x0053\x0054\x0052\x0049\x0043\x0054\x0049\x004F\x004E\x0020\x0066\x006F\x0072\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00" + 65 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0069\x006E\x0067\x0020\x0074\x0068\x0065\x0020\x0052\x0045\x0053\x0054\x0052\x0049\x0043\x0054\x0049\x004F\x004E\x0020\x006F\x0072\x0020\x0045\x0058\x0054\x0045\x004E\x0053\x0049\x004F\x004E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x00" + 66 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0069\x006E\x0067\x0020\x0074\x0068\x0065\x0020\x0052\x0045\x0053\x0054\x0052\x0049\x0043\x0054\x0049\x004F\x004E\x0020\x006F\x0072\x0020\x0045\x0058\x0054\x0045\x004E\x0053\x0049\x004F\x004E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x00" + 67 L"\x0041\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0020\x0063\x0061\x006E\x0020\x006F\x006E\x006C\x0079\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x006F\x006E\x0063\x0065\x003A\x0020\x0074\x0079\x0070\x0065\x0020\x007B\x0030\x007D\x00" + 68 L"\x0054\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x007B\x0030\x007D\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0020\x0069\x0074\x0073\x0065\x006C\x0066\x0020\x0074\x006F\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0061\x0073\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0066\x006F\x0072\x0020\x0061\x0020\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0020\x0061\x006E\x0064\x002F\x006F\x0072\x0020\x0061\x0073\x0020\x0061\x0020\x0074\x0079\x0070\x0065\x0020\x0069\x006E\x0020\x0061\x0020\x006C\x0069\x0073\x0074\x0020\x0061\x006E\x0064\x002F\x006F\x0072\x0020\x0075\x006E\x0069\x006F\x006E\x00" + 69 L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x0073\x0075\x0062\x0073\x0074\x0069\x0074\x0075\x0074\x0069\x006F\x006E\x0027\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00" + 70 L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x0075\x006E\x0069\x006F\x006E\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00" + 71 L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00" + 72 L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x006C\x0069\x0073\x0074\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00" + 73 L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00" + 74 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0062\x006C\x006F\x0063\x006B\x0020\x0076\x0061\x006C\x0075\x0065\x003A\x0020\x007B\x0030\x007D\x00" + 75 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0066\x0069\x006E\x0061\x006C\x0020\x0076\x0061\x006C\x0075\x0065\x003A\x0020\x007B\x0030\x007D\x00" + 76 L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0070\x0061\x0072\x0074\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0073\x0075\x0062\x0073\x0074\x0069\x0074\x0075\x0074\x0069\x006F\x006E\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x0068\x0065\x0061\x0064\x0065\x0064\x0020\x0062\x0079\x0020\x007B\x0031\x007D\x00" + 77 L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0074\x0079\x0070\x0065\x0020\x0077\x0068\x0069\x0063\x0068\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0064\x0065\x0072\x0069\x0076\x0065\x0020\x0066\x0072\x006F\x006D\x0020\x0074\x0068\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0061\x0074\x0020\x0074\x0068\x0065\x0020\x0068\x0065\x0061\x0064\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0073\x0075\x0062\x0073\x0074\x0069\x0074\x0075\x0074\x0069\x006F\x006E\x0020\x0067\x0072\x006F\x0075\x0070\x00" + 78 L"\x0044\x0075\x0070\x006C\x0069\x0063\x0061\x0074\x0065\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0064\x0065\x0063\x006C\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0061\x006D\x0065\x0020\x0073\x0063\x006F\x0070\x0065\x003A\x0020\x007B\x0030\x007D\x00" + 79 L"\x0054\x0068\x0065\x0020\x0027\x0062\x006C\x006F\x0063\x006B\x0027\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0023\x0061\x006C\x006C\x0020\x007C\x0020\x006C\x0069\x0073\x0074\x0028\x0073\x0075\x0062\x0073\x0074\x0069\x0074\x0075\x0074\x0069\x006F\x006E\x002C\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x002C\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0029\x003B\x0020\x007B\x0030\x007D\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x00" + 80 L"\x0054\x0068\x0065\x0020\x0027\x0066\x0069\x006E\x0061\x006C\x0027\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0023\x0061\x006C\x006C\x0020\x007C\x0020\x006C\x0069\x0073\x0074\x0028\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x002C\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0029\x003B\x0020\x007B\x0030\x007D\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x00" + 81 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003A\x0020\x0027\x007B\x0031\x007D\x0027\x002E\x00" + 82 L"\x0052\x0065\x0066\x0020\x0069\x0073\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x002C\x0020\x0061\x006E\x0064\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x002F\x0066\x006F\x0072\x006D\x002F\x0074\x0079\x0070\x0065\x0020\x0066\x006F\x0075\x006E\x0064\x00" + 83 L"\x0044\x0075\x0070\x006C\x0069\x0063\x0061\x0074\x0065\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x007B\x0030\x007D\x003A\x007B\x0031\x007D\x0020\x0069\x006E\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00" + 84 L"\x0044\x0065\x0072\x0069\x0076\x0061\x0074\x0069\x006F\x006E\x0020\x0062\x0079\x0020\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x0073\x0020\x0066\x006F\x0072\x0062\x0069\x0064\x0064\x0065\x006E\x0020\x0062\x0079\x0020\x0065\x0069\x0074\x0068\x0065\x0072\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00" + 85 L"\x0044\x0065\x0072\x0069\x0076\x0061\x0074\x0069\x006F\x006E\x0020\x0062\x0079\x0020\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0020\x0069\x0073\x0020\x0066\x006F\x0072\x0062\x0069\x0064\x0064\x0065\x006E\x0020\x0062\x0079\x0020\x0065\x0069\x0074\x0068\x0065\x0072\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00" + 86 L"\x0054\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00" + 87 L"\x0041\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x004C\x006F\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0065\x0064\x0020\x006F\x006E\x0020\x0061\x006E\x0020\x0027\x0069\x006D\x0070\x006F\x0072\x0074\x0027\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002E\x00" + 88 L"\x0049\x006D\x0070\x006F\x0072\x0074\x0065\x0064\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0074\x0061\x0072\x0067\x0065\x0074\x004E\x0061\x006D\x0065\x0053\x0070\x0061\x0063\x0065\x0020\x0027\x007B\x0031\x007D\x0027\x0020\x0066\x0072\x006F\x006D\x0020\x0077\x0068\x0061\x0074\x0027\x0073\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x0027\x007B\x0032\x007D\x0027\x00" + 89 L"\x0043\x006F\x0075\x006C\x0064\x0020\x006E\x006F\x0074\x0020\x0067\x0065\x0074\x0020\x0074\x0068\x0065\x0020\x0064\x006F\x0063\x0020\x0072\x006F\x006F\x0074\x0020\x0066\x006F\x0072\x0020\x0069\x006D\x0070\x006F\x0072\x0074\x0065\x0064\x0020\x0053\x0063\x0068\x0065\x006D\x0061\x003A\x0020\x007B\x0030\x007D\x00" + 90 L"\x0041\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x004C\x006F\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0065\x0064\x0020\x006F\x006E\x0020\x0061\x006E\x0020\x0027\x0069\x006E\x0063\x006C\x0075\x0064\x0065\x0027\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002E\x00" + 91 L"\x0049\x006E\x0063\x006C\x0075\x0064\x0065\x0064\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0074\x0061\x0072\x0067\x0065\x0074\x004E\x0061\x006D\x0065\x0053\x0070\x0061\x0063\x0065\x0020\x0027\x007B\x0031\x007D\x0027\x00" + 92 L"\x0041\x0074\x0020\x006D\x006F\x0073\x0074\x0020\x006F\x006E\x0065\x0020\x003C\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x003E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x0073\x0020\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x002E\x00" + 93 L"\x0054\x0068\x0065\x0020\x0027\x0061\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0027\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0028\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x003F\x002C\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x003F\x0029\x003B\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0065\x006E\x0063\x006F\x0075\x006E\x0074\x0065\x0072\x0065\x0064\x00" + 94 L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0069\x006E\x0020\x007B\x0031\x007D\x0020\x007B\x0032\x007D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0073\x00" + 95 L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0069\x006E\x0020\x007B\x0031\x007D\x0020\x007B\x0032\x007D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0073\x00" + 96 L"\x0056\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x006D\x0069\x006E\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0067\x0072\x0065\x0061\x0074\x0065\x0072\x0020\x0074\x0068\x0061\x006E\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x006D\x0061\x0078\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x0027\x007B\x0031\x007D\x0027\x00" + 97 L"\x0027\x0061\x006E\x0079\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0027\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0073\x0020\x0063\x0061\x006E\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0061\x0074\x0020\x006D\x006F\x0073\x0074\x0020\x006F\x006E\x0065\x0020\x0027\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0027\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0069\x0072\x0020\x0063\x0068\x0069\x006C\x0064\x0072\x0065\x006E\x00" + 98 L"\x0047\x006C\x006F\x0062\x0061\x006C\x0020\x003C\x007B\x0030\x007D\x003E\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x002D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" + 99 L"\x004E\x006F\x0020\x0063\x0069\x0072\x0063\x0075\x006C\x0061\x0072\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x0073\x0020\x0061\x0072\x0065\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x003A\x0020\x0027\x007B\x0030\x007D\x0027\x00" + 100 L"\x0047\x006C\x006F\x0062\x0061\x006C\x0020\x007B\x0030\x007D\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x006D\x006F\x0072\x0065\x0020\x0074\x0068\x0061\x006E\x0020\x006F\x006E\x0063\x0065\x0020\x006F\x0072\x0020\x0061\x006C\x0073\x006F\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x0061\x0073\x0020\x007B\x0032\x007D\x00" + 101 L"\x0047\x006C\x006F\x0062\x0061\x006C\x0020\x007B\x0030\x007D\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x006D\x006F\x0072\x0065\x0020\x0074\x0068\x0061\x006E\x0020\x006F\x006E\x0063\x0065\x00" + 102 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0066\x006F\x0072\x0020\x0066\x0061\x0063\x0065\x0074\x0020\x0027\x0077\x0068\x0069\x0074\x0065\x0053\x0070\x0061\x0063\x0065\x0027\x002E\x0020\x0056\x0061\x006C\x0075\x0065\x0020\x0073\x0068\x006F\x0075\x006C\x0064\x0020\x0062\x0065\x0020\x0027\x0063\x006F\x006C\x006C\x0061\x0070\x0073\x0065\x0027\x002E\x00" + 103 L"\x0054\x0068\x0065\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x003C\x0069\x006D\x0070\x006F\x0072\x0074\x003E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0066\x0072\x006F\x006D\x0020\x0074\x0068\x0065\x0020\x0074\x0061\x0072\x0067\x0065\x0074\x004E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x003C\x0069\x006D\x0070\x006F\x0072\x0074\x003E\x0069\x006E\x0067\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00" + 104 L"\x0049\x0066\x0020\x0074\x0068\x0065\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0020\x006F\x006E\x0020\x0061\x006E\x0020\x003C\x0069\x006D\x0070\x006F\x0072\x0074\x003E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x002C\x0020\x0074\x0068\x0065\x0020\x003C\x0069\x006D\x0070\x006F\x0072\x0074\x003E\x0069\x006E\x0067\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0074\x0061\x0072\x0067\x0065\x0074\x004E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x00" + 105 L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0063\x006F\x006E\x0073\x0074\x0072\x0061\x0069\x006E\x0074\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x0061\x0073\x0020\x0069\x0074\x0073\x0020\x0074\x0079\x0070\x0065\x0020\x0069\x0073\x0020\x0064\x0065\x0072\x0069\x0076\x0065\x0064\x0020\x0066\x0072\x006F\x006D\x0020\x0049\x0044\x00" + 106 L"\x0049\x0074\x0020\x0069\x0073\x0020\x0061\x006E\x0020\x0065\x0072\x0072\x006F\x0072\x0020\x0066\x006F\x0072\x0020\x004E\x004F\x0054\x0041\x0054\x0049\x004F\x004E\x0020\x0074\x006F\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0064\x0069\x0072\x0065\x0063\x0074\x006C\x0079\x0020\x0069\x006E\x0020\x0061\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002F\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x00" + 107 L"\x0046\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x0074\x0068\x0065\x0020\x007B\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x007D\x0020\x0069\x0073\x0020\x006D\x0069\x0078\x0065\x0064\x002C\x0020\x0074\x0068\x0065\x006E\x0020\x0074\x0068\x0065\x0020\x007B\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x007D\x0027\x0073\x0020\x0070\x0061\x0072\x0074\x0069\x0063\x006C\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0065\x006D\x0070\x0074\x0069\x0061\x0062\x006C\x0065\x00" + 108 L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006F\x0066\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x0069\x0073\x0020\x0045\x004D\x0050\x0054\x0059\x002C\x0020\x0062\x0075\x0074\x0020\x0062\x0061\x0073\x0065\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0065\x006D\x0070\x0074\x0079\x0020\x006F\x0072\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0065\x006D\x0070\x0074\x0069\x0061\x0062\x006C\x0065\x0020\x0070\x0061\x0072\x0074\x0069\x0063\x006C\x0065\x002E\x00" + 109 L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x003A\x0027\x007B\x0030\x007D\x0027\x0020\x0061\x006E\x0064\x0020\x0064\x0065\x0072\x0069\x0076\x0065\x0064\x0020\x0074\x0079\x0070\x0065\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x006F\x0074\x0068\x0020\x0062\x0065\x0020\x006D\x0069\x0078\x0065\x0064\x0020\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002D\x006F\x006E\x006C\x0079\x002E\x00" + 110 L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x002E\x00" + 111 L"\x0044\x0065\x0072\x0069\x0076\x0061\x0074\x0069\x006F\x006E\x0020\x0062\x0079\x0020\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0020\x006F\x0072\x0020\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x0073\x0020\x0066\x006F\x0072\x0062\x0069\x0064\x0065\x006E\x0020\x0062\x0079\x0020\x0065\x0069\x0074\x0068\x0065\x0072\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00" + 112 L"\x0054\x0068\x0065\x0020\x007B\x0069\x0074\x0065\x006D\x0020\x0074\x0079\x0070\x0065\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x007D\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x007B\x0076\x0061\x0072\x0069\x0065\x0074\x0079\x007D\x0020\x006F\x0066\x0020\x0061\x0074\x006F\x006D\x0069\x0063\x0020\x006F\x0072\x0020\x0075\x006E\x0069\x006F\x006E\x0020\x0028\x0077\x0068\x0065\x0072\x0065\x0020\x0061\x006C\x006C\x0020\x006D\x0065\x006D\x0062\x0065\x0072\x0020\x0074\x0079\x0070\x0065\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0061\x0074\x006F\x006D\x0069\x0063\x0029\x00" + 113 L"\x0054\x0068\x0065\x0020\x007B\x006D\x0065\x006D\x0062\x0065\x0072\x0020\x0074\x0079\x0070\x0065\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x0073\x007D\x0020\x006D\x0075\x0073\x0074\x0020\x0061\x006C\x006C\x0020\x0068\x0061\x0076\x0065\x0020\x007B\x0076\x0061\x0072\x0069\x0065\x0074\x0079\x007D\x0020\x006F\x0066\x0020\x0061\x0074\x006F\x006D\x0069\x0063\x0020\x006F\x0072\x0020\x006C\x0069\x0073\x0074\x00" + 114 L"\x0054\x0068\x0065\x0020\x0067\x0072\x006F\x0075\x0070\x003A\x0027\x0030\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0028\x0061\x006C\x006C\x0020\x007C\x0020\x0063\x0068\x006F\x0069\x0063\x0065\x0020\x007C\x0020\x0073\x0065\x0071\x0075\x0065\x006E\x0063\x0065\x0029\x00" + 115 L"\x0054\x0068\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0047\x0072\x006F\x0075\x0070\x003A\x0027\x0030\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x006D\x0061\x0074\x0063\x0068\x0020\x0028\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x003F\x002E\x0020\x0028\x0028\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x007C\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0047\x0072\x006F\x0075\x0070\x0029\x002A\x002C\x0020\x0061\x006E\x0079\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003F\x0029\x0029\x00" + 116 L"\x0054\x0068\x0065\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x006F\x0066\x0020\x0061\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x0020\x006D\x0075\x0073\x0074\x0020\x006E\x006F\x0074\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0079\x0020\x0065\x0069\x0074\x0068\x0065\x0072\x0020\x0074\x0068\x0065\x0020\x006D\x0069\x006E\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x006F\x0072\x0020\x006D\x0061\x0078\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x002E\x00" + 117 L"\x0054\x0068\x0065\x0020\x007B\x0030\x007D\x0020\x002D\x0027\x007B\x0031\x007D\x003A\x007B\x0032\x007D\x0027\x002D\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x0075\x006E\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00" + 118 L"\x0041\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x0077\x0068\x006F\x0073\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0069\x0073\x0020\x0027\x0061\x006C\x006C\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x006F\x006E\x006C\x0079\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0061\x0073\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x006F\x0066\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0020\x0074\x0079\x0070\x0065\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x002E\x00" + 119 L"\x0057\x0068\x0065\x006E\x0020\x0061\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x0068\x0061\x0073\x0020\x007B\x0063\x006F\x006D\x0070\x006F\x0073\x0069\x0074\x006F\x0072\x007D\x0020\x0027\x0061\x006C\x006C\x0027\x0020\x0077\x0068\x0069\x0063\x0068\x0020\x0063\x006F\x006E\x0073\x0074\x0069\x0074\x0075\x0074\x0065\x0073\x0020\x0074\x0068\x0065\x0020\x007B\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x007D\x0020\x006F\x0066\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0020\x0074\x0079\x0070\x0065\x002C\x0020\x006D\x0069\x006E\x004F\x0063\x0063\x0075\x0072\x0073\x003D\x006D\x0061\x0078\x004F\x0063\x0063\x0075\x0072\x0073\x003D\x0031\x00" + 120 L"\x0049\x006E\x0020\x0061\x006E\x0020\x0027\x0061\x006C\x006C\x0027\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0063\x006F\x006D\x0070\x006F\x006E\x0065\x006E\x0074\x002C\x0020\x0074\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x006D\x0069\x006E\x0043\x006F\x0063\x0063\x0075\x0072\x0073\x002F\x006D\x0061\x0078\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0027\x0030\x0027\x0020\x006F\x0072\x0020\x0027\x0031\x0027\x002E\x00" + 121 L"\x0043\x0069\x0072\x0063\x0075\x006C\x0061\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0047\x0072\x006F\x0075\x0070\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x0020\x002D\x007B\x0030\x007D\x002D\x0020\x0069\x0073\x0020\x0064\x0069\x0073\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x006F\x0075\x0074\x0073\x0069\x0064\x0065\x0020\x003C\x0072\x0065\x0064\x0065\x0066\x0069\x006E\x0065\x003E\x00" + 122 L"\x007B\x0030\x007D\x00" + 125 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x0020\x006F\x0072\x0020\x0043\x0044\x0041\x0054\x0041\x00" + 126 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006E\x0061\x006D\x0065\x00" + 127 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0020\x006E\x0061\x006D\x0065\x00" + 128 L"\x0052\x0065\x0070\x0065\x0074\x0069\x0074\x0069\x006F\x006E\x0020\x006F\x0066\x0020\x0069\x006E\x0064\x0069\x0076\x0069\x0064\x0075\x0061\x006C\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0073\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0066\x006F\x0072\x0020\x006D\x0069\x0078\x0065\x0064\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0073\x00" + 129 L"\x0042\x0061\x0064\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00" + 130 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0061\x0073\x0073\x0075\x006D\x0069\x006E\x0067\x0020\x0023\x0049\x004D\x0050\x004C\x0049\x0045\x0044\x0020\x00" + 131 L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006C\x0069\x0073\x0074\x0020\x0073\x0079\x006E\x0074\x0061\x0078\x0020\x0065\x0072\x0072\x006F\x0072\x00" + 132 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x0071\x0075\x0061\x006C\x0020\x0073\x0069\x0067\x006E\x00" + 133 L"\x0044\x0075\x0070\x006C\x0069\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006E\x0061\x006D\x0065\x00" + 134 L"\x0042\x0061\x0064\x0020\x0049\x0044\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x0066\x006F\x0072\x0020\x0078\x006D\x006C\x003A\x006C\x0061\x006E\x0067\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x00" + 135 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006E\x0061\x006D\x0065\x00" + 136 L"\x004D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x0061\x006E\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x00" + 137 L"\x0043\x006F\x006D\x006D\x0065\x006E\x0074\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x003C\x0021\x002D\x002D\x00" + 138 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0064\x006F\x0063\x0075\x006D\x0065\x006E\x0074\x0020\x0073\x0074\x0072\x0075\x0063\x0074\x0075\x0072\x0065\x00" + 139 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0027\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x003D\x0027\x002C\x0020\x0027\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x003D\x0027\x002C\x0020\x006F\x0072\x0020\x0027\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x003D\x0027\x00" + 140 L"\x0042\x0061\x0064\x0020\x0058\x004D\x004C\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x00" + 141 L"\x0055\x006E\x0073\x0075\x0070\x0070\x006F\x0072\x0074\x0065\x0064\x0020\x0058\x004D\x004C\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00" + 142 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0058\x004D\x004C\x0020\x0064\x0065\x0063\x006C\x00" + 143 L"\x0042\x0061\x0064\x0020\x0058\x004D\x004C\x0020\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00" + 144 L"\x0042\x0061\x0064\x0020\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00" + 145 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00" + 146 L"\x0050\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x0020\x006E\x0061\x006D\x0065\x0020\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x00" + 147 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x00" + 148 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00" + 149 L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0065\x0078\x0074\x0020\x0062\x0065\x0066\x006F\x0072\x0065\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x00" + 150 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0074\x0061\x0067\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00" + 151 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x00" + 152 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x00" + 153 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0079\x0070\x0065\x0020\x0028\x0043\x0044\x0041\x0054\x0041\x002C\x0020\x0049\x0044\x002C\x0020\x004E\x004D\x0054\x004F\x004B\x0045\x004E\x002C\x0020\x002E\x002E\x0029\x002C\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0066\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0031\x007D\x0027\x00" + 154 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0074\x0061\x0067\x0020\x0027\x007B\x0030\x007D\x0027\x00" + 155 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0061\x0067\x0020\x006E\x0061\x006D\x0065\x002C\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x002C\x0020\x0050\x0049\x002C\x0020\x006F\x0072\x0020\x006F\x0074\x0068\x0065\x0072\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x00" + 156 L"\x004E\x006F\x0074\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0061\x0066\x0074\x0065\x0072\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x00" + 157 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00" + 158 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x0020\x006F\x0072\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x00" + 159 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0077\x0068\x0069\x0074\x0065\x0073\x0070\x0061\x0063\x0065\x00" + 160 L"\x004E\x006F\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0044\x004F\x0043\x0054\x0059\x0050\x0045\x00" + 161 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0071\x0075\x006F\x0074\x0065\x0064\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x00" + 162 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x00" + 163 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00" + 164 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0044\x004F\x0043\x0054\x0059\x0050\x0045\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00" + 165 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00" + 166 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00" + 167 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0069\x006E\x0069\x0074\x0069\x0061\x006C\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00" + 168 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00" + 169 L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0077\x0068\x0069\x0074\x0065\x0073\x0070\x0061\x0063\x0065\x00" + 170 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00" + 171 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00" + 172 L"\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0068\x0065\x0072\x0065\x00" + 173 L"\x0043\x006F\x006E\x0064\x0069\x0074\x0069\x006F\x006E\x0061\x006C\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x006E\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x00" + 174 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0070\x0061\x0072\x0061\x006D\x0065\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006E\x0061\x006D\x0065\x00" + 175 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00" + 176 L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00" + 177 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00" + 178 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006E\x0061\x006D\x0065\x0020\x0066\x006F\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00" + 179 L"\x0045\x006E\x0074\x0069\x0074\x0079\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0077\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x0075\x006E\x0064\x00" + 180 L"\x0055\x006E\x0070\x0061\x0072\x0073\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0074\x0079\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x0073\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0068\x0065\x0072\x0065\x00" + 181 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00" + 182 L"\x0052\x0065\x0063\x0075\x0072\x0073\x0069\x0076\x0065\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0065\x0078\x0070\x0061\x006E\x0073\x0069\x006F\x006E\x00" + 183 L"\x0050\x0061\x0072\x0074\x0069\x0061\x006C\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0069\x006E\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0076\x0061\x006C\x0075\x0065\x00" + 184 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00" + 185 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0065\x0078\x0070\x0072\x0065\x0073\x0073\x0069\x006F\x006E\x0020\x0066\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x00" + 186 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0073\x0074\x0065\x0072\x0069\x0073\x006B\x00" + 187 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x00" + 188 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x0069\x0064\x00" + 189 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x006F\x0072\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x00" + 190 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00" + 191 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x002C\x0027\x002C\x0020\x0027\x007C\x0027\x002C\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x00" + 192 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x007C\x0027\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x00" + 193 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x002C\x0027\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x0020\x006F\x0072\x0020\x0063\x006C\x006F\x0073\x0065\x0020\x0070\x0061\x0072\x0065\x006E\x0074\x0068\x0065\x0073\x0069\x0073\x0020\x0069\x006E\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x006F\x0066\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x00" + 194 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0075\x006D\x0065\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x00" + 195 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x007C\x0020\x0065\x006E\x0075\x006D\x0065\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0073\x0065\x0070\x0061\x0072\x0061\x0074\x006F\x0072\x002C\x0020\x006F\x0072\x0020\x0063\x006C\x006F\x0073\x0069\x006E\x0067\x0020\x0070\x0061\x0072\x0065\x006E\x00" + 196 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006C\x0069\x0074\x0065\x0072\x0061\x006C\x00" + 197 L"\x0054\x0068\x0065\x0072\x0065\x0020\x0061\x0072\x0065\x0020\x006D\x006F\x0072\x0065\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x0073\x0020\x0074\x0068\x0061\x006E\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0074\x0061\x0067\x0073\x00" + 198 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x006F\x0070\x0065\x006E\x0020\x0070\x0061\x0072\x0065\x006E\x0074\x0068\x0065\x0073\x0069\x0073\x00" + 199 L"\x0054\x0068\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0075\x0073\x0065\x0064\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0031\x007D\x0027\x00" + 200 L"\x0041\x0020\x0027\x003C\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0020\x0074\x0068\x0072\x006F\x0075\x0067\x0068\x0020\x0026\x006C\x0074\x003B\x00" + 201 L"\x0041\x0020\x006C\x0065\x0061\x0064\x0069\x006E\x0067\x0020\x0073\x0075\x0072\x0072\x006F\x0067\x0061\x0074\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0077\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0062\x0079\x0020\x0061\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0073\x0065\x0063\x006F\x006E\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00" + 202 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x005D\x005D\x003E\x0027\x0020\x0074\x006F\x0020\x0065\x006E\x0064\x0020\x0061\x0020\x0063\x006F\x006E\x0064\x0069\x0074\x0069\x006F\x006E\x0061\x006C\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00" + 203 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0049\x004E\x0043\x004C\x0055\x0044\x0045\x0020\x006F\x0072\x0020\x0049\x0047\x004E\x004F\x0052\x0045\x0020\x0068\x0065\x0072\x0065\x00" + 204 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x005B\x0020\x0074\x006F\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0020\x0049\x004E\x0043\x004C\x0055\x0044\x0045\x0020\x006F\x0072\x0020\x0049\x0047\x004E\x004F\x0052\x0045\x00" + 205 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0054\x0065\x0078\x0074\x0044\x0065\x0063\x006C\x0020\x0068\x0065\x0072\x0065\x003A\x0020\x003C\x003F\x0078\x006D\x006C\x0020\x002E\x002E\x002E\x002E\x00" + 206 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x0020\x0068\x0065\x0072\x0065\x003A\x0020\x003C\x003F\x0078\x006D\x006C\x0020\x002E\x002E\x002E\x002E\x00" + 207 L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x007B\x0030\x007D\x00" + 208 L"\x0041\x0020\x0050\x0045\x0020\x0070\x0072\x006F\x0070\x006F\x0067\x0061\x0074\x0065\x0064\x0020\x006F\x0075\x0074\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0074\x002F\x0065\x0078\x0074\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x002C\x0020\x0064\x0069\x0073\x0063\x0061\x0072\x0064\x0069\x006E\x0067\x0020\x0065\x0078\x0074\x0072\x0061\x0020\x0074\x0065\x0078\x0074\x00" + 209 L"\x0041\x006E\x0020\x0065\x0078\x0074\x0072\x0061\x0020\x005D\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x0020\x0061\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00" + 210 L"\x0050\x0045\x0020\x0072\x0065\x0066\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0073\x0069\x0064\x0065\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x00" + 211 L"\x0041\x006E\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0070\x0072\x006F\x0070\x006F\x0067\x0061\x0074\x0065\x0064\x0020\x006F\x0075\x0074\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x006E\x0074\x006F\x0020\x004D\x0069\x0073\x0063\x0065\x006C\x006C\x0061\x006E\x0065\x006F\x0075\x0073\x00" + 212 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0026\x0023\x0020\x0074\x006F\x0020\x0062\x0065\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0062\x0079\x0020\x0061\x0020\x006E\x0075\x006D\x0065\x0072\x0069\x0063\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0076\x0061\x006C\x0075\x0065\x00" + 213 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x006F\x0070\x0065\x006E\x0020\x0062\x0072\x0061\x0063\x006B\x0065\x0074\x0020\x0028\x0027\x005B\x0027\x0029\x0020\x0068\x0065\x0072\x0065\x00" + 214 L"\x0054\x0068\x0065\x0020\x0073\x0065\x0071\x0075\x0065\x006E\x0063\x0065\x0020\x0027\x005D\x005D\x003E\x0027\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0064\x0061\x0074\x0061\x00" + 215 L"\x0049\x006C\x006C\x0065\x0067\x0061\x006C\x0020\x0073\x0065\x0071\x0075\x0065\x006E\x0063\x0065\x0020\x0027\x002D\x002D\x0027\x0020\x0069\x006E\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00" + 216 L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00" + 217 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x004E\x0044\x0041\x0054\x0041\x00" + 218 L"\x004E\x0044\x0041\x0054\x0041\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0066\x006F\x0072\x0020\x0070\x0061\x0072\x0061\x006D\x0065\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x00" + 219 L"\x0048\x0065\x0078\x0020\x0072\x0061\x0064\x0069\x0078\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0075\x0073\x0065\x0020\x0027\x0078\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0027\x0058\x0027\x00" + 220 L"\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0062\x0065\x0065\x006E\x0020\x0073\x0065\x0074\x002E\x0020\x0049\x0067\x006E\x006F\x0072\x0069\x006E\x0067\x0020\x0072\x0065\x0064\x0075\x006E\x0064\x0061\x006E\x0074\x0020\x0073\x0065\x0074\x0074\x0069\x006E\x0067\x00" + 221 L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006F\x0072\x0064\x0065\x0072\x003A\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x002C\x0020\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x002C\x0020\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x00" + 222 L"\x0045\x0078\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0072\x0065\x0066\x0065\x0072\x0072\x0065\x0064\x0020\x0074\x006F\x0020\x0066\x0072\x006F\x006D\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x00" + 223 L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0020\x006F\x0072\x0020\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x0027\x003C\x003F\x0078\x006D\x006C\x0020\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0027\x003C\x003F\x0058\x004D\x004C\x0020\x0027\x00" + 224 L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006C\x0069\x0074\x0065\x0072\x0061\x006C\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0072\x0020\x0050\x0055\x0042\x004C\x0049\x0043\x002F\x0053\x0059\x0053\x0054\x0045\x004D\x0020\x0069\x0064\x00" + 225 L"\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0064\x0069\x0067\x0069\x0074\x0020\x0066\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0064\x0069\x0063\x0061\x0074\x0065\x0064\x0020\x0072\x0061\x0064\x0069\x0078\x00" + 226 L"\x0054\x0068\x0065\x0020\x0069\x006E\x0070\x0075\x0074\x0020\x0065\x006E\x0064\x0065\x0064\x0020\x0062\x0065\x0066\x006F\x0072\x0065\x0020\x0061\x006C\x006C\x0020\x0073\x0074\x0061\x0072\x0074\x0065\x0064\x0020\x0074\x0061\x0067\x0073\x0020\x0077\x0065\x0072\x0065\x0020\x0065\x006E\x0064\x0065\x0064\x002E\x0020\x004C\x0061\x0073\x0074\x0020\x0074\x0061\x0067\x0020\x0073\x0074\x0061\x0072\x0074\x0065\x0064\x0020\x0077\x0061\x0073\x0020\x0027\x007B\x0030\x007D\x0027\x00" + 227 L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x0066\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x0061\x006D\x0062\x0069\x0067\x0075\x006F\x0075\x0073\x00" + 228 L"\x004E\x0065\x0073\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x00" + 229 L"\x0054\x0068\x0065\x0020\x0070\x0072\x0065\x0066\x0069\x0078\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0062\x0065\x0065\x006E\x0020\x006D\x0061\x0070\x0070\x0065\x0064\x0020\x0074\x006F\x0020\x0061\x006E\x0079\x0020\x0055\x0052\x0049\x00" + 230 L"\x0054\x0068\x0065\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0061\x006E\x0064\x0020\x0074\x0068\x0065\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x0020\x0077\x0065\x0072\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x00" + 231 L"\x0054\x0068\x0065\x0020\x006D\x0061\x0069\x006E\x0020\x0058\x004D\x004C\x0020\x0064\x006F\x0063\x0075\x006D\x0065\x006E\x0074\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0065\x006D\x0070\x0074\x0079\x00" + 232 L"\x0043\x0044\x0041\x0054\x0041\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x006F\x0075\x0074\x0073\x0069\x0064\x0065\x0020\x0074\x0068\x0065\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x00" + 233 L"\x004F\x006E\x006C\x0079\x0020\x006E\x0075\x006D\x0065\x0072\x0069\x0063\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x006F\x0072\x0020\x0073\x0070\x0065\x0063\x0069\x0061\x006C\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0068\x0065\x0072\x0065\x00" + 234 L"\x0047\x006F\x0074\x0020\x0061\x006E\x0020\x0075\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0072\x0061\x0069\x006C\x0069\x006E\x0067\x0020\x0073\x0075\x0072\x0072\x006F\x0067\x0061\x0074\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00" + 235 L"\x004E\x006F\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x0020\x0073\x0074\x0061\x0072\x0074\x0073\x0020\x0077\x0069\x0074\x0068\x0020\x0027\x0078\x006D\x006C\x0027\x00" + 236 L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0020\x006F\x0072\x0020\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0061\x0074\x0020\x006C\x0069\x006E\x0065\x002F\x0063\x006F\x006C\x0075\x006D\x006E\x0020\x0031\x002F\x0031\x00" + 237 L"\x0054\x0068\x0065\x0020\x0027\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x003D\x0027\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0020\x0069\x0073\x0020\x0072\x0065\x0071\x0075\x0069\x0072\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x006E\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x00" + 238 L"\x0054\x0068\x0065\x0020\x0027\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x003D\x0027\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0020\x0069\x0073\x0020\x006F\x006E\x006C\x0079\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006D\x0061\x0069\x006E\x0020\x0058\x004D\x004C\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x00" + 239 L"\x0054\x0068\x0065\x0020\x0027\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x003D\x0027\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0020\x0069\x0073\x0020\x0072\x0065\x0071\x0075\x0069\x0072\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x006E\x0020\x0054\x0065\x0078\x0074\x0020\x0044\x0065\x0063\x006C\x00" + 240 L"\x0057\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x002C\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0061\x006E\x0020\x0068\x0061\x0076\x0065\x0020\x006F\x006E\x006C\x0079\x0020\x006F\x006E\x0065\x0020\x0063\x006F\x006C\x006F\x006E\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00" + 241 L"\x0057\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x002C\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006C\x006F\x006E\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0074\x0068\x0065\x0020\x0066\x0069\x0072\x0073\x0074\x0020\x006F\x0072\x0020\x006C\x0061\x0073\x0074\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00" + 242 L"\x0043\x006F\x006C\x006F\x006E\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0069\x0073\x0020\x006E\x0061\x006D\x0065\x0020\x0077\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x00" + 243 L"\x0041\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x0020\x006F\x0063\x0063\x0075\x0072\x0065\x0064\x0020\x0064\x0075\x0072\x0069\x006E\x0067\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x00" + 244 L"\x0041\x006E\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x0020\x006F\x0063\x0063\x0075\x0072\x0065\x0064\x0021\x0020\x0054\x0079\x0070\x0065\x003A\x007B\x0030\x007D\x002C\x0020\x004D\x0065\x0073\x0073\x0061\x0067\x0065\x003A\x007B\x0031\x007D\x00" + 245 L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0066\x0069\x006C\x0065\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x002E\x0020\x004D\x0065\x0073\x0073\x0061\x0067\x0065\x003A\x0020\x007B\x0030\x007D\x00" + 246 L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0045\x0072\x0072\x006F\x0072\x00" + 247 L"\x0054\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x004C\x006F\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0070\x0061\x0069\x0072\x0073\x0020\x006F\x0066\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x002E\x00" + 248 L"\x0049\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0065\x0072\x0072\x006F\x0072\x003A\x0020\x0064\x006F\x006E\x0027\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0047\x0072\x0061\x006D\x006D\x0061\x0072\x0052\x0065\x0073\x006F\x006C\x0076\x0065\x0072\x0020\x0066\x006F\x0072\x0020\x0054\x0072\x0061\x0076\x0065\x0072\x0073\x0065\x0053\x0063\x0068\x0065\x006D\x0061\x00" + 249 L"\x0046\x0061\x0074\x0061\x006C\x0020\x0065\x0072\x0072\x006F\x0072\x0020\x0065\x006E\x0063\x006F\x0075\x006E\x0074\x0065\x0072\x0065\x0064\x0020\x0064\x0075\x0072\x0069\x006E\x0067\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0073\x0063\x0061\x006E\x00" END STRINGTABLE DISCARDABLE BEGIN @@ -395,7 +392,7 @@ BEGIN 16422 L"\x0045\x0072\x0072\x006F\x0072\x003A\x0020\x007B\x0030\x007D\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x006F\x006E\x0065\x0020\x006F\x0066\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002C\x0020\x0067\x0072\x006F\x0075\x0070\x002C\x0020\x006D\x006F\x0064\x0065\x006C\x0047\x0072\x006F\x0075\x0070\x0052\x0065\x0066\x002E\x0020\x0053\x0061\x0077\x0020\x007B\x0031\x007D\x00" 16423 L"\x0055\x006E\x006B\x006E\x006F\x0077\x006E\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x007B\x0030\x007D\x0020\x0066\x006F\x0072\x0020\x0074\x0079\x0070\x0065\x0020\x007B\x0031\x007D\x002E\x00" 16424 L"\x0043\x0061\x006E\x0020\x006F\x006E\x006C\x0079\x0020\x0068\x0061\x0076\x0065\x0020\x006F\x006E\x0065\x0020\x006F\x0066\x0020\x0074\x0079\x0070\x0065\x0020\x0061\x006E\x0064\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0073\x002E\x00" - 16425 L"\x0043\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0066\x006F\x0072\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002F\x0067\x0072\x006F\x0075\x0070\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0074\x0068\x0061\x0074\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x00" + 16425 L"\x0041\x0020\x003C\x007B\x0030\x007D\x003E\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0074\x0068\x0061\x0074\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x002C\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x002E\x00" 16426 L"\x0049\x006E\x0063\x006F\x0072\x0072\x0065\x0063\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x0066\x006F\x0072\x0020\x007B\x0030\x007D\x0027\x0073\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0076\x0061\x006C\x0075\x0065\x003A\x0020\x007B\x0031\x007D\x00" 16427 L"\x0049\x006C\x006C\x0065\x0067\x0061\x006C\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0069\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0067\x0072\x006F\x0075\x0070\x00" 16428 L"\x0056\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x007B\x0030\x007D\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006E\x0020\x0069\x006E\x0074\x0065\x0067\x0065\x0072\x002E\x00" @@ -694,6 +691,7 @@ BEGIN END + #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/src/validators/schema/Makefile.in b/src/validators/schema/Makefile.in index d559f277e4de86f896c41627dfcadd8bfd083337..8caf67d4245db4bbf8365d36b30e3db7be7a4fcb 100644 --- a/src/validators/schema/Makefile.in +++ b/src/validators/schema/Makefile.in @@ -55,6 +55,9 @@ # # # $Log$ +# Revision 1.15 2001/07/31 15:26:54 knoaman +# Added support for <attributeGroup>. +# # Revision 1.14 2001/07/24 20:13:30 knoaman # Added support for <group> + extra constraint checking for complexType # @@ -135,6 +138,7 @@ VALIDATORS_SCHEMA_CPP_PUBHEADERS = \ SchemaInfo.hpp \ GeneralAttributeCheck.hpp \ XercesGroupInfo.hpp \ + XercesAttGroupInfo.hpp \ TraverseSchema.hpp VALIDATORS_SCHEMA_CPP_PRIVHEADERS = @@ -155,6 +159,7 @@ VALIDATORS_SCHEMA_CPP_OBJECTS = \ SchemaInfo.$(TO) \ GeneralAttributeCheck.$(TO) \ XercesGroupInfo.$(TO) \ + XercesAttGroupInfo.$(TO) \ TraverseSchema.$(TO) all:: includes $(VALIDATORS_SCHEMA_CPP_OBJECTS) diff --git a/src/validators/schema/NamespaceScope.cpp b/src/validators/schema/NamespaceScope.cpp index 6cc4a719a30f890a6c7576e7995c27b0978bc8e5..8b07a37dd3b779c2494ddf88df170e3e0d7b3fb9 100644 --- a/src/validators/schema/NamespaceScope.cpp +++ b/src/validators/schema/NamespaceScope.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.3 2001/07/31 15:26:54 knoaman + * Added support for <attributeGroup>. + * * Revision 1.2 2001/05/11 13:27:33 tng * Copyright update. * @@ -178,9 +181,9 @@ void NamespaceScope::addPrefix(const XMLCh* const prefixToAdd, curRow->fMapCount++; } - unsigned int -NamespaceScope::getNamespaceForPrefix(const XMLCh* const prefixToMap) const { +NamespaceScope::getNamespaceForPrefix(const XMLCh* const prefixToMap, + const int depthLevel) const { // // Map the prefix to its unique id, from the prefix string pool. If its @@ -196,7 +199,7 @@ NamespaceScope::getNamespaceForPrefix(const XMLCh* const prefixToMap) const { // Start at the stack top and work backwards until we come to some // element that mapped this prefix. // - int startAt = (int)(fStackTop - 1); + int startAt = depthLevel; for (int index = startAt; index >= 0; index--) { // Get a convenience pointer to the current element diff --git a/src/validators/schema/NamespaceScope.hpp b/src/validators/schema/NamespaceScope.hpp index 0d1f99633c960dccdc301921a775630b38d249ad..dbb3bacde465e629abd7e204f3dbf6106ef848a7 100644 --- a/src/validators/schema/NamespaceScope.hpp +++ b/src/validators/schema/NamespaceScope.hpp @@ -122,6 +122,8 @@ public : const unsigned int uriId); unsigned int getNamespaceForPrefix(const XMLCh* const prefixToMap) const; + unsigned int getNamespaceForPrefix(const XMLCh* const prefixToMap, + int depthLevel) const; // ----------------------------------------------------------------------- @@ -173,6 +175,15 @@ private : }; +// --------------------------------------------------------------------------- +// NamespaceScope: Stack access +// --------------------------------------------------------------------------- +inline unsigned int +NamespaceScope::getNamespaceForPrefix(const XMLCh* const prefixToMap) const { + + return getNamespaceForPrefix(prefixToMap, (int)(fStackTop - 1)); +} + // --------------------------------------------------------------------------- // NamespaceScope: Miscellaneous methods // --------------------------------------------------------------------------- diff --git a/src/validators/schema/SchemaAttDef.cpp b/src/validators/schema/SchemaAttDef.cpp index 4d18756fc32381bc8494bca0638fd6583781ae14..d4887c90eb74a45ab21646d661c56c3e54ff89b0 100644 --- a/src/validators/schema/SchemaAttDef.cpp +++ b/src/validators/schema/SchemaAttDef.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.3 2001/07/31 15:26:54 knoaman + * Added support for <attributeGroup>. + * * Revision 1.2 2001/05/11 13:27:33 tng * Copyright update. * @@ -115,6 +118,19 @@ SchemaAttDef::SchemaAttDef( const XMLCh* const prefix fAttName = new QName(prefix, localPart, uriId); } +SchemaAttDef::SchemaAttDef(const SchemaAttDef* other) : + + XMLAttDef(other->getValue(), other->getType(), + other->getDefaultType(), other->getEnumeration()) + , fElemId(XMLElementDecl::fgInvalidElemId) + , fAttName(0) + , fDatatypeValidator(other->getDatatypeValidator()) +{ + QName* otherName = other->getAttName(); + fAttName = new QName(otherName->getPrefix(), + otherName->getLocalPart(), otherName->getURI()); +} + SchemaAttDef::~SchemaAttDef() { delete fAttName; diff --git a/src/validators/schema/SchemaAttDef.hpp b/src/validators/schema/SchemaAttDef.hpp index f27a4ee89b10171369a89b6a39d43b92f4236ace..3f4a57d2139f23ca68cc2ca9be2fe63f3955e16b 100644 --- a/src/validators/schema/SchemaAttDef.hpp +++ b/src/validators/schema/SchemaAttDef.hpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.4 2001/07/31 15:26:54 knoaman + * Added support for <attributeGroup>. + * * Revision 1.3 2001/05/11 17:17:41 tng * Schema: DatatypeValidator fixes. By Pei Yong Zhang. * @@ -106,6 +109,10 @@ public : , const XMLAttDef::DefAttTypes defType , const XMLCh* const enumValues = 0 ); + SchemaAttDef + ( + const SchemaAttDef* other + ); ~SchemaAttDef(); // ----------------------------------------------------------------------- diff --git a/src/validators/schema/SchemaGrammar.cpp b/src/validators/schema/SchemaGrammar.cpp index a7aed2ec9510c943791c58fd2d867d7244954dd0..4dcf04018c2e4caa29226f3d7451e2f4fcd9bc15 100644 --- a/src/validators/schema/SchemaGrammar.cpp +++ b/src/validators/schema/SchemaGrammar.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.6 2001/07/31 15:27:10 knoaman + * Added support for <attributeGroup>. + * * Revision 1.5 2001/07/24 18:33:46 knoaman * Added support for <group> + extra constraint checking for complexType * @@ -82,24 +85,25 @@ #include <validators/schema/NamespaceScope.hpp> #include <validators/schema/ComplexTypeInfo.hpp> #include <validators/schema/SchemaSymbols.hpp> +#include <validators/schema/XercesGroupInfo.hpp> +#include <validators/schema/XercesAttGroupInfo.hpp> // --------------------------------------------------------------------------- // SchemaGrammar: Constructors and Destructor // --------------------------------------------------------------------------- SchemaGrammar::SchemaGrammar() : - fElementDefaultQualified(false) - , fAttributeDefaultQualified(false) + fTargetNamespace(0) , fElemDeclPool(0) , fGroupElemDeclPool(0) , fNotationDeclPool(0) - , fTargetNamespace(0) , fAttributeDeclRegistry(0) , fComplexTypeRegistry(0) + , fGroupInfoRegistry(0) + , fAttGroupInfoRegistry(0) , fDatatypeRegistry(0) , fNamespaceScope(0) , fValidSubstitutionGroups(0) - , fGlobalGroups(0) { // // Init all the pool members. @@ -127,14 +131,13 @@ SchemaGrammar::~SchemaGrammar() delete fTargetNamespace; delete fAttributeDeclRegistry; delete fComplexTypeRegistry; - delete fGlobalGroups; + delete fGroupInfoRegistry; + delete fAttGroupInfoRegistry; delete fNamespaceScope; delete fValidSubstitutionGroups; } -// ----------------------------------------------------------------------- -// Virutal methods -// ----------------------------------------------------------------------- + // ----------------------------------------------------------------------- // Virtual methods // ----------------------------------------------------------------------- @@ -177,21 +180,6 @@ void SchemaGrammar::reset() fNotationDeclPool->removeAll(); } -DOM_Element SchemaGrammar::getGroupElement(const XMLCh* const name) { - - if (fGlobalGroups) { - unsigned int groupSize = fGlobalGroups->size(); - for (unsigned int i=0; i< groupSize; i++) { - DOM_Element elem = fGlobalGroups->elementAt(i); - - if (elem.getAttribute(SchemaSymbols::fgATT_NAME).equals(name)) { - return elem; - } - } - } - - return DOM_Element(); -} diff --git a/src/validators/schema/SchemaGrammar.hpp b/src/validators/schema/SchemaGrammar.hpp index d44c828f9aa0fa749a5ae0b4c5d3b0838935a06a..3139b1ac4df8d876cc0809b2501cd0e22654bf0a 100644 --- a/src/validators/schema/SchemaGrammar.hpp +++ b/src/validators/schema/SchemaGrammar.hpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.8 2001/07/31 15:27:10 knoaman + * Added support for <attributeGroup>. + * * Revision 1.7 2001/07/24 18:33:46 knoaman * Added support for <group> + extra constraint checking for complexType * @@ -85,7 +88,6 @@ #if !defined(SCHEMAGRAMMAR_HPP) #define SCHEMAGRAMMAR_HPP -#include <dom/DOM_Element.hpp> #include <framework/XMLNotationDecl.hpp> #include <util/RefHash3KeysIdPool.hpp> #include <util/NameIdPool.hpp> @@ -109,6 +111,8 @@ class DatatypeValidatorFactory; class ComplexTypeInfo; class NamespaceScope; +class XercesGroupInfo; +class XercesAttGroupInfo; // --------------------------------------------------------------------------- // typedef declaration @@ -200,28 +204,26 @@ public: // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- - bool getElementDefaultQualified() const; - bool getAttributeDefaultQualified() const; RefHash3KeysIdPoolEnumerator<SchemaElementDecl> getElemEnumerator() const; RefHashTableOf<XMLAttDef>* getAttributeDeclRegistry() const; RefHashTableOf<ComplexTypeInfo>* getComplexTypeRegistry() const; + RefHashTableOf<XercesGroupInfo>* getGroupInfoRegistry() const; + RefHashTableOf<XercesAttGroupInfo>* getAttGroupInfoRegistry() const; DatatypeValidatorFactory* getDatatypeRegistry() const; NamespaceScope* getNamespaceScope() const; RefHash2KeysTableOf<ElemVector>* getValidSubstitutionGroups() const; - DOM_Element getGroupElement(const XMLCh* const name); // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- - void setElementDefaultQualified(const bool toSet); - void setAttributeDefaultQualified(const bool toSet); void setTargetNamespace(const XMLCh* const targetNamespace); void setAttributeDeclRegistry(RefHashTableOf<XMLAttDef>* const attReg); void setComplexTypeRegistry(RefHashTableOf<ComplexTypeInfo>* const other); + void setGroupInfoRegistry(RefHashTableOf<XercesGroupInfo>* const other); + void setAttGroupInfoRegistry(RefHashTableOf<XercesAttGroupInfo>* const other); void setDatatypeRegistry(DatatypeValidatorFactory* const dvRegistry); void setNamespaceScope(NamespaceScope* const nsScope); void setValidSubstitutionGroups(RefHash2KeysTableOf<ElemVector>* const); - void addGlobalGroup(const DOM_Element& groupElem); // ----------------------------------------------------------------------- // Helper methods @@ -231,8 +233,6 @@ public: XMLElementDecl* const elemDecl ) const; - void releaseGroupElement(unsigned int index); - private: // ----------------------------------------------------------------------- @@ -262,6 +262,12 @@ private: // fComplexTypeRegistry // Stores complexType declaration info // + // fGroupInfoRegistry + // Stores global <group> declaration info + // + // fAttGroupInfoRegistry + // Stores global <attributeGroup> declaration info + // // fDatatypeRegistry // Datatype validator factory // @@ -271,34 +277,23 @@ private: // fValidSubstitutionGroups // Valid list of elements that can substitute a given element // ----------------------------------------------------------------------- - bool fElementDefaultQualified; - bool fAttributeDefaultQualified; + XMLCh* fTargetNamespace; RefHash3KeysIdPool<SchemaElementDecl>* fElemDeclPool; RefHash3KeysIdPool<SchemaElementDecl>* fGroupElemDeclPool; NameIdPool<XMLNotationDecl>* fNotationDeclPool; - XMLCh* fTargetNamespace; RefHashTableOf<XMLAttDef>* fAttributeDeclRegistry; RefHashTableOf<ComplexTypeInfo>* fComplexTypeRegistry; + RefHashTableOf<XercesGroupInfo>* fGroupInfoRegistry; + RefHashTableOf<XercesAttGroupInfo>* fAttGroupInfoRegistry; DatatypeValidatorFactory* fDatatypeRegistry; NamespaceScope* fNamespaceScope; RefHash2KeysTableOf<ElemVector>* fValidSubstitutionGroups; - ValueVectorOf<DOM_Element>* fGlobalGroups; }; // --------------------------------------------------------------------------- // SchemaGrammar: Getter methods // --------------------------------------------------------------------------- -inline bool SchemaGrammar::getElementDefaultQualified() const { - - return fElementDefaultQualified; -} - -inline bool SchemaGrammar::getAttributeDefaultQualified() const { - - return fAttributeDefaultQualified; -} - inline RefHash3KeysIdPoolEnumerator<SchemaElementDecl> SchemaGrammar::getElemEnumerator() const { @@ -316,6 +311,18 @@ SchemaGrammar::getComplexTypeRegistry() const { return fComplexTypeRegistry; } +inline RefHashTableOf<XercesGroupInfo>* +SchemaGrammar::getGroupInfoRegistry() const { + + return fGroupInfoRegistry; +} + +inline RefHashTableOf<XercesAttGroupInfo>* +SchemaGrammar::getAttGroupInfoRegistry() const { + + return fAttGroupInfoRegistry; +} + inline DatatypeValidatorFactory* SchemaGrammar::getDatatypeRegistry() const { return fDatatypeRegistry; @@ -335,16 +342,6 @@ SchemaGrammar::getValidSubstitutionGroups() const { // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- -inline void SchemaGrammar::setElementDefaultQualified(const bool toSet) { - - fElementDefaultQualified = toSet; -} - -inline void SchemaGrammar::setAttributeDefaultQualified(const bool toSet) { - - fAttributeDefaultQualified = toSet; -} - inline void SchemaGrammar::setTargetNamespace(const XMLCh* const targetNamespace) { fTargetNamespace = XMLString::replicate(targetNamespace); } @@ -361,6 +358,18 @@ SchemaGrammar::setComplexTypeRegistry(RefHashTableOf<ComplexTypeInfo>* const oth fComplexTypeRegistry = other; } +inline void +SchemaGrammar::setGroupInfoRegistry(RefHashTableOf<XercesGroupInfo>* const other) { + + fGroupInfoRegistry = other; +} + +inline void +SchemaGrammar::setAttGroupInfoRegistry(RefHashTableOf<XercesAttGroupInfo>* const other) { + + fAttGroupInfoRegistry = other; +} + inline void SchemaGrammar::setDatatypeRegistry(DatatypeValidatorFactory* const dvRegistry) { @@ -378,28 +387,6 @@ SchemaGrammar::setValidSubstitutionGroups(RefHash2KeysTableOf<ElemVector>* const fValidSubstitutionGroups = other; } -inline void -SchemaGrammar::addGlobalGroup(const DOM_Element& groupElem) { - - if (!fGlobalGroups) { - fGlobalGroups = new ValueVectorOf<DOM_Element>(8); - } - - fGlobalGroups->addElement(groupElem); -} - - -// --------------------------------------------------------------------------- -// SchemaGrammar: Helper methods -// --------------------------------------------------------------------------- -inline void SchemaGrammar::releaseGroupElement(unsigned int index) { - - if (!fGlobalGroups || index < 0 || fGlobalGroups->size() <= index) { - return; - } - - fGlobalGroups->setElementAt(DOM_Element(), index); -} // --------------------------------------------------------------------------- // SchemaGrammar: Virtual methods diff --git a/src/validators/schema/SchemaInfo.cpp b/src/validators/schema/SchemaInfo.cpp index 5154be12a8f652f544aae5874ef261fd29724324..c8ca516260208c861ddd104913f006c4ed621991 100644 --- a/src/validators/schema/SchemaInfo.cpp +++ b/src/validators/schema/SchemaInfo.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.4 2001/07/31 15:26:54 knoaman + * Added support for <attributeGroup>. + * * Revision 1.3 2001/07/09 14:29:43 knoaman * Fixes for import/include declarations * @@ -81,6 +84,7 @@ SchemaInfo::SchemaInfo(const bool elemDefaultQualified, const bool attrDefaultQualified, const int blockDefault, const int finalDefault, + const unsigned int namespaceScopeLevel, XMLCh* const schemaURL, const DOM_Element& root, SchemaInfo* const nextRoot, @@ -89,6 +93,7 @@ SchemaInfo::SchemaInfo(const bool elemDefaultQualified, , fAttributeDefaultQualified(attrDefaultQualified) , fBlockDefault(blockDefault) , fFinalDefault(finalDefault) + , fNamespaceScopeLevel(namespaceScopeLevel) , fCurrentSchemaURL(XMLString::replicate(schemaURL)) , fSchemaRootElement(root) , fNext(nextRoot) diff --git a/src/validators/schema/SchemaInfo.hpp b/src/validators/schema/SchemaInfo.hpp index 2a566dfd22f9b6e6eea29a727ed928a0122ca024..5bfe6ea7499155cb4694a8d8af4f314b7d3645ab 100644 --- a/src/validators/schema/SchemaInfo.hpp +++ b/src/validators/schema/SchemaInfo.hpp @@ -89,6 +89,7 @@ public: const bool attrDefaultQualified, const int blockDefault, const int finalDefault, + const unsigned int namespaceScopeLevel, XMLCh* const schemaURL, const DOM_Element& root, SchemaInfo* const nextRoot, @@ -99,19 +100,20 @@ public: // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- - SchemaInfo* getNext() const; - SchemaInfo* getPrev() const; - XMLCh* getCurrentSchemaURL() const; - DOM_Element getRoot() const; - int getBlockDefault() const; - int getFinalDefault() const; - bool isElementDefaultQualified() const; - bool isAttributeDefaultQualified() const; + SchemaInfo* getNext() const; + SchemaInfo* getPrev() const; + XMLCh* getCurrentSchemaURL() const; + DOM_Element getRoot() const; + int getBlockDefault() const; + int getFinalDefault() const; + unsigned int getNamespaceScopeLevel() const; + bool isElementDefaultQualified() const; + bool isAttributeDefaultQualified() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- - void setNext(SchemaInfo* const nextInfo); + void setNext(SchemaInfo* const nextInfo); private: // ----------------------------------------------------------------------- @@ -121,6 +123,7 @@ private: bool fAttributeDefaultQualified; int fBlockDefault; int fFinalDefault; + unsigned int fNamespaceScopeLevel; XMLCh* fCurrentSchemaURL; DOM_Element fSchemaRootElement; SchemaInfo* fNext; @@ -151,6 +154,10 @@ inline int SchemaInfo::getFinalDefault() const { return fFinalDefault; } +inline unsigned int SchemaInfo::getNamespaceScopeLevel() const { + return fNamespaceScopeLevel; +} + inline XMLCh* SchemaInfo::getCurrentSchemaURL() const { return fCurrentSchemaURL; diff --git a/src/validators/schema/TraverseSchema.cpp b/src/validators/schema/TraverseSchema.cpp index d6787a1cf845bf4b6aa21ca8013a8307ba1e4819..a5ee2a7d5fa6d7e622dd5a459cbf29e234f3c9bd 100644 --- a/src/validators/schema/TraverseSchema.cpp +++ b/src/validators/schema/TraverseSchema.cpp @@ -96,6 +96,7 @@ #include <validators/datatype/InvalidDatatypeFacetException.hpp> #include <validators/schema/GeneralAttributeCheck.hpp> #include <validators/schema/XercesGroupInfo.hpp> +#include <validators/schema/XercesAttGroupInfo.hpp> // --------------------------------------------------------------------------- // TraverseSchema: Local declaration @@ -181,13 +182,13 @@ TraverseSchema::TraverseSchema( const DOM_Element& schemaRoot , fFinalDefault(0) , fBlockDefault(0) , fScopeCount(0) + , fCurrentNamespaceLevel(0) , fSchemaRootElement(schemaRoot) , fTargetNSURIString(0) , fCurrentSchemaURL(XMLString::replicate(schemaURL)) , fDatatypeRegistry(0) , fGrammarResolver(grammarResolver) , fSchemaGrammar(schemaGrammar) - , fRefSchemaGrammar(0) , fEntityResolver(entityResolver) , fErrorHandler(errorHandler) , fURIStringPool(uriStringPool) @@ -197,9 +198,11 @@ TraverseSchema::TraverseSchema( const DOM_Element& schemaRoot , fAttributeDeclRegistry(0) , fComplexTypeRegistry(0) , fGroupRegistry(0) + , fAttGroupRegistry(0) , fSchemaInfoRoot(0) , fCurrentSchemaInfo(0) , fCurrentGroupInfo(0) + , fCurrentAttGroupInfo(0) , fCurrentComplexType(0) , fImportLocations(importLocations) , fIncludeLocations(0) @@ -208,6 +211,7 @@ TraverseSchema::TraverseSchema( const DOM_Element& schemaRoot , fAttributeCheck(0) , fGlobalTypes(0) , fGlobalGroups(0) + , fGlobalAttGroups(0) , fSubstitutionGroups(0) , fValidSubstitutionGroups(0) , fRefElements(0) @@ -245,7 +249,7 @@ void TraverseSchema::doTraverseSchema() { } unsigned int schemaURLId = fURIStringPool->addOrFind(fCurrentSchemaURL); - fImportLocations->addElement(schemaURLId); + fImportLocations->addElement(schemaURLId); if (fSchemaRootElement.isNull()) { // REVISIT: Anything to do? @@ -258,11 +262,11 @@ void TraverseSchema::doTraverseSchema() { fCurrentTypeNameStack = new ValueVectorOf<unsigned int>(8); fCurrentGroupStack = new ValueVectorOf<unsigned int>(8); fGlobalTypes = new RefHash2KeysTableOf<XMLCh>(29, false); - fGlobalGroups = new RefHash2KeysTableOf<XMLCh>(29, false); + fGlobalGroups = new RefHash2KeysTableOf<XMLCh>(13, false); + fGlobalAttGroups = new RefHash2KeysTableOf<XMLCh>(13, false); fSubstitutionGroups = new RefHash2KeysTableOf<SchemaElementDecl>(29, false); fRefElements = new RefVectorOf<SchemaElementDecl>(32, false); fRefElemScope = new ValueVectorOf<int>(32); - fGroupRegistry = new RefHashTableOf<XercesGroupInfo>(29); //Make sure namespace binding is defaulted DOMString rootPrefix = fSchemaRootElement.getPrefix(); @@ -300,8 +304,8 @@ void TraverseSchema::doTraverseSchema() { } else{ - // for complex type registry, attribute decl registry and - // namespace mapping, needs to check whether the passed in + // for complex type registry, attribute decl registry , group/attGroup + // and namespace mapping, needs to check whether the passed in // Grammar was a newly instantiated one. fComplexTypeRegistry = fSchemaGrammar->getComplexTypeRegistry(); @@ -311,6 +315,22 @@ void TraverseSchema::doTraverseSchema() { fSchemaGrammar->setComplexTypeRegistry(fComplexTypeRegistry); } + fGroupRegistry = fSchemaGrammar->getGroupInfoRegistry(); + + if (fGroupRegistry == 0 ) { + + fGroupRegistry = new RefHashTableOf<XercesGroupInfo>(13); + fSchemaGrammar->setGroupInfoRegistry(fGroupRegistry); + } + + fAttGroupRegistry = fSchemaGrammar->getAttGroupInfoRegistry(); + + if (fAttGroupRegistry == 0 ) { + + fAttGroupRegistry = new RefHashTableOf<XercesAttGroupInfo>(13); + fSchemaGrammar->setAttGroupInfoRegistry(fAttGroupRegistry); + } + fAttributeDeclRegistry = fSchemaGrammar->getAttributeDeclRegistry(); if (fAttributeDeclRegistry == 0) { @@ -325,7 +345,7 @@ void TraverseSchema::doTraverseSchema() { fNamespaceScope = new NamespaceScope(); fNamespaceScope->reset(fURIStringPool->addOrFind(XMLUni::fgZeroLenString)); - fNamespaceScope->increaseDepth(); + fCurrentNamespaceLevel = fNamespaceScope->increaseDepth(); fSchemaGrammar->setNamespaceScope(fNamespaceScope); } @@ -350,7 +370,7 @@ void TraverseSchema::doTraverseSchema() { // Handle identity constraints // TO DO - + // Element consistency checks - substitution groups checkRefElementConsistency(); } @@ -371,9 +391,6 @@ void TraverseSchema::traverseSchemaHeader() { fAttributeDefaultQualified = fSchemaRootElement.getAttribute(SchemaSymbols::fgATT_ATTRIBUTEFORMDEFAULT).equals(SchemaSymbols::fgATTVAL_QUALIFIED); - fSchemaGrammar->setElementDefaultQualified(fElementDefaultQualified); - fSchemaGrammar->setAttributeDefaultQualified(fAttributeDefaultQualified); - // Get finalDefault/blockDefault values const XMLCh* defaultVal = getElementAttValue(fSchemaRootElement, SchemaSymbols::fgATT_BLOCKDEFAULT); @@ -381,8 +398,6 @@ void TraverseSchema::traverseSchemaHeader() { SchemaSymbols::fgATT_FINALDEFAULT); fBlockDefault = parseBlockSet(defaultVal, ES_Block); fFinalDefault = parseFinalSet(finalVal, ECS_Final); - -// fCurrentScope = Grammar::TOP_LEVEL_SCOPE; } @@ -496,6 +511,7 @@ void TraverseSchema::traverseInclude(const DOM_Element& elem) { fAttributeDefaultQualified, fBlockDefault, fFinalDefault, + 0, fCurrentSchemaURL, fSchemaRootElement, 0, 0); @@ -505,6 +521,7 @@ void TraverseSchema::traverseInclude(const DOM_Element& elem) { // -------------------------------------------------------- // Update schema information with included schema // -------------------------------------------------------- + unsigned int namespaceLevel = fNamespaceScope->increaseDepth(); fSchemaRootElement = root; setCurrentSchemaURL(includeURL); traverseSchemaHeader(); @@ -515,6 +532,7 @@ void TraverseSchema::traverseInclude(const DOM_Element& elem) { fAttributeDefaultQualified, fBlockDefault, fFinalDefault, + namespaceLevel, fCurrentSchemaURL, fSchemaRootElement, fCurrentSchemaInfo->getNext(), @@ -742,7 +760,7 @@ TraverseSchema::traverseChoiceSequence(const DOM_Element& elem, if (hasAllContent(contentSpecNode)) { - reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::AllContentLimited); + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::AllContentLimited); continue; } } @@ -786,7 +804,7 @@ TraverseSchema::traverseChoiceSequence(const DOM_Element& elem, if (left == 0) { left = expandedSpecNode; - toAdoptLeft = adoptSpecNode; + toAdoptLeft = adoptSpecNode; } else if (right == 0) { right = expandedSpecNode; @@ -959,7 +977,8 @@ int TraverseSchema::traverseComplexTypeDecl(const DOM_Element& elem) { if (!XMLString::isValidNCName(name)) { //REVISIT - Should we return or continue and save type with wrong name? - reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidComplexTypeName, name); + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName, + SchemaSymbols::fgELT_COMPLEXTYPE, name); return -1; } @@ -1003,12 +1022,7 @@ int TraverseSchema::traverseComplexTypeDecl(const DOM_Element& elem) { // ------------------------------------------------------------------ // Register the type first, so that in case of a recursive element type // declaration, we can retrieve the complexType info (though the rest of - // complex type information has not been added). - RefHashTableOf<ComplexTypeInfo>* complexTypeRegistry = - (topLevel || !fRefSchemaGrammar) ? fComplexTypeRegistry - : fRefSchemaGrammar->getComplexTypeRegistry(); - - complexTypeRegistry->put((void*) fStringPool.getValueForId(typeNameIndex), + fComplexTypeRegistry->put((void*) fStringPool.getValueForId(typeNameIndex), typeInfo); typeInfo->setTypeName(fullName); typeInfo->setScopeDefined(fCurrentScope); @@ -1062,7 +1076,7 @@ int TraverseSchema::traverseComplexTypeDecl(const DOM_Element& elem) { } } } - catch(...) { + catch(TraverseSchema::ExceptionCodes) { defaultComplexTypeInfo(typeInfo); } @@ -1151,7 +1165,8 @@ TraverseSchema::traverseGroupDecl(const DOM_Element& elem, if (nameEmpty || (!refEmpty && !topLevel)) { if (!nameEmpty) { - reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::GroupWithNameRef, name); + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DeclarationWithNameRef, + SchemaSymbols::fgELT_GROUP, name); } return processGroupRef(elem, ref, toAdoptSpecNode); @@ -1162,7 +1177,8 @@ TraverseSchema::traverseGroupDecl(const DOM_Element& elem, // ------------------------------------------------------------------ // name must be a valid NCName if (!XMLString::isValidNCName(name)) { - reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidGroupName, name); + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName, + SchemaSymbols::fgELT_GROUP, name); return 0; } @@ -1170,6 +1186,7 @@ TraverseSchema::traverseGroupDecl(const DOM_Element& elem, fBuffer.append(chComma); fBuffer.append(name); + int saveScope = fCurrentScope; unsigned int fullNameIndex = fStringPool.addOrFind(fBuffer.getRawBuffer()); const XMLCh* fullName = fStringPool.getValueForId(fullNameIndex); ContentSpecNode* specNode = 0; @@ -1178,13 +1195,18 @@ TraverseSchema::traverseGroupDecl(const DOM_Element& elem, fCurrentGroupStack->addElement(fullNameIndex); fCurrentGroupInfo = groupInfo; + + if (!saveGroupInfo && !fCurrentComplexType) { + fCurrentScope = fScopeCount++; + } + fCurrentGroupInfo->setScope(fCurrentScope); if (content == 0) { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::GroupContentError, name); } else { - + if (elem.getAttributeNode(SchemaSymbols::fgATT_MINOCCURS) != 0 || elem.getAttributeNode(SchemaSymbols::fgATT_MAXOCCURS) != 0) { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::MinMaxOnGroupChild); @@ -1226,13 +1248,14 @@ TraverseSchema::traverseGroupDecl(const DOM_Element& elem, fCurrentGroupInfo->setContentSpec(specNode); fGroupRegistry->put((void*) fullName, fCurrentGroupInfo); fCurrentGroupInfo = saveGroupInfo; + fCurrentScope = saveScope; return groupInfo; } XercesGroupInfo* TraverseSchema::traverseGroupDeclNS(const XMLCh* const uriStr, - const XMLCh* const groupName, + const XMLCh* const name, bool& toAdoptSpecNode) { // ------------------------------------------------------------------ @@ -1246,61 +1269,86 @@ TraverseSchema::traverseGroupDeclNS(const XMLCh* const uriStr, return 0; } - // ------------------------------------------------------------------ - // Save current grammar - // ------------------------------------------------------------------ - bool saveElemDefaultQualified = fElementDefaultQualified; - bool saveAttrDefaultQualified = fAttributeDefaultQualified; - int saveTargetNSURI = fTargetNSURI; - SchemaGrammar* saveSchemaGrammar = fSchemaGrammar; - SchemaGrammar* saveRefSchemaGrammar = fRefSchemaGrammar; - NamespaceScope* saveNamespaceScope = fNamespaceScope; - RefHashTableOf<XMLAttDef>* saveAttDeclRegistry = fAttributeDeclRegistry; - RefHashTableOf<ComplexTypeInfo>* saveComplexTypeRegistry = fComplexTypeRegistry; - XMLCh* saveTargetNSURIString = fTargetNSURIString; - ArrayJanitor<XMLCh> janNSURIStr(saveTargetNSURIString); + fBuffer.set(uriStr); + fBuffer.append(chComma); + fBuffer.append(name); - // ------------------------------------------------------------------ - // Switch grammar info - // ------------------------------------------------------------------ - if (!fRefSchemaGrammar) { - fRefSchemaGrammar = fSchemaGrammar; + XercesGroupInfo* groupInfo = aGrammar->getGroupInfoRegistry()->get(fBuffer.getRawBuffer()); + + if (!groupInfo) { + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DeclarationNotFound, + SchemaSymbols::fgELT_GROUP, uriStr, name); + } + else { + toAdoptSpecNode = false; } - fSchemaGrammar = aGrammar; - fElementDefaultQualified = aGrammar->getElementDefaultQualified(); - fAttributeDefaultQualified = aGrammar->getAttributeDefaultQualified(); - fNamespaceScope = aGrammar->getNamespaceScope(); - fAttributeDeclRegistry = aGrammar->getAttributeDeclRegistry(); - fComplexTypeRegistry = aGrammar->getComplexTypeRegistry(); - fTargetNSURIString = XMLString::replicate(aGrammar->getTargetNamespace()); - fTargetNSURI = fURIStringPool->addOrFind(fTargetNSURIString); + return groupInfo; +} - // ------------------------------------------------------------------ - // Get element info - // ------------------------------------------------------------------ - DOM_Element elem = aGrammar->getGroupElement(groupName); - if (elem == 0) { +/** + * Traverse attributeGroup Declaration. + * + * <attributeGroup + * id = ID + * name = NCName + * ref = QName> + * Content: (annotation? , (attribute|attributeGroup)*, anyAttribute?) + * <attributeGroup/> + * + */ +XercesAttGroupInfo* +TraverseSchema::traverseAttributeGroupDecl(const DOM_Element& elem, + ComplexTypeInfo* const typeInfo) { + + bool topLevel = isTopLevelComponent(elem); + const XMLCh* name = getElementAttValue(elem, SchemaSymbols::fgATT_NAME); + const XMLCh* ref = getElementAttValue(elem, SchemaSymbols::fgATT_REF); + bool nameEmpty = (XMLString::stringLen(name) == 0) ? true : false; + bool refEmpty = (XMLString::stringLen(ref) == 0) ? true : false; + + if (nameEmpty && topLevel) { + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::NoNameGlobalElement, + SchemaSymbols::fgELT_ATTRIBUTEGROUP); + return 0; + } + + if (nameEmpty && refEmpty) { + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::NoNameRefAttGroup); return 0; } // ------------------------------------------------------------------ - // Create group info + // Check attributes // ------------------------------------------------------------------ - fBuffer.set(uriStr); - fBuffer.append(chComma); - fBuffer.append(groupName); + unsigned short scope = (topLevel) ? GeneralAttributeCheck::GlobalContext + : GeneralAttributeCheck::LocalContext; + fAttributeCheck->checkAttributes(elem, scope, this); - unsigned int fullNameIndex = fStringPool.addOrFind(fBuffer.getRawBuffer()); - const XMLCh* fullName = fStringPool.getValueForId(fullNameIndex); - ContentSpecNode* specNode = 0; - XercesGroupInfo* saveGroupInfo = fCurrentGroupInfo; - XercesGroupInfo* groupInfo = new XercesGroupInfo(); + // ------------------------------------------------------------------ + // Handle "ref=" + // ------------------------------------------------------------------ + if (nameEmpty || (!refEmpty && !topLevel)) { + + if (!nameEmpty) { + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DeclarationWithNameRef, + SchemaSymbols::fgELT_ATTRIBUTEGROUP, name); + } + + return processAttributeGroupRef(elem, ref, typeInfo); + } - fCurrentGroupStack->addElement(fullNameIndex); - fCurrentGroupInfo = groupInfo; - fCurrentGroupInfo->setScope(fCurrentScope); + + // ------------------------------------------------------------------ + // Handle "name=" + // ------------------------------------------------------------------ + // name must be a valid NCName + if (!XMLString::isValidNCName(name)) { + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName, + SchemaSymbols::fgELT_ATTRIBUTEGROUP, name); + return 0; + } // ------------------------------------------------------------------ // Check for annotations @@ -1308,69 +1356,79 @@ TraverseSchema::traverseGroupDeclNS(const XMLCh* const uriStr, DOM_Element content = checkContent(elem, XUtil::getFirstChildElement(elem), true); - if (content == 0) { - reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::GroupContentError, groupName); - } - else { + // ------------------------------------------------------------------ + // Process contents of global attributeGroups + // ------------------------------------------------------------------ + XercesAttGroupInfo* saveAttGroupInfo = fCurrentAttGroupInfo; + XercesAttGroupInfo* attGroupInfo = new XercesAttGroupInfo(); - if (elem.getAttributeNode(SchemaSymbols::fgATT_MINOCCURS) != 0 - || elem.getAttributeNode(SchemaSymbols::fgATT_MAXOCCURS) != 0) { - reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::MinMaxOnGroupChild); - } + fAttGroupRegistry->put((void*) name, attGroupInfo); + fCurrentAttGroupInfo = attGroupInfo; - bool illegalChild = false; - bool adoptSpecNode = true; - DOMString childName = content.getLocalName(); + for (; content !=0; content = XUtil::getNextSiblingElement(content)) { - if (childName.equals(SchemaSymbols::fgELT_SEQUENCE)) { - specNode = traverseChoiceSequence(content, ContentSpecNode::Sequence, adoptSpecNode); + if (content.getLocalName().equals(SchemaSymbols::fgELT_ATTRIBUTE)) { + traverseAttributeDecl(content, typeInfo); } - else if (childName.equals(SchemaSymbols::fgELT_CHOICE)) { - specNode = traverseChoiceSequence(content, ContentSpecNode::Choice, adoptSpecNode); - } - else if (childName.equals(SchemaSymbols::fgELT_ALL)) { - // TO DO + else if (content.getLocalName().equals(SchemaSymbols::fgELT_ATTRIBUTEGROUP)) { + traverseAttributeGroupDecl(content, typeInfo); } else { - illegalChild = true; + break; } + } - if (illegalChild || XUtil::getNextSiblingElement(content) != 0) { - reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::GroupContentError, groupName); - } + if (content != 0) { - toAdoptSpecNode = adoptSpecNode; - } + if (content.getLocalName().equals(SchemaSymbols::fgELT_ANYATTRIBUTE)) { + + SchemaAttDef* anyAtt = traverseAnyAttribute(content); + + if (anyAtt) { + fCurrentAttGroupInfo->addAnyAttDef(anyAtt); + } + if (XUtil::getNextSiblingElement(content) != 0) { + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::AttGroupContentError, name); + } + } + else { + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::AttGroupContentError, name); + } + } // ------------------------------------------------------------------ - // Restore grammar info + // Restore old attGroupInfo // ------------------------------------------------------------------ - delete [] fTargetNSURIString; - fElementDefaultQualified = saveElemDefaultQualified; - fAttributeDefaultQualified = saveAttrDefaultQualified; - fTargetNSURI = saveTargetNSURI; - fSchemaGrammar = saveSchemaGrammar; - fRefSchemaGrammar = saveRefSchemaGrammar; - fNamespaceScope = saveNamespaceScope; - fAttributeDeclRegistry = saveAttDeclRegistry; - fComplexTypeRegistry = saveComplexTypeRegistry; - fTargetNSURIString = janNSURIStr.release(); + fCurrentAttGroupInfo = saveAttGroupInfo; + + return attGroupInfo; +} + + +XercesAttGroupInfo* +TraverseSchema::traverseAttributeGroupDeclNS(const XMLCh* const uriStr, + const XMLCh* const name) { // ------------------------------------------------------------------ - // Set groupInfo and pop group name from stack + // Get grammar information // ------------------------------------------------------------------ - unsigned int stackSize = fCurrentGroupStack->size(); + SchemaGrammar* aGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(uriStr); - if (stackSize != 0) { - fCurrentGroupStack->removeElementAt(stackSize - 1); + if (!aGrammar || aGrammar->getGrammarType() != Grammar::SchemaGrammarType) { + + reportSchemaError(XMLUni::fgValidityDomain, XMLValid::GrammarNotFound, uriStr); + return 0; } - fCurrentGroupInfo->setContentSpec(specNode); - fGroupRegistry->put((void*) fullName, fCurrentGroupInfo); - fCurrentGroupInfo = saveGroupInfo; + XercesAttGroupInfo* attGroupInfo = aGrammar->getAttGroupInfoRegistry()->get(name); - return groupInfo; + if (!attGroupInfo) { + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DeclarationNotFound, + SchemaSymbols::fgELT_ATTRIBUTEGROUP, uriStr, name); + } + + return attGroupInfo; } @@ -1623,6 +1681,11 @@ void TraverseSchema::traverseAttributeDecl(const DOM_Element& elem, bool nameEmpty = (XMLString::stringLen(name) == 0) ? true : false; bool refEmpty = (XMLString::stringLen(ref) == 0) ? true : false; + if (nameEmpty && refEmpty) { + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::NoNameRefAttribute); + return; + } + if (topLevel) { if (nameEmpty) { @@ -1636,10 +1699,11 @@ void TraverseSchema::traverseAttributeDecl(const DOM_Element& elem, } } } - - if (nameEmpty && refEmpty) { - reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::NoNameRefAttribute); - return; + else { + if (!typeInfo && !fCurrentAttGroupInfo) { + // Nothing to do - where to save that attribute info? + return; + } } // ------------------------------------------------------------------ @@ -1685,7 +1749,7 @@ void TraverseSchema::traverseAttributeDecl(const DOM_Element& elem, if (!XMLString::isValidNCName(name) || XMLString::compareString(name, XMLUni::fgXMLNSString) == 0) { - reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidAttributeName, name); + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName, SchemaSymbols::fgELT_ATTRIBUTE, name); return; } @@ -1709,7 +1773,12 @@ void TraverseSchema::traverseAttributeDecl(const DOM_Element& elem, return; } } - else if (typeInfo != 0 && typeInfo->getAttDef(name, uriIndex) != 0) { + else if (typeInfo && typeInfo->getAttDef(name, uriIndex) != 0) { + + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateAttribute, name); + return; + } + else if (fCurrentAttGroupInfo && fCurrentAttGroupInfo->containsAttribute(name, uriIndex)) { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateAttribute, name); return; @@ -1923,8 +1992,19 @@ void TraverseSchema::traverseAttributeDecl(const DOM_Element& elem, if (topLevel) { fAttributeDeclRegistry->put((void*) name, attDef); } - else if (typeInfo != 0) { - typeInfo->addAttDef(attDef); + else { + + bool toClone = false; + + if (typeInfo) { + + toClone = true; + typeInfo->addAttDef(attDef); + } + + if (fCurrentAttGroupInfo) { + fCurrentAttGroupInfo->addAttDef(attDef, toClone); + } } } @@ -1990,7 +2070,8 @@ QName* TraverseSchema::traverseElementDecl(const DOM_Element& elem) { if (nameEmpty || (!refEmpty && !topLevel)) { if (!nameEmpty) { - reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::ElementWithNameRef, name); + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DeclarationWithNameRef, + SchemaSymbols::fgELT_ELEMENT, name); } if (!isValidRefDeclaration(elem)) { @@ -2002,7 +2083,8 @@ QName* TraverseSchema::traverseElementDecl(const DOM_Element& elem) { // Name is notEmpty if (!XMLString::isValidNCName(name)) { - reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidElementName, name); + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName, + SchemaSymbols::fgELT_ELEMENT, name); return 0; } @@ -2039,14 +2121,9 @@ QName* TraverseSchema::traverseElementDecl(const DOM_Element& elem) { if (!isDuplicate) { - if (topLevel || !fRefSchemaGrammar) { - fSchemaGrammar->putElemDecl(elemDecl); - } - else { - fRefSchemaGrammar->putElemDecl(elemDecl); - } + fSchemaGrammar->putElemDecl(elemDecl); - if (fCurrentGroupInfo && + if (fCurrentGroupInfo && elemDecl->getEnclosingScope() == fCurrentGroupInfo->getScope()) { fCurrentGroupInfo->addElement(elemDecl); } @@ -2159,10 +2236,10 @@ QName* TraverseSchema::traverseElementDecl(const DOM_Element& elem) { SchemaElementDecl* subsElemDecl = getSubstituteGroupElemDecl(subsGroupName, noErrorFound); - + if (subsElemDecl != 0) { - // An element cannot substitute itself + // An element cannot substitute itself if (subsElemDecl == elemDecl) { // REVISIT - add proper error message @@ -2187,7 +2264,7 @@ QName* TraverseSchema::traverseElementDecl(const DOM_Element& elem) { fBuffer.append(chComma); fBuffer.append(localPart); - if (!isDuplicate) { + if (!isDuplicate) { XMLCh* elemBaseName = elemDecl->getBaseName(); XMLCh* subsElemBaseName = subsElemDecl->getBaseName(); @@ -2196,7 +2273,7 @@ QName* TraverseSchema::traverseElementDecl(const DOM_Element& elem) { elemDecl->setSubstitutionGroupName(fBuffer.getRawBuffer()); fSubstitutionGroups->put((void*) elemBaseName, elemURI, subsElemDecl); - RefVectorOf<SchemaElementDecl>* subsElements = + RefVectorOf<SchemaElementDecl>* subsElements = fValidSubstitutionGroups->get(subsElemBaseName, subsElemURI); if (!subsElements) { @@ -2782,7 +2859,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName, if (simpleContent == 0) { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::EmptySimpleTypeContent); - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } fAttributeCheck->checkAttributes(simpleContent, scope, this); @@ -2800,7 +2877,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName, } else { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidSimpleContent); - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } // ----------------------------------------------------------------------- @@ -2812,7 +2889,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName, if (XMLString::stringLen(baseName) == 0) { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::UnspecifiedBase); - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } const XMLCh* prefix = getPrefix(baseName); @@ -2827,7 +2904,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName, reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DisallowedSimpleTypeExtension, baseName, typeName); - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } typeInfo->setBaseComplexTypeInfo(0); @@ -2845,12 +2922,12 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName, if (baseTypeInfo->getContentType() != SchemaElementDecl::Simple) { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidSimpleContentBase, baseName); - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } if ((baseTypeInfo->getFinalSet() & typeInfo->getDerivedBy()) != 0) { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::ForbiddenDerivation, baseName); - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } } @@ -2867,7 +2944,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName, if (typeInfo->getBaseDatatypeValidator() != 0) { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidComplexTypeBase, baseName); - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } else { typeInfo->setBaseDatatypeValidator(baseTypeInfo->getDatatypeValidator()); @@ -2886,7 +2963,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName, if (simpleTypeNameIndex !=-1) { - DatatypeValidator* simpleTypeDV = + DatatypeValidator* simpleTypeDV = fDatatypeRegistry->getDatatypeValidator(fStringPool.getValueForId(simpleTypeNameIndex)); // Check that the simpleType validator is validly derived @@ -2896,14 +2973,14 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName, if (baseDV && !baseDV->isSubstitutableBy(simpleTypeDV)) { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidContentRestriction); - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } typeInfo->setBaseDatatypeValidator(simpleTypeDV); content = XUtil::getNextSiblingElement(content); } else { - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } } @@ -3138,7 +3215,7 @@ void TraverseSchema::traverseComplexContentDecl(const XMLCh* const typeName, // If there are no children, return if (complexContent == 0) { - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } // ----------------------------------------------------------------------- @@ -3155,7 +3232,7 @@ void TraverseSchema::traverseComplexContentDecl(const XMLCh* const typeName, else { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidComplexContent); - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } // ----------------------------------------------------------------------- @@ -3167,7 +3244,7 @@ void TraverseSchema::traverseComplexContentDecl(const XMLCh* const typeName, if (XMLString::stringLen(baseName) == 0) { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::UnspecifiedBase); - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } const XMLCh* prefix = getPrefix(baseName); @@ -3187,7 +3264,7 @@ void TraverseSchema::traverseComplexContentDecl(const XMLCh* const typeName, reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::BaseNotComplexType); - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } } @@ -3284,9 +3361,8 @@ SchemaAttDef* TraverseSchema::traverseAnyAttribute(const DOM_Element& elem) { attType = XMLAttDef::Any_List; - // Will be using '|' as a separator to construct enumeration string. - // When the data is retrieved, a XMLStringTokenizer construction with - // a delimeter string of "|" sould be used. + // Will be using ' ' as a separator to construct enumeration string. + // When the data is retrieved, a tokenization needs to take place while (tokenizer.hasMoreTokens()) { const XMLCh* token = tokenizer.nextToken(); @@ -3303,7 +3379,7 @@ SchemaAttDef* TraverseSchema::traverseAnyAttribute(const DOM_Element& elem) { fBuffer.append(token); } - separator = chPipe; + separator = chSpace; } } @@ -3371,32 +3447,8 @@ void TraverseSchema::retrieveNamespaceMapping() { } } - - -void TraverseSchema::extractTopLevel3Components(const DOM_Element& rootElem) { - - for (DOM_Element child = XUtil::getFirstChildElement(rootElem); - child != 0; - child = XUtil::getNextSiblingElement(child)) { - - DOMString name = child.getLocalName(); - const XMLCh* typeName = getElementAttValue(child, SchemaSymbols::fgATT_NAME); - - if (name.equals(SchemaSymbols::fgELT_GROUP)) { - - if (fSchemaGrammar->getGroupElement(typeName) == 0) { - fSchemaGrammar->addGlobalGroup(child); - } - } - } -} - - void TraverseSchema::processChildren(const DOM_Element& root) { - // extract global components and store them in the grammar - extractTopLevel3Components(root); - // process <redefine>, <include> and <import> info items. DOM_Element child = XUtil::getFirstChildElement(root); @@ -3408,10 +3460,7 @@ void TraverseSchema::processChildren(const DOM_Element& root) { traverseAnnotationDecl(child); } else if (name.equals(SchemaSymbols::fgELT_INCLUDE)) { - - fNamespaceScope->increaseDepth(); traverseInclude(child); - fNamespaceScope->decreaseDepth(); } else if (name.equals(SchemaSymbols::fgELT_IMPORT)) { traverseImport(child); @@ -3471,6 +3520,18 @@ void TraverseSchema::processChildren(const DOM_Element& root) { } else if (name.equals(SchemaSymbols::fgELT_ATTRIBUTEGROUP)) { + if (XMLString::stringLen(typeName)) { + if (fGlobalAttGroups->containsKey(typeName, fTargetNSURI)) { + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateGlobalDeclaration, + SchemaSymbols::fgELT_ATTRIBUTEGROUP, typeName); + continue; + } + else { + fGlobalAttGroups->put((void*) typeName, fTargetNSURI, 0); + } + } + + traverseAttributeGroupDecl(child, 0); } else if (name.equals(SchemaSymbols::fgELT_ATTRIBUTE ) ) { traverseAttributeDecl( child, 0); @@ -3479,14 +3540,17 @@ void TraverseSchema::processChildren(const DOM_Element& root) { if (XMLString::stringLen(typeName)) { if (fGlobalGroups->containsKey(typeName, fTargetNSURI)) { - reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateGlobalType, - SchemaSymbols::fgELT_GROUP, typeName, SchemaSymbols::fgELT_COMPLEXTYPE); + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateGlobalDeclaration, + SchemaSymbols::fgELT_GROUP, typeName); continue; } else { fGlobalGroups->put((void*) typeName, fTargetNSURI, 0); } } + + bool toAdoptSpecNode = true; + traverseGroupDecl(child, toAdoptSpecNode); } else if (name.equals(SchemaSymbols::fgELT_NOTATION)) { traverseNotationDecl(child); //TO DO @@ -3682,7 +3746,7 @@ TraverseSchema::getTopLevelComponentByName(const XMLCh* const compCategory, const XMLCh* TraverseSchema::resolvePrefixToURI(const XMLCh* const prefix) { - int nameSpaceIndex = fNamespaceScope->getNamespaceForPrefix(prefix); + int nameSpaceIndex = fNamespaceScope->getNamespaceForPrefix(prefix, fCurrentNamespaceLevel); const XMLCh* uriStr = fURIStringPool->getValueForId(nameSpaceIndex); if (uriStr == 0) { @@ -3721,7 +3785,7 @@ QName* TraverseSchema::processElementDeclRef(const DOM_Element& elem, true); if (content != 0) { - reportSchemaError(XMLUni::fgValidityDomain, XMLValid::NoContentForRef); + reportSchemaError(XMLUni::fgValidityDomain, XMLValid::NoContentForRef, SchemaSymbols::fgELT_ELEMENT); } const XMLCh* prefix = getPrefix(refName); @@ -3790,7 +3854,7 @@ int TraverseSchema::parseBlockSet(const XMLCh* const blockStr, int blockSet = 0; if (!XMLString::compareString(blockStr, SchemaSymbols::fgATTVAL_POUNDALL)) { - + blockSet = SchemaSymbols::EXTENSION + SchemaSymbols::RESTRICTION; if (blockType == ES_Block) { @@ -4327,28 +4391,34 @@ void TraverseSchema::processAttributeDeclRef(const DOM_Element& elem, reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::AttributeRefContentError); } - // REVISIT - attributeGroup case - if (typeInfo == 0) { + if (!typeInfo && !fCurrentAttGroupInfo) { return; } const XMLCh* prefix = getPrefix(refName); const XMLCh* localPart = getLocalPart(refName); const XMLCh* uriStr = resolvePrefixToURI(prefix); + unsigned int attURI = fURIStringPool->addOrFind(uriStr); - if (XMLString::compareString(uriStr, fTargetNSURIString) != 0) { + // Check for duplicate references + if (typeInfo && typeInfo->getAttDef(localPart, attURI)) { - addAttributeDeclFromAnotherSchema(localPart, uriStr, typeInfo); + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateRefAttribute, uriStr, localPart); return; } - - // Check for duplicate references - if (typeInfo->getAttDef(localPart,fURIStringPool->addOrFind(uriStr)) != 0) { + else if (fCurrentAttGroupInfo && fCurrentAttGroupInfo->containsAttribute(localPart, attURI)) { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateRefAttribute, uriStr, localPart); return; } + // check for different namespace + if (XMLString::compareString(uriStr, fTargetNSURIString) != 0) { + + addAttributeDeclFromAnotherSchema(localPart, uriStr, typeInfo); + return; + } + // if Global attribute registry does not contain the ref attribute, get // the referred attribute declaration and traverse it. if (fAttributeDeclRegistry->containsKey(localPart) == false) { @@ -4400,7 +4470,17 @@ void TraverseSchema::processAttributeDeclRef(const DOM_Element& elem, } } - typeInfo->addAttDef(attDef); + bool toClone = false; + + if (typeInfo) { + + toClone = true; + typeInfo->addAttDef(attDef); + } + + if (fCurrentAttGroupInfo) { + fCurrentAttGroupInfo->addAttDef(attDef, toClone); + } } @@ -4412,7 +4492,7 @@ TraverseSchema::expandContentModel(ContentSpecNode* const specNode, unsigned int minOccurs = 0; unsigned int maxOccurs = 0; - const XMLCh* minOccursStr = + const XMLCh* minOccursStr = getElementAttValue(elem, SchemaSymbols::fgATT_MINOCCURS, true); const XMLCh* maxOccursStr = getElementAttValue(elem, SchemaSymbols::fgATT_MAXOCCURS, true); @@ -4462,7 +4542,7 @@ TraverseSchema::expandContentModel(ContentSpecNode* const specNode, bool isAllElement = (allContextFlag == All_Element); bool isAllGroup = (allContextFlag == All_Group); bool isGroupRefAll = (allContextFlag == Group_Ref_With_All); - + if (isAllElement || isAllGroup || isGroupRefAll) { if (maxOccurs != 1 @@ -4490,7 +4570,7 @@ TraverseSchema::expandContentModel(ContentSpecNode* const specNode, if (minOccurs == 1 && maxOccurs == 1) { } else if (minOccurs == 0 && maxOccurs == 1) { - + retNode = new ContentSpecNode(ContentSpecNode::ZeroOrOne, retNode, 0, toAdoptSpecNode); } @@ -4580,7 +4660,7 @@ void TraverseSchema::processComplexContent(const XMLCh* const typeName, bool adoptSpecNode = true; ComplexTypeInfo* baseTypeInfo = typeInfo->getBaseComplexTypeInfo(); - if (baseTypeInfo) { + if (baseTypeInfo) { if (typeInfo->getDerivedBy() == SchemaSymbols::RESTRICTION) { @@ -4591,7 +4671,7 @@ void TraverseSchema::processComplexContent(const XMLCh* const typeName, reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::ForbiddenDerivationByRestriction, baseLocalPart); - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } } else { @@ -4602,18 +4682,18 @@ void TraverseSchema::processComplexContent(const XMLCh* const typeName, if((baseTypeInfo->getFinalSet() & typeDerivedBy) != 0) { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::ForbiddenDerivationByExtension, baseLocalPart); - throw 0; // REVISIT - should we continue + throw TraverseSchema::InvalidComplexTypeInfo; // REVISIT - should we continue } // Check for derivation valid (extension) - 1.4.2.2 int baseContentType = baseTypeInfo->getContentType(); if (baseContentType != SchemaElementDecl::Empty) { - if ((isMixed && baseContentType == SchemaElementDecl::Children) + if ((isMixed && baseContentType == SchemaElementDecl::Children) || (!isMixed && baseContentType == SchemaElementDecl::Mixed)) { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::MixedOrElementOnly, baseLocalPart, typeName); - throw 0; //REVISIT - should we continue + throw TraverseSchema::InvalidComplexTypeInfo; //REVISIT - should we continue } } @@ -4632,14 +4712,14 @@ void TraverseSchema::processComplexContent(const XMLCh* const typeName, if (childName.equals(SchemaSymbols::fgELT_GROUP)) { - bool adoptSpecNode = true; + bool adoptSpecNode = true; XercesGroupInfo* grpInfo = traverseGroupDecl(childElem, adoptSpecNode); if (grpInfo) { tmpSpecNode = grpInfo->getContentSpec(); int contentContext = hasAllContent(specNode) ? Group_Ref_With_All : Not_All_Context; - specNode = expandContentModel(specNode, childElem, + specNode = expandContentModel(tmpSpecNode, childElem, contentContext, adoptSpecNode); } @@ -4728,9 +4808,9 @@ void TraverseSchema::processComplexContent(const XMLCh* const typeName, // the whole schema. } else { - + // Compose the final content model by concatenating the base and - // the current in sequence + // the current in sequence if (!specNode) { typeInfo->setContentSpec(baseSpecNode); @@ -4811,7 +4891,7 @@ void TraverseSchema::processBaseTypeInfo(const XMLCh* const baseName, if (baseDTValidator == 0) { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::TypeNotFound, uriStr, localPart); - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } } } @@ -4834,7 +4914,7 @@ void TraverseSchema::processBaseTypeInfo(const XMLCh* const baseName, locationsContain(fCurrentTypeNameStack, fStringPool.addOrFind(fullBaseName))) { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::NoCircularDefinition, fullBaseName); - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } // if not found, 2 possibilities: @@ -4869,13 +4949,13 @@ void TraverseSchema::processBaseTypeInfo(const XMLCh* const baseName, if (baseDTValidator == 0) { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::TypeNotFound, uriStr, localPart, uriStr); - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } } else { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::BaseTypeNotFound, baseName); - throw 0; + throw TraverseSchema::InvalidComplexTypeInfo; } } } @@ -4934,6 +5014,7 @@ void TraverseSchema::processAttributes(const DOM_Element& attElem, DOM_Element child = attElem; SchemaAttDef* attWildCard = 0; Janitor<SchemaAttDef> janAttWildCard(0); + XercesAttGroupInfo* attGroupInfo = 0; for (; child != 0; child = XUtil::getNextSiblingElement(child)) { @@ -4943,7 +5024,7 @@ void TraverseSchema::processAttributes(const DOM_Element& attElem, traverseAttributeDecl(child, typeInfo); } else if (childName.equals(SchemaSymbols::fgELT_ATTRIBUTEGROUP)) { - // TO DO + attGroupInfo = traverseAttributeGroupDecl(child, typeInfo); } else if (childName.equals(SchemaSymbols::fgELT_ANYATTRIBUTE) ) { attWildCard = traverseAnyAttribute(child); @@ -4967,7 +5048,6 @@ void TraverseSchema::processAttributes(const DOM_Element& attElem, else { } - // ------------------------------------------------------------- // merge in base type's attribute decls // ------------------------------------------------------------- @@ -5078,7 +5158,7 @@ TraverseSchema::addAttributeDeclFromAnotherSchema(const XMLCh* const name, return -1; } - if (typeInfo!= 0) { + if (typeInfo || fCurrentAttGroupInfo) { QName* attName = tempAtt->getAttName(); @@ -5097,7 +5177,18 @@ TraverseSchema::addAttributeDeclFromAnotherSchema(const XMLCh* const name, tempAtt->getEnumeration()); newAtt->setDatatypeValidator(tempAtt->getDatatypeValidator()); - typeInfo->addAttDef(newAtt); + + bool toClone = false; + + if (typeInfo) { + + toClone = true; + typeInfo->addAttDef(newAtt); + } + + if (fCurrentGroupInfo) { + fCurrentAttGroupInfo->addAttDef(newAtt, toClone); + } } return 0; @@ -5160,9 +5251,8 @@ void TraverseSchema::restoreSchemaInfo() { fAttributeDefaultQualified = fCurrentSchemaInfo->isAttributeDefaultQualified(); fBlockDefault = fCurrentSchemaInfo->getBlockDefault(); fFinalDefault = fCurrentSchemaInfo->getFinalDefault(); + fCurrentNamespaceLevel = fCurrentSchemaInfo->getNamespaceScopeLevel(); fSchemaRootElement = fCurrentSchemaInfo->getRoot(); - fSchemaGrammar->setElementDefaultQualified(fElementDefaultQualified); - fSchemaGrammar->setAttributeDefaultQualified(fAttributeDefaultQualified); } @@ -5253,7 +5343,7 @@ int TraverseSchema::getMaxTotalRange(const ContentSpecNode* const specNode) { max = maxSecond; } else { - if (nodeType == ContentSpecNode::Choice) { + if (nodeType == ContentSpecNode::Choice) { max = (max > maxSecond) ? max : maxSecond; } else { @@ -5271,10 +5361,10 @@ void TraverseSchema::checkFixedFacet(const DOM_Element& elem, const DatatypeValidator* const baseDV, unsigned int& flags) { - const XMLCh* fixedFacet = + const XMLCh* fixedFacet = getElementAttValue(elem, SchemaSymbols::fgATT_FIXED); - if (fixedFacet && + if (fixedFacet && (!XMLString::compareString(fixedFacet, SchemaSymbols::fgATTVAL_TRUE) || !XMLString::compareString(fixedFacet, fgValueOne))) { @@ -5316,8 +5406,8 @@ void TraverseSchema::checkRefElementConsistency() { for (unsigned int i=0; i < refElemSize; i++) { int elemScope = fRefElemScope->elementAt(i); - SchemaElementDecl* elem = fRefElements->elementAt(i); - RefVectorOf<SchemaElementDecl>* subsElements = + SchemaElementDecl* elem = fRefElements->elementAt(i); + RefVectorOf<SchemaElementDecl>* subsElements = fValidSubstitutionGroups->get(elem->getBaseName(), elem->getURI()); if (subsElements) { @@ -5330,7 +5420,7 @@ void TraverseSchema::checkRefElementConsistency() { SchemaElementDecl* sameScopeElem = (SchemaElementDecl*) fSchemaGrammar->getElemDecl(subsElem->getURI(), subsElemName, 0, elemScope); - if (sameScopeElem + if (sameScopeElem && (subsElem->getComplexTypeInfo() != sameScopeElem->getComplexTypeInfo() || subsElem->getDatatypeValidator() != sameScopeElem->getDatatypeValidator())) { reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateElementDeclaration, subsElemName); @@ -5421,7 +5511,7 @@ XercesGroupInfo* TraverseSchema::processGroupRef(const DOM_Element& elem, bool& toAdoptSpecNode) { if (XUtil::getFirstChildElement(elem) != 0) { - reportSchemaError(XMLUni::fgValidityDomain, XMLValid::NoContentForRef); + reportSchemaError(XMLUni::fgValidityDomain, XMLValid::NoContentForRef, SchemaSymbols::fgELT_GROUP); } const XMLCh* prefix = getPrefix(refName); @@ -5440,94 +5530,110 @@ XercesGroupInfo* TraverseSchema::processGroupRef(const DOM_Element& elem, return 0; } - XercesGroupInfo* groupInfo = fGroupRegistry->get(fBuffer.getRawBuffer()); - - if (groupInfo) { - - toAdoptSpecNode = false; + XercesGroupInfo* groupInfo = 0; - // create element declarations in complexType - if (groupInfo->getScope() != fCurrentScope) { - createGroupElements(groupInfo, fSchemaGrammar); - } + //if from another schema + if (XMLString::compareString(uriStr, fTargetNSURIString) != 0) { + groupInfo = traverseGroupDeclNS(uriStr, localPart, toAdoptSpecNode); } else { - //if from another schema - if (XMLString::compareString(uriStr, fTargetNSURIString) != 0) { - groupInfo = traverseGroupDeclNS(uriStr, localPart, toAdoptSpecNode); - } - else { + groupInfo = fGroupRegistry->get(localPart); + + if (!groupInfo) { - DOM_Element groupElem = + DOM_Element groupElem = getTopLevelComponentByName(SchemaSymbols::fgELT_GROUP, localPart); if (groupElem != 0) { + groupInfo = traverseGroupDecl(groupElem, toAdoptSpecNode); + + if (groupInfo && fCurrentGroupInfo + && groupInfo->getScope() == fCurrentGroupInfo->getScope()) { + copyGroupElements(groupInfo, fCurrentGroupInfo, 0); + } + + return groupInfo; } else { - reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::GroupNotFound, localPart); + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DeclarationNotFound, + SchemaSymbols::fgELT_GROUP, uriStr, localPart); } } + else { + toAdoptSpecNode = false; + } } - // copy ref'd group elements - if (fCurrentGroupInfo - && groupInfo->getScope() == fCurrentGroupInfo->getScope()) { - copyGroupElements(fCurrentGroupInfo, groupInfo); + if (groupInfo) { + copyGroupElements(groupInfo, fCurrentGroupInfo, fCurrentComplexType); } return groupInfo; } -void TraverseSchema::createGroupElements(XercesGroupInfo* const groupInfo, - const SchemaGrammar* const schemaGrammar) { - unsigned int elemCount = groupInfo->elementCount(); +XercesAttGroupInfo* +TraverseSchema::processAttributeGroupRef(const DOM_Element& elem, + const XMLCh* const refName, + ComplexTypeInfo* const typeInfo) { - if (elemCount) { + if (XUtil::getFirstChildElement(elem) != 0) { + reportSchemaError(XMLUni::fgValidityDomain, XMLValid::NoContentForRef, SchemaSymbols::fgELT_ATTRIBUTEGROUP); + } - int schemaURI = fURIStringPool->addOrFind(SchemaSymbols::fgURI_SCHEMAFORSCHEMA); - int emptyURI = fURIStringPool->addOrFind(XMLUni::fgZeroLenString); + const XMLCh* prefix = getPrefix(refName); + const XMLCh* localPart = getLocalPart(refName); + const XMLCh* uriStr = resolvePrefixToURI(prefix); + XercesAttGroupInfo* attGroupInfo = 0; - for (unsigned int i=0; i < elemCount; i++) { + if (XMLString::compareString(uriStr, fTargetNSURIString) != 0) { + attGroupInfo = traverseAttributeGroupDeclNS(uriStr, localPart); + } + else { - const SchemaGrammar* aGrammar = schemaGrammar; - SchemaElementDecl* elemDecl = groupInfo->elementAt(i); - int elemURI = elemDecl->getURI(); + // circular check + DOM_Node parentElem = elem.getParentNode(); + + if (parentElem.getLocalName().equals(SchemaSymbols::fgELT_ATTRIBUTEGROUP) + && ((DOM_Element&) parentElem).getAttribute(SchemaSymbols::fgATT_NAME).equals(localPart) + && !(parentElem.getParentNode().getLocalName().equals(SchemaSymbols::fgELT_REDEFINE))) { - if (elemURI != fTargetNSURI && elemURI != schemaURI && elemURI != emptyURI) { + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::NoCircularAttGroup); + return 0; + } - Grammar* aGrammar = - fGrammarResolver->getGrammar(fURIStringPool->getValueForId(elemURI)); + attGroupInfo = fAttGroupRegistry->get(localPart); - if (!aGrammar || aGrammar->getGrammarType() != Grammar::SchemaGrammarType) { - continue; // REVISIT - error message - } - } + if (!attGroupInfo) { - const XMLCh* localPart = elemDecl->getBaseName(); - const SchemaElementDecl* other = (SchemaElementDecl*) - aGrammar->getElemDecl(elemURI, localPart, 0, fCurrentScope); + // traverse top level attributeGroup - if found + DOM_Element attGroupElem = + getTopLevelComponentByName(SchemaSymbols::fgELT_ATTRIBUTEGROUP, localPart); - if (other) { + if (attGroupElem != 0) { - if (elemDecl->getComplexTypeInfo() != other->getComplexTypeInfo() - || elemDecl->getDatatypeValidator() != other->getDatatypeValidator()) { - reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateElementDeclaration, localPart); + attGroupInfo = traverseAttributeGroupDecl(attGroupElem, typeInfo); + + if (attGroupInfo && fCurrentAttGroupInfo) { + copyAttGroupAttributes(attGroupInfo, fCurrentAttGroupInfo, 0); } + + return attGroupInfo; } else { - - int elemScope = elemDecl->getEnclosingScope(); - - fCurrentComplexType->addElement(elemDecl); - elemDecl->setEnclosingScope(fCurrentScope); - ((SchemaGrammar*) aGrammar)->putGroupElemDecl(elemDecl); - elemDecl->setEnclosingScope(elemScope); - } + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DeclarationNotFound, + SchemaSymbols::fgELT_ATTRIBUTEGROUP, uriStr, localPart); + } } } + + if (attGroupInfo) { + copyAttGroupAttributes(attGroupInfo, fCurrentAttGroupInfo, typeInfo); + } + + return attGroupInfo; } bool TraverseSchema::hasAllContent(const ContentSpecNode* const specNode) { @@ -5558,7 +5664,7 @@ void TraverseSchema::processElements(ComplexTypeInfo* const baseTypeInfo, int emptyURI = fURIStringPool->addOrFind(XMLUni::fgZeroLenString); for (unsigned int i=0; i < elemCount; i++) { - + SchemaGrammar* aGrammar = fSchemaGrammar; SchemaElementDecl* elemDecl = baseTypeInfo->elementAt(i); @@ -5590,7 +5696,7 @@ void TraverseSchema::processElements(ComplexTypeInfo* const baseTypeInfo, } } else { - + int elemScope = elemDecl->getEnclosingScope(); newTypeInfo->addElement(elemDecl); @@ -5603,19 +5709,100 @@ void TraverseSchema::processElements(ComplexTypeInfo* const baseTypeInfo, } -void TraverseSchema::copyGroupElements(XercesGroupInfo* const toGroup, - XercesGroupInfo* const fromGroup) { +void TraverseSchema::copyGroupElements(XercesGroupInfo* const fromGroup, + XercesGroupInfo* const toGroup, + ComplexTypeInfo* const typeInfo) { + + unsigned int elemCount = fromGroup->elementCount(); + int newScope = (typeInfo) ? typeInfo->getScopeDefined() : 0; - if (toGroup && fromGroup) { + for (unsigned int i = 0; i < elemCount; i++) { - unsigned int fromSize = fromGroup->elementCount(); + SchemaElementDecl* elemDecl = fromGroup->elementAt(i); - for (unsigned int i=0; i< fromSize; i++) { - toGroup->addElement(fromGroup->elementAt(i)); + if (typeInfo) { + int elemURI = elemDecl->getURI(); + const XMLCh* localPart = elemDecl->getBaseName(); + const SchemaElementDecl* other = (SchemaElementDecl*) + fSchemaGrammar->getElemDecl(elemURI, localPart, 0, fCurrentScope); + + if (other) { + + if (elemDecl->getComplexTypeInfo() != other->getComplexTypeInfo() + || elemDecl->getDatatypeValidator() != other->getDatatypeValidator()) { + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateElementDeclaration, localPart); + } + + continue; + } + + int elemScope = elemDecl->getEnclosingScope(); + + elemDecl->setEnclosingScope(newScope); + typeInfo->addElement(elemDecl); + fSchemaGrammar->putGroupElemDecl(elemDecl); + elemDecl->setEnclosingScope(elemScope); + + if (toGroup) { + toGroup->addElement(elemDecl); + } + } + else { + if (!toGroup->containsElement(elemDecl)) { + toGroup->addElement(elemDecl); + } + } + } +} + +void TraverseSchema::copyAttGroupAttributes(XercesAttGroupInfo* const fromAttGroup, + XercesAttGroupInfo* const toAttGroup, + ComplexTypeInfo* const typeInfo) { + + unsigned int attCount = fromAttGroup->attributeCount(); + + for (unsigned int i=0; i < attCount; i++) { + + SchemaAttDef* attDef = fromAttGroup->attributeAt(i); + QName* attName = attDef->getAttName(); + const XMLCh* localPart = attName->getLocalPart(); + + if (typeInfo) { + + if (typeInfo->getAttDef(localPart, attName->getURI())) { + + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateAttribute, localPart); + continue; + } + + typeInfo->addAttDef(new SchemaAttDef(attDef)); + + if (toAttGroup) { + toAttGroup->addAttDef(attDef, true); + } + } + else { + + if (toAttGroup->containsAttribute(localPart, attName->getURI())) { + + reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateAttribute, localPart); + continue; + } + + toAttGroup->addAttDef(attDef, true); + } + } + + if (toAttGroup) { + unsigned int anyAttCount = fromAttGroup->anyAttributeCount(); + + for (unsigned int j=0; j < anyAttCount; j++) { + toAttGroup->addAnyAttDef(fromAttGroup->anyAttributeAt(j), true); } } } + // --------------------------------------------------------------------------- // TraverseSchema: Error reporting methods // --------------------------------------------------------------------------- @@ -5660,10 +5847,10 @@ void TraverseSchema::cleanUp() { delete fCurrentGroupStack; delete fGlobalTypes; delete fGlobalGroups; + delete fGlobalAttGroups; delete fSubstitutionGroups; delete fRefElements; delete fRefElemScope; - delete fGroupRegistry; if (fAdoptImportLocations) { delete fImportLocations; diff --git a/src/validators/schema/TraverseSchema.hpp b/src/validators/schema/TraverseSchema.hpp index 63782a464a663596207df1cea36fc8dc58b40a1d..fecd45935c8d2b29dcd546890e0bd83da48b5ebd 100644 --- a/src/validators/schema/TraverseSchema.hpp +++ b/src/validators/schema/TraverseSchema.hpp @@ -98,6 +98,7 @@ class InputSource; class ErrorHandler; class GeneralAttributeCheck; class XercesGroupInfo; +class XercesAttGroupInfo; class VALIDATORS_EXPORT TraverseSchema @@ -145,50 +146,54 @@ private: /** * Traverse the Schema DOM tree */ - void doTraverseSchema(); - void traverseSchemaHeader(); - void traverseAnnotationDecl(const DOM_Element& childElem); - void traverseInclude(const DOM_Element& childElem); - void traverseImport(const DOM_Element& childElem); - void traverseRedefine(const DOM_Element& childElem); - void traverseAttributeDecl(const DOM_Element& childElem, - ComplexTypeInfo* const typeInfo); - void traverseSimpleContentDecl(const XMLCh* const typeName, - const DOM_Element& contentDecl, - ComplexTypeInfo* const typeInfo); - void traverseComplexContentDecl(const XMLCh* const typeName, - const DOM_Element& contentDecl, - ComplexTypeInfo* const typeInfo, - const bool isMixed); - int traverseSimpleTypeDecl(const DOM_Element& childElem, - int baseRefContext = SchemaSymbols::EMPTY_SET); - int traverseComplexTypeDecl(const DOM_Element& childElem); - int traverseByList(const DOM_Element& rootElem, - const DOM_Element& contentElem, - const int typeNameIndex, - const int finalSet); - int traverseByRestriction(const DOM_Element& rootElem, - const DOM_Element& contentElem, - const int typeNameIndex, - const int finalSet); - int traverseByUnion(const DOM_Element& rootElem, - const DOM_Element& contentElem, - const int typeNameIndex, - const int finalSet, - int baseRefContext); - QName* traverseElementDecl(const DOM_Element& childElem); - XMLCh* traverseNotationDecl(const DOM_Element& childElem); - ContentSpecNode* traverseChoiceSequence(const DOM_Element& elemDecl, - const int modelGroupType, - bool& toAdoptSpecNode); - ContentSpecNode* traverseAny(const DOM_Element& anyDecl); - ContentSpecNode* traverseAll(const DOM_Element& allElem); - XercesGroupInfo* traverseGroupDecl(const DOM_Element& childElem, + void doTraverseSchema(); + void traverseSchemaHeader(); + void traverseAnnotationDecl(const DOM_Element& childElem); + void traverseInclude(const DOM_Element& childElem); + void traverseImport(const DOM_Element& childElem); + void traverseRedefine(const DOM_Element& childElem); + void traverseAttributeDecl(const DOM_Element& childElem, + ComplexTypeInfo* const typeInfo); + void traverseSimpleContentDecl(const XMLCh* const typeName, + const DOM_Element& contentDecl, + ComplexTypeInfo* const typeInfo); + void traverseComplexContentDecl(const XMLCh* const typeName, + const DOM_Element& contentDecl, + ComplexTypeInfo* const typeInfo, + const bool isMixed); + int traverseSimpleTypeDecl(const DOM_Element& childElem, + int baseRefContext = SchemaSymbols::EMPTY_SET); + int traverseComplexTypeDecl(const DOM_Element& childElem); + int traverseByList(const DOM_Element& rootElem, + const DOM_Element& contentElem, + const int typeNameIndex, + const int finalSet); + int traverseByRestriction(const DOM_Element& rootElem, + const DOM_Element& contentElem, + const int typeNameIndex, + const int finalSet); + int traverseByUnion(const DOM_Element& rootElem, + const DOM_Element& contentElem, + const int typeNameIndex, + const int finalSet, + int baseRefContext); + QName* traverseElementDecl(const DOM_Element& childElem); + XMLCh* traverseNotationDecl(const DOM_Element& childElem); + ContentSpecNode* traverseChoiceSequence(const DOM_Element& elemDecl, + const int modelGroupType, + bool& toAdoptSpecNode); + ContentSpecNode* traverseAny(const DOM_Element& anyDecl); + ContentSpecNode* traverseAll(const DOM_Element& allElem); + XercesGroupInfo* traverseGroupDecl(const DOM_Element& childElem, bool& toAdoptSpecNode); - XercesGroupInfo* traverseGroupDeclNS(const XMLCh* const uriStr, - const XMLCh* const groupName, - bool& toAdoptSpecNode); - SchemaAttDef* traverseAnyAttribute(const DOM_Element& elem); + XercesGroupInfo* traverseGroupDeclNS(const XMLCh* const uriStr, + const XMLCh* const groupName, + bool& toAdoptSpecNode); + XercesAttGroupInfo* traverseAttributeGroupDecl(const DOM_Element& elem, + ComplexTypeInfo* const typeInfo); + XercesAttGroupInfo* traverseAttributeGroupDeclNS(const XMLCh* const uriStr, + const XMLCh* const attGroupName); + SchemaAttDef* traverseAnyAttribute(const DOM_Element& elem); // ----------------------------------------------------------------------- // Error Reporting methods @@ -209,12 +214,6 @@ private: */ void retrieveNamespaceMapping(); - /** - * Extract all top-level attribute, attributeGroup, and group Decls and - * put them in the 3 hash tables in the SchemaGrammar. - */ - void extractTopLevel3Components(const DOM_Element& rootElem); - /** * Loop through the children, and traverse the corresponding schema type * type declaration (simpleType, complexType, import, ....) @@ -333,6 +332,13 @@ private: const XMLCh* const refName, bool& toAdoptScpecNode); + /** + * Process a 'ref' on a attributeGroup + */ + XercesAttGroupInfo* processAttributeGroupRef(const DOM_Element& elem, + const XMLCh* const refName, + ComplexTypeInfo* const typeInfo); + /** * Parse block & final items */ @@ -513,16 +519,19 @@ private: void checkEnumerationRequiredNotation(const XMLCh* const name, const XMLCh* const typeStr); - void createGroupElements(XercesGroupInfo* const groupInfo, - const SchemaGrammar* const schemaGrammar); - bool hasAllContent(const ContentSpecNode* const specNode); void processElements(ComplexTypeInfo* const baseTypeInfo, ComplexTypeInfo* const newTypeInfo); - void copyGroupElements(XercesGroupInfo* const toGroup, - XercesGroupInfo* const fromGroup); + void copyGroupElements(XercesGroupInfo* const fromGroup, + XercesGroupInfo* const toGroup, + ComplexTypeInfo* const typeInfo); + + void copyAttGroupAttributes(XercesAttGroupInfo* const fromAttGroup, + XercesAttGroupInfo* const toAttGroup, + ComplexTypeInfo* const typeInfo); + // ----------------------------------------------------------------------- // Private constants @@ -535,6 +544,12 @@ private: , ECS_Final }; + enum ExceptionCodes + { + NoException = 0, + InvalidComplexTypeInfo = 1 + }; + // Flags indicate any special restrictions on minOccurs and maxOccurs // relating to "all". // Not_All_Context - not processing an <all> @@ -552,49 +567,52 @@ private: // ----------------------------------------------------------------------- // Private data members // ----------------------------------------------------------------------- - bool fElementDefaultQualified; - bool fAttributeDefaultQualified; - bool fAdoptImportLocations; - int fTargetNSURI; - int fCurrentScope; - int fSimpleTypeAnonCount; - int fComplexTypeAnonCount; - int fFinalDefault; - int fBlockDefault; - int fScopeCount; - DOM_Element fSchemaRootElement; - XMLCh* fTargetNSURIString; - XMLCh* fCurrentSchemaURL; - DatatypeValidatorFactory* fDatatypeRegistry; - GrammarResolver* fGrammarResolver; - SchemaGrammar* fSchemaGrammar; - SchemaGrammar* fRefSchemaGrammar; - EntityResolver* fEntityResolver; - ErrorHandler* fErrorHandler; - XMLStringPool* fURIStringPool; - XMLBuffer fBuffer; - XMLValidator* fValidator; - XMLScanner* fScanner; - NamespaceScope* fNamespaceScope; - RefHashTableOf<XMLAttDef>* fAttributeDeclRegistry; - RefHashTableOf<ComplexTypeInfo>* fComplexTypeRegistry; - RefHashTableOf<XercesGroupInfo>* fGroupRegistry; - SchemaInfo* fSchemaInfoRoot; - SchemaInfo* fCurrentSchemaInfo; - XercesGroupInfo* fCurrentGroupInfo; - ComplexTypeInfo* fCurrentComplexType; - ValueVectorOf<unsigned int>* fImportLocations; - ValueVectorOf<unsigned int>* fIncludeLocations; - ValueVectorOf<unsigned int>* fCurrentTypeNameStack; - ValueVectorOf<unsigned int>* fCurrentGroupStack; - GeneralAttributeCheck* fAttributeCheck; - RefHash2KeysTableOf<XMLCh>* fGlobalTypes; - RefHash2KeysTableOf<XMLCh>* fGlobalGroups; + bool fElementDefaultQualified; + bool fAttributeDefaultQualified; + bool fAdoptImportLocations; + int fTargetNSURI; + int fCurrentScope; + int fSimpleTypeAnonCount; + int fComplexTypeAnonCount; + int fFinalDefault; + int fBlockDefault; + int fScopeCount; + unsigned int fCurrentNamespaceLevel; + DOM_Element fSchemaRootElement; + XMLCh* fTargetNSURIString; + XMLCh* fCurrentSchemaURL; + DatatypeValidatorFactory* fDatatypeRegistry; + GrammarResolver* fGrammarResolver; + SchemaGrammar* fSchemaGrammar; + EntityResolver* fEntityResolver; + ErrorHandler* fErrorHandler; + XMLStringPool* fURIStringPool; + XMLBuffer fBuffer; + XMLValidator* fValidator; + XMLScanner* fScanner; + NamespaceScope* fNamespaceScope; + RefHashTableOf<XMLAttDef>* fAttributeDeclRegistry; + RefHashTableOf<ComplexTypeInfo>* fComplexTypeRegistry; + RefHashTableOf<XercesGroupInfo>* fGroupRegistry; + RefHashTableOf<XercesAttGroupInfo>* fAttGroupRegistry; + SchemaInfo* fSchemaInfoRoot; + SchemaInfo* fCurrentSchemaInfo; + XercesGroupInfo* fCurrentGroupInfo; + XercesAttGroupInfo* fCurrentAttGroupInfo; + ComplexTypeInfo* fCurrentComplexType; + ValueVectorOf<unsigned int>* fImportLocations; + ValueVectorOf<unsigned int>* fIncludeLocations; + ValueVectorOf<unsigned int>* fCurrentTypeNameStack; + ValueVectorOf<unsigned int>* fCurrentGroupStack; + GeneralAttributeCheck* fAttributeCheck; + RefHash2KeysTableOf<XMLCh>* fGlobalTypes; + RefHash2KeysTableOf<XMLCh>* fGlobalGroups; + RefHash2KeysTableOf<XMLCh>* fGlobalAttGroups; RefHash2KeysTableOf<SchemaElementDecl>* fSubstitutionGroups; - RefHash2KeysTableOf<ElemVector>* fValidSubstitutionGroups; - RefVectorOf<SchemaElementDecl>* fRefElements; - ValueVectorOf<int>* fRefElemScope; - static XMLStringPool fStringPool; + RefHash2KeysTableOf<ElemVector>* fValidSubstitutionGroups; + RefVectorOf<SchemaElementDecl>* fRefElements; + ValueVectorOf<int>* fRefElemScope; + static XMLStringPool fStringPool; friend class GeneralAttributeCheck; }; @@ -759,6 +777,7 @@ inline int TraverseSchema::resetCurrentTypeNameStack(const int value) { return value; } + #endif /** diff --git a/src/validators/schema/XercesAttGroupInfo.cpp b/src/validators/schema/XercesAttGroupInfo.cpp new file mode 100644 index 0000000000000000000000000000000000000000..197f309ff3374bc371965ae5bf59f7bff70129d0 --- /dev/null +++ b/src/validators/schema/XercesAttGroupInfo.cpp @@ -0,0 +1,118 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Xerces" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache\@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation, and was + * originally based on software copyright (c) 1999, International + * Business Machines, Inc., http://www.ibm.com . For more information + * on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +/* + * $Log$ + * Revision 1.1 2001/07/31 15:26:54 knoaman + * Added support for <attributeGroup>. + * + * Revision 1.1 2001/07/24 18:33:46 knoaman + * Added support for <group> + extra constraint checking for complexType + * + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include <validators/schema/XercesAttGroupInfo.hpp> +#include <util/QName.hpp> + +// --------------------------------------------------------------------------- +// XercesAttGroupInfo: Constructors and Destructor +// --------------------------------------------------------------------------- +XercesAttGroupInfo::XercesAttGroupInfo() + : fAttributes(0) + , fAnyAttributes(0) +{ + +} + + +XercesAttGroupInfo::~XercesAttGroupInfo() +{ + delete fAttributes; + delete fAnyAttributes; +} + +bool XercesAttGroupInfo::containsAttribute(const XMLCh* const name, + const unsigned int uri) { + + if (fAttributes) { + + unsigned int attCount = fAttributes->size(); + + if (attCount) { + + for (unsigned int i=0; i < attCount; i++) { + + QName* attName = fAttributes->elementAt(i)->getAttName(); + + if (attName->getURI() == uri && + !XMLString::compareString(attName->getLocalPart(),name)) { + return true; + } + } + } + } + + return false; +} + +/** + * End of file XercesGroupInfo.cpp + */ + + diff --git a/src/validators/schema/XercesAttGroupInfo.hpp b/src/validators/schema/XercesAttGroupInfo.hpp new file mode 100644 index 0000000000000000000000000000000000000000..f4c81b0f9f47e31942c7b3974760c11aa9a225e2 --- /dev/null +++ b/src/validators/schema/XercesAttGroupInfo.hpp @@ -0,0 +1,222 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Xerces" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache\@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation, and was + * originally based on software copyright (c) 2001, International + * Business Machines, Inc., http://www.ibm.com . For more information + * on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESATTGROUPINFO_HPP) +#define XERCESATTGROUPINFO_HPP + + +/** + * The class act as a place holder to store attributeGroup information. + * + * The class is intended for internal use. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include <util/RefVectorOf.hpp> +#include <validators/schema/SchemaAttDef.hpp> + + + +class VALIDATORS_EXPORT XercesAttGroupInfo +{ +public: + // ----------------------------------------------------------------------- + // Public Constructors/Destructor + // ----------------------------------------------------------------------- + XercesAttGroupInfo(); + ~XercesAttGroupInfo(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + unsigned int attributeCount() const; + unsigned int anyAttributeCount() const; + SchemaAttDef* attributeAt(const unsigned int index); + const SchemaAttDef* attributeAt(const unsigned int index) const; + SchemaAttDef* anyAttributeAt(const unsigned int index); + const SchemaAttDef* anyAttributeAt(const unsigned int index) const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void addAttDef(SchemaAttDef* const toAdd, const bool toClone = false); + void addAnyAttDef(SchemaAttDef* const toAdd, const bool toClone = false); + + // ----------------------------------------------------------------------- + // Query methods + // ----------------------------------------------------------------------- + bool containsAttribute(const XMLCh* const name, const unsigned int uri); + +private: + // ----------------------------------------------------------------------- + // Unimplemented contstructors and operators + // ----------------------------------------------------------------------- + XercesAttGroupInfo(const XercesAttGroupInfo& elemInfo); + XercesAttGroupInfo& operator= (const XercesAttGroupInfo& other); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + RefVectorOf<SchemaAttDef>* fAttributes; + RefVectorOf<SchemaAttDef>* fAnyAttributes; +}; + +// --------------------------------------------------------------------------- +// XercesAttGroupInfo: Getter methods +// --------------------------------------------------------------------------- +inline unsigned int XercesAttGroupInfo::attributeCount() const { + + if (fAttributes) { + return fAttributes->size(); + } + + return 0; +} + +inline unsigned int XercesAttGroupInfo::anyAttributeCount() const { + + if (fAnyAttributes) { + return fAnyAttributes->size(); + } + + return 0; +} + +inline SchemaAttDef* +XercesAttGroupInfo::attributeAt(const unsigned int index) { + + if (fAttributes) { + return fAttributes->elementAt(index); + } + + return 0; +} + +inline const SchemaAttDef* +XercesAttGroupInfo::attributeAt(const unsigned int index) const { + + if (fAttributes) { + return fAttributes->elementAt(index); + } + + return 0; +} + +inline SchemaAttDef* +XercesAttGroupInfo::anyAttributeAt(const unsigned int index) { + + if (fAnyAttributes) { + return fAnyAttributes->elementAt(index); + } + + return 0; +} + +inline const SchemaAttDef* +XercesAttGroupInfo::anyAttributeAt(const unsigned int index) const { + + if (fAnyAttributes) { + return fAnyAttributes->elementAt(index); + } + + return 0; +} + +// --------------------------------------------------------------------------- +// XercesAttGroupInfo: Setter methods +// --------------------------------------------------------------------------- +inline void XercesAttGroupInfo::addAttDef(SchemaAttDef* const toAdd, + const bool toClone) { + + if (!fAttributes) { + fAttributes = new RefVectorOf<SchemaAttDef>(4); + } + + if (toClone) { + fAttributes->addElement(new SchemaAttDef(toAdd)); + } + else { + fAttributes->addElement(toAdd); + } +} + +inline void XercesAttGroupInfo::addAnyAttDef(SchemaAttDef* const toAdd, + const bool toClone) { + + if (!fAnyAttributes) { + fAnyAttributes = new RefVectorOf<SchemaAttDef>(2); + } + + if (toClone) { + fAnyAttributes->addElement(new SchemaAttDef(toAdd)); + } + else { + fAnyAttributes->addElement(toAdd); + } +} + +#endif + +/** + * End of file XercesGroupInfo.hpp + */ + diff --git a/src/validators/schema/XercesGroupInfo.hpp b/src/validators/schema/XercesGroupInfo.hpp index 519863b9b8f5255eac467a8501fd0b8ae5d227e9..c03df9079680c6389d887d6452895d28dfc6e68e 100644 --- a/src/validators/schema/XercesGroupInfo.hpp +++ b/src/validators/schema/XercesGroupInfo.hpp @@ -108,6 +108,11 @@ public: void setAdoptContentSpec(const bool toAdopt); void addElement(SchemaElementDecl* const toAdd); + // ----------------------------------------------------------------------- + // Query methods + // ----------------------------------------------------------------------- + bool containsElement(const SchemaElementDecl* const elem); + private: // ----------------------------------------------------------------------- // Unimplemented contstructors and operators @@ -171,6 +176,23 @@ inline void XercesGroupInfo::addElement(SchemaElementDecl* const elem) { fElements->addElement(elem); } + +// --------------------------------------------------------------------------- +// XercesGroupInfo: Query methods +// ---------------------------------------------------------------------------} +inline bool XercesGroupInfo::containsElement(const SchemaElementDecl* const elem) { + + unsigned int elemSize = fElements->size(); + + for (unsigned int i=0; i < elemSize; i++) { + if (fElements->elementAt(i) == elem) { + return true; + } + } + + return false; +} + #endif /**