Web: Add SSBOs and a few other missing compute features.
authorJohn Kessenich <cepheus@frii.com>
Thu, 17 Oct 2019 13:08:40 +0000 (07:08 -0600)
committerJohn Kessenich <cepheus@frii.com>
Wed, 23 Oct 2019 06:25:39 +0000 (00:25 -0600)
SPIRV/GlslangToSpv.cpp
Test/baseResults/size
Test/baseResults/web.comp.out
Test/web.comp
glslang/MachineIndependent/Initialize.cpp
glslang/MachineIndependent/ParseHelper.cpp
glslang/MachineIndependent/Scan.cpp
glslang/MachineIndependent/glslang.m4
glslang/MachineIndependent/glslang.y
glslang/MachineIndependent/glslang_tab.cpp
glslang/MachineIndependent/glslang_tab.cpp.h

index 762a292..c6dcef5 100644 (file)
@@ -673,6 +673,13 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
     case glslang::EbvFace:                 return spv::BuiltInFrontFacing;
     case glslang::EbvFragDepth:            return spv::BuiltInFragDepth;
 
+    case glslang::EbvNumWorkGroups:        return spv::BuiltInNumWorkgroups;
+    case glslang::EbvWorkGroupSize:        return spv::BuiltInWorkgroupSize;
+    case glslang::EbvWorkGroupId:          return spv::BuiltInWorkgroupId;
+    case glslang::EbvLocalInvocationId:    return spv::BuiltInLocalInvocationId;
+    case glslang::EbvLocalInvocationIndex: return spv::BuiltInLocalInvocationIndex;
+    case glslang::EbvGlobalInvocationId:   return spv::BuiltInGlobalInvocationId;
+
 #ifndef GLSLANG_WEB
     // These *Distance capabilities logically belong here, but if the member is declared and
     // then never used, consumers of SPIR-V prefer the capability not be declared.
@@ -757,12 +764,6 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
     case glslang::EbvTessCoord:            return spv::BuiltInTessCoord;
     case glslang::EbvPatchVertices:        return spv::BuiltInPatchVertices;
     case glslang::EbvHelperInvocation:     return spv::BuiltInHelperInvocation;
-    case glslang::EbvNumWorkGroups:        return spv::BuiltInNumWorkgroups;
-    case glslang::EbvWorkGroupSize:        return spv::BuiltInWorkgroupSize;
-    case glslang::EbvWorkGroupId:          return spv::BuiltInWorkgroupId;
-    case glslang::EbvLocalInvocationId:    return spv::BuiltInLocalInvocationId;
-    case glslang::EbvLocalInvocationIndex: return spv::BuiltInLocalInvocationIndex;
-    case glslang::EbvGlobalInvocationId:   return spv::BuiltInGlobalInvocationId;
 
     case glslang::EbvSubGroupSize:
         builder.addExtension(spv::E_SPV_KHR_shader_ballot);
@@ -1200,11 +1201,11 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T
     }
 
     switch (type.getQualifier().storage) {
-    case glslang::EvqGlobal:        return spv::StorageClassPrivate;
-    case glslang::EvqConstReadOnly: return spv::StorageClassFunction;
-    case glslang::EvqTemporary:     return spv::StorageClassFunction;
-#ifndef GLSLANG_WEB
+    case glslang::EvqGlobal:           return spv::StorageClassPrivate;
+    case glslang::EvqConstReadOnly:    return spv::StorageClassFunction;
+    case glslang::EvqTemporary:        return spv::StorageClassFunction;
     case glslang::EvqShared:           return spv::StorageClassWorkgroup;
+#ifndef GLSLANG_WEB
     case glslang::EvqPayloadNV:        return spv::StorageClassRayPayloadNV;
     case glslang::EvqPayloadInNV:      return spv::StorageClassIncomingRayPayloadNV;
     case glslang::EvqHitAttrNV:        return spv::StorageClassHitAttributeNV;
@@ -2548,7 +2549,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
         binOp = glslang::EOpMod;
         break;
 
-#ifndef GLSLANG_WEB
     case glslang::EOpEmitVertex:
     case glslang::EOpEndPrimitive:
     case glslang::EOpBarrier:
@@ -2572,6 +2572,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
         // These all have 0 operands and will naturally finish up in the code below for 0 operands
         break;
 
+#ifndef GLSLANG_WEB
     case glslang::EOpAtomicStore:
         noReturnValue = true;
         // fallthrough
@@ -3537,8 +3538,8 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
                 builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5);
                 builder.addCapability(spv::CapabilityRuntimeDescriptorArrayEXT);
             }
-            spvType = builder.makeRuntimeArray(spvType);
 #endif
+            spvType = builder.makeRuntimeArray(spvType);
         }
         if (stride > 0)
             builder.addDecoration(spvType, spv::DecorationArrayStride, stride);
@@ -7172,6 +7173,48 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
     case glslang::EOpRefract:
         libCall = spv::GLSLstd450Refract;
         break;
+    case glslang::EOpBarrier:
+        {
+            // This is for the extended controlBarrier function, with four operands.
+            // The unextended barrier() goes through createNoArgOperation.
+            assert(operands.size() == 4);
+            unsigned int executionScope = builder.getConstantScalar(operands[0]);
+            unsigned int memoryScope = builder.getConstantScalar(operands[1]);
+            unsigned int semantics = builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3]);
+            builder.createControlBarrier((spv::Scope)executionScope, (spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics);
+            if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask |
+                             spv::MemorySemanticsMakeVisibleKHRMask |
+                             spv::MemorySemanticsOutputMemoryKHRMask |
+                             spv::MemorySemanticsVolatileMask)) {
+                builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
+            }
+            if (glslangIntermediate->usingVulkanMemoryModel() && (executionScope == spv::ScopeDevice || memoryScope == spv::ScopeDevice)) {
+                builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR);
+            }
+            return 0;
+        }
+        break;
+    case glslang::EOpMemoryBarrier:
+        {
+            // This is for the extended memoryBarrier function, with three operands.
+            // The unextended memoryBarrier() goes through createNoArgOperation.
+            assert(operands.size() == 3);
+            unsigned int memoryScope = builder.getConstantScalar(operands[0]);
+            unsigned int semantics = builder.getConstantScalar(operands[1]) | builder.getConstantScalar(operands[2]);
+            builder.createMemoryBarrier((spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics);
+            if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask |
+                             spv::MemorySemanticsMakeVisibleKHRMask |
+                             spv::MemorySemanticsOutputMemoryKHRMask |
+                             spv::MemorySemanticsVolatileMask)) {
+                builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
+            }
+            if (glslangIntermediate->usingVulkanMemoryModel() && memoryScope == spv::ScopeDevice) {
+                builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR);
+            }
+            return 0;
+        }
+        break;
+
 #ifndef GLSLANG_WEB
     case glslang::EOpInterpolateAtSample:
         if (typeProxy == glslang::EbtFloat16)
@@ -7330,47 +7373,6 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
         extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_explicit_vertex_parameter);
         libCall = spv::InterpolateAtVertexAMD;
         break;
-    case glslang::EOpBarrier:
-        {
-            // This is for the extended controlBarrier function, with four operands.
-            // The unextended barrier() goes through createNoArgOperation.
-            assert(operands.size() == 4);
-            unsigned int executionScope = builder.getConstantScalar(operands[0]);
-            unsigned int memoryScope = builder.getConstantScalar(operands[1]);
-            unsigned int semantics = builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3]);
-            builder.createControlBarrier((spv::Scope)executionScope, (spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics);
-            if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask |
-                             spv::MemorySemanticsMakeVisibleKHRMask |
-                             spv::MemorySemanticsOutputMemoryKHRMask |
-                             spv::MemorySemanticsVolatileMask)) {
-                builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
-            }
-            if (glslangIntermediate->usingVulkanMemoryModel() && (executionScope == spv::ScopeDevice || memoryScope == spv::ScopeDevice)) {
-                builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR);
-            }
-            return 0;
-        }
-        break;
-    case glslang::EOpMemoryBarrier:
-        {
-            // This is for the extended memoryBarrier function, with three operands.
-            // The unextended memoryBarrier() goes through createNoArgOperation.
-            assert(operands.size() == 3);
-            unsigned int memoryScope = builder.getConstantScalar(operands[0]);
-            unsigned int semantics = builder.getConstantScalar(operands[1]) | builder.getConstantScalar(operands[2]);
-            builder.createMemoryBarrier((spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics);
-            if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask |
-                             spv::MemorySemanticsMakeVisibleKHRMask |
-                             spv::MemorySemanticsOutputMemoryKHRMask |
-                             spv::MemorySemanticsVolatileMask)) {
-                builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
-            }
-            if (glslangIntermediate->usingVulkanMemoryModel() && memoryScope == spv::ScopeDevice) {
-                builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR);
-            }
-            return 0;
-        }
-        break;
 
     case glslang::EOpReportIntersectionNV:
     {
@@ -7478,17 +7480,18 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
 // Intrinsics with no arguments (or no return value, and no precision).
 spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId)
 {
-#ifndef GLSLANG_WEB
     // GLSL memory barriers use queuefamily scope in new model, device scope in old model
     spv::Scope memoryBarrierScope = glslangIntermediate->usingVulkanMemoryModel() ? spv::ScopeQueueFamilyKHR : spv::ScopeDevice;
 
     switch (op) {
+#ifndef GLSLANG_WEB
     case glslang::EOpEmitVertex:
         builder.createNoResultOp(spv::OpEmitVertex);
         return 0;
     case glslang::EOpEndPrimitive:
         builder.createNoResultOp(spv::OpEndPrimitive);
         return 0;
+#endif
     case glslang::EOpBarrier:
         if (glslangIntermediate->getStage() == EShLangTessControl) {
             if (glslangIntermediate->usingVulkanMemoryModel()) {
@@ -7509,18 +7512,10 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv:
         builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsAllMemory |
                                                         spv::MemorySemanticsAcquireReleaseMask);
         return 0;
-    case glslang::EOpMemoryBarrierAtomicCounter:
-        builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsAtomicCounterMemoryMask |
-                                                        spv::MemorySemanticsAcquireReleaseMask);
-        return 0;
     case glslang::EOpMemoryBarrierBuffer:
         builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsUniformMemoryMask |
                                                         spv::MemorySemanticsAcquireReleaseMask);
         return 0;
-    case glslang::EOpMemoryBarrierImage:
-        builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsImageMemoryMask |
-                                                        spv::MemorySemanticsAcquireReleaseMask);
-        return 0;
     case glslang::EOpMemoryBarrierShared:
         builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsWorkgroupMemoryMask |
                                                         spv::MemorySemanticsAcquireReleaseMask);
@@ -7529,6 +7524,15 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv:
         builder.createMemoryBarrier(spv::ScopeWorkgroup, spv::MemorySemanticsAllMemory |
                                                          spv::MemorySemanticsAcquireReleaseMask);
         return 0;
+#ifndef GLSLANG_WEB
+    case glslang::EOpMemoryBarrierAtomicCounter:
+        builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsAtomicCounterMemoryMask |
+                                                        spv::MemorySemanticsAcquireReleaseMask);
+        return 0;
+    case glslang::EOpMemoryBarrierImage:
+        builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsImageMemoryMask |
+                                                        spv::MemorySemanticsAcquireReleaseMask);
+        return 0;
     case glslang::EOpAllMemoryBarrierWithGroupSync:
         builder.createControlBarrier(spv::ScopeWorkgroup, spv::ScopeDevice,
                                         spv::MemorySemanticsAllMemory |
@@ -7620,10 +7624,10 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv:
         builder.addCapability(spv::CapabilityShaderClockKHR);
         return builder.createOp(spv::OpReadClockKHR, typeId, args);
     }
+#endif
     default:
         break;
     }
-#endif
 
     logger->missingFunctionality("unknown operation with no arguments");
 
index 4848776..a7b99b9 100644 (file)
@@ -1 +1 @@
-388096 ../build/install/bin/glslangValidator.exe
+399360 ../build/install/bin/glslangValidator.exe
index e69de88..711c720 100644 (file)
 ; SPIR-V
 ; Version: 1.0
 ; Generator: Khronos Glslang Reference Front End; 7
-; Bound: 55
+; Bound: 91
 ; Schema: 0
                OpCapability Shader
           %1 = OpExtInstImport "GLSL.std.450"
                OpMemoryModel Logical GLSL450
-               OpEntryPoint GLCompute %main "main"
+               OpEntryPoint GLCompute %main "main" %gl_NumWorkGroups %gl_WorkGroupID %gl_LocalInvocationID %gl_GlobalInvocationID %gl_LocalInvocationIndex
                OpExecutionMode %main LocalSize 2 5 7
                OpSource ESSL 310
                OpName %main "main"
+               OpName %bName "bName"
+               OpMemberName %bName 0 "size"
+               OpMemberName %bName 1 "count"
+               OpMemberName %bName 2 "data"
+               OpName %bInst "bInst"
                OpName %s "s"
                OpName %arrX "arrX"
                OpName %arrY "arrY"
                OpName %arrZ "arrZ"
-               OpDecorate %19 SpecId 18
-               OpDecorate %21 SpecId 19
+               OpName %gl_NumWorkGroups "gl_NumWorkGroups"
+               OpName %gl_WorkGroupID "gl_WorkGroupID"
+               OpName %gl_LocalInvocationID "gl_LocalInvocationID"
+               OpName %gl_GlobalInvocationID "gl_GlobalInvocationID"
+               OpName %gl_LocalInvocationIndex "gl_LocalInvocationIndex"
+               OpDecorate %_runtimearr_v4float ArrayStride 16
+               OpMemberDecorate %bName 0 Offset 0
+               OpMemberDecorate %bName 1 Offset 16
+               OpMemberDecorate %bName 2 Offset 32
+               OpDecorate %bName BufferBlock
+               OpDecorate %bInst DescriptorSet 0
+               OpDecorate %bInst Binding 0
+               OpDecorate %39 SpecId 18
+               OpDecorate %41 SpecId 19
+               OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize
+               OpDecorate %gl_NumWorkGroups BuiltIn NumWorkgroups
+               OpDecorate %gl_WorkGroupID BuiltIn WorkgroupId
+               OpDecorate %gl_LocalInvocationID BuiltIn LocalInvocationId
+               OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
+               OpDecorate %gl_LocalInvocationIndex BuiltIn LocalInvocationIndex
        %void = OpTypeVoid
           %3 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %uint_2 = OpConstant %uint 2
+   %uint_264 = OpConstant %uint 264
+        %int = OpTypeInt 32 1
+     %v3uint = OpTypeVector %uint 3
       %float = OpTypeFloat 32
     %v4float = OpTypeVector %float 4
-       %uint = OpTypeInt 32 0
+%_runtimearr_v4float = OpTypeRuntimeArray %v4float
+      %bName = OpTypeStruct %int %v3uint %_runtimearr_v4float
+%_ptr_Uniform_bName = OpTypePointer Uniform %bName
+      %bInst = OpVariable %_ptr_Uniform_bName Uniform
+      %int_2 = OpConstant %int 2
+      %int_0 = OpConstant %int 0
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+    %float_7 = OpConstant %float 7
+         %24 = OpConstantComposite %v4float %float_7 %float_7 %float_7 %float_7
+%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
+     %uint_1 = OpConstant %uint 1
+  %uint_3400 = OpConstant %uint 3400
+    %uint_72 = OpConstant %uint 72
 %uint_197645 = OpConstant %uint 197645
 %_arr_v4float_uint_197645 = OpTypeArray %v4float %uint_197645
-%_ptr_Function__arr_v4float_uint_197645 = OpTypePointer Function %_arr_v4float_uint_197645
-        %int = OpTypeInt 32 1
+%_ptr_Workgroup__arr_v4float_uint_197645 = OpTypePointer Workgroup %_arr_v4float_uint_197645
+          %s = OpVariable %_ptr_Workgroup__arr_v4float_uint_197645 Workgroup
       %int_3 = OpConstant %int 3
-    %float_1 = OpConstant %float 1
-         %16 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %19 = OpSpecConstant %uint 2
+    %float_0 = OpConstant %float 0
+         %39 = OpSpecConstant %uint 2
      %uint_5 = OpConstant %uint 5
-         %21 = OpSpecConstant %uint 7
-     %v3uint = OpTypeVector %uint 3
-         %23 = OpSpecConstantComposite %v3uint %19 %uint_5 %21
+         %41 = OpSpecConstant %uint 7
+%gl_WorkGroupSize = OpSpecConstantComposite %v3uint %39 %uint_5 %41
      %uint_0 = OpConstant %uint 0
-%_arr_int_25 = OpTypeArray %int %25
-%_ptr_Private__arr_int_25 = OpTypePointer Private %_arr_int_25
-       %arrX = OpVariable %_ptr_Private__arr_int_25 Private
-      %int_0 = OpConstant %int 0
+%_arr_int_44 = OpTypeArray %int %44
+%_ptr_Private__arr_int_44 = OpTypePointer Private %_arr_int_44
+       %arrX = OpVariable %_ptr_Private__arr_int_44 Private
 %_ptr_Private_int = OpTypePointer Private %int
-     %uint_1 = OpConstant %uint 1
-%_arr_int_34 = OpTypeArray %int %34
-%_ptr_Private__arr_int_34 = OpTypePointer Private %_arr_int_34
-       %arrY = OpVariable %_ptr_Private__arr_int_34 Private
-     %uint_2 = OpConstant %uint 2
-%_arr_int_42 = OpTypeArray %int %42
-%_ptr_Private__arr_int_42 = OpTypePointer Private %_arr_int_42
-       %arrZ = OpVariable %_ptr_Private__arr_int_42 Private
+%_arr_int_52 = OpTypeArray %int %52
+%_ptr_Private__arr_int_52 = OpTypePointer Private %_arr_int_52
+       %arrY = OpVariable %_ptr_Private__arr_int_52 Private
+%_arr_int_59 = OpTypeArray %int %59
+%_ptr_Private__arr_int_59 = OpTypePointer Private %_arr_int_59
+       %arrZ = OpVariable %_ptr_Private__arr_int_59 Private
+%_ptr_Workgroup_v4float = OpTypePointer Workgroup %v4float
+      %int_1 = OpConstant %int 1
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%gl_NumWorkGroups = OpVariable %_ptr_Input_v3uint Input
+%gl_WorkGroupID = OpVariable %_ptr_Input_v3uint Input
+%gl_LocalInvocationID = OpVariable %_ptr_Input_v3uint Input
+%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
+%_ptr_Input_uint = OpTypePointer Input %uint
+%gl_LocalInvocationIndex = OpVariable %_ptr_Input_uint Input
+%_ptr_Uniform_v3uint = OpTypePointer Uniform %v3uint
  %int_197645 = OpConstant %int 197645
        %main = OpFunction %void None %3
           %5 = OpLabel
-          %s = OpVariable %_ptr_Function__arr_v4float_uint_197645 Function
-         %18 = OpAccessChain %_ptr_Function_v4float %s %int_3
-               OpStore %18 %16
-         %25 = OpCompositeExtract %uint %23 0
-         %31 = OpAccessChain %_ptr_Private_int %arrX %int_0
-         %32 = OpLoad %int %31
-         %34 = OpCompositeExtract %uint %23 1
-         %38 = OpAccessChain %_ptr_Private_int %arrY %int_0
-         %39 = OpLoad %int %38
-         %40 = OpIMul %int %32 %39
-         %42 = OpCompositeExtract %uint %23 2
-         %46 = OpAccessChain %_ptr_Private_int %arrZ %int_0
-         %47 = OpLoad %int %46
-         %48 = OpIMul %int %40 %47
-         %49 = OpConvertSToF %float %48
-         %50 = OpAccessChain %_ptr_Function_v4float %s %int_3
-         %51 = OpLoad %v4float %50
-         %52 = OpVectorTimesScalar %v4float %51 %49
-         %53 = OpAccessChain %_ptr_Function_v4float %s %int_3
-               OpStore %53 %52
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+         %20 = OpAccessChain %_ptr_Uniform_int %bInst %int_0
+         %21 = OpLoad %int %20
+         %22 = OpSDiv %int %21 %int_2
+         %26 = OpAccessChain %_ptr_Uniform_v4float %bInst %int_2 %22
+         %27 = OpLoad %v4float %26
+         %28 = OpFMul %v4float %27 %24
+         %29 = OpAccessChain %_ptr_Uniform_v4float %bInst %int_2 %22
+               OpStore %29 %28
+               OpMemoryBarrier %uint_1 %uint_3400
+               OpMemoryBarrier %uint_2 %uint_3400
+               OpMemoryBarrier %uint_1 %uint_264
+               OpMemoryBarrier %uint_1 %uint_72
+         %44 = OpCompositeExtract %uint %gl_WorkGroupSize 0
+         %49 = OpAccessChain %_ptr_Private_int %arrX %int_0
+         %50 = OpLoad %int %49
+         %51 = OpConvertSToF %float %50
+         %52 = OpCompositeExtract %uint %gl_WorkGroupSize 1
+         %56 = OpAccessChain %_ptr_Private_int %arrY %int_0
+         %57 = OpLoad %int %56
+         %58 = OpConvertSToF %float %57
+         %59 = OpCompositeExtract %uint %gl_WorkGroupSize 2
+         %63 = OpAccessChain %_ptr_Private_int %arrZ %int_0
+         %64 = OpLoad %int %63
+         %65 = OpConvertSToF %float %64
+         %66 = OpCompositeConstruct %v4float %float_0 %51 %58 %65
+         %68 = OpAccessChain %_ptr_Workgroup_v4float %s %int_3
+               OpStore %68 %66
+         %72 = OpLoad %v3uint %gl_NumWorkGroups
+         %73 = OpIAdd %v3uint %72 %gl_WorkGroupSize
+         %75 = OpLoad %v3uint %gl_WorkGroupID
+         %76 = OpIAdd %v3uint %73 %75
+         %78 = OpLoad %v3uint %gl_LocalInvocationID
+         %79 = OpIAdd %v3uint %76 %78
+         %81 = OpLoad %v3uint %gl_GlobalInvocationID
+         %84 = OpLoad %uint %gl_LocalInvocationIndex
+         %85 = OpCompositeConstruct %v3uint %84 %84 %84
+         %86 = OpIMul %v3uint %81 %85
+         %87 = OpIAdd %v3uint %79 %86
+         %89 = OpAccessChain %_ptr_Uniform_v3uint %bInst %int_1
+               OpStore %89 %87
                OpReturn
                OpFunctionEnd
index 9cc23bf..24ef43c 100644 (file)
@@ -5,6 +5,7 @@ layout(local_size_x_id = 18, local_size_z_id = 19) in;
 layout(local_size_x = 2) in;
 layout(local_size_y = 5) in;
 layout(local_size_z = 7) in;
+
 const int total = gl_MaxComputeWorkGroupCount.x
                 + gl_MaxComputeWorkGroupCount.y
                 + gl_MaxComputeWorkGroupCount.z
@@ -17,12 +18,24 @@ int arrX[gl_WorkGroupSize.x];
 int arrY[gl_WorkGroupSize.y];
 int arrZ[gl_WorkGroupSize.z];
 
+layout(binding = 0, set = 0) buffer bName {
+    int size;
+    uvec3 count;
+    vec4 data[];
+} bInst;
+
 void main()
 {
     barrier();
+
+    bInst.data[bInst.size / 2] *= vec4(7.0);
+
     memoryBarrier();
-    memoryBarrierShared();
     groupMemoryBarrier();
-    s[3] = vec4(1.0);
-    s[3] *= arrX[0] * arrY[0] * arrZ[0];
+    memoryBarrierShared();
+    memoryBarrierBuffer();
+
+    s[3] = vec4(0, arrX[0], arrY[0], arrZ[0]);
+    bInst.count = gl_NumWorkGroups + gl_WorkGroupSize + gl_WorkGroupID + gl_LocalInvocationID +
+                  gl_GlobalInvocationID * gl_LocalInvocationIndex;
 }
index cb3baf1..18590af 100644 (file)
@@ -3819,13 +3819,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
         stageBuiltins[EShLangCompute].append(
             "void memoryBarrierShared();"
             "void groupMemoryBarrier();"
+            "void memoryBarrierBuffer();"
             );
     }
 #ifndef GLSLANG_WEB
     if ((profile != EEsProfile && version >= 420) || esBarrier) {
         commonBuiltins.append(
             "void memoryBarrierAtomicCounter();"
-            "void memoryBarrierBuffer();"
             "void memoryBarrierImage();"
             );
     }
@@ -7692,8 +7692,10 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
             symbolTable.setFunctionExtensions("dFdyCoarse",             1, &E_GL_NV_compute_shader_derivatives);
             symbolTable.setFunctionExtensions("fwidthCoarse",           1, &E_GL_NV_compute_shader_derivatives);
         }
-
+#endif
         break;
+
+#ifndef GLSLANG_WEB
     case EShLangRayGenNV:
     case EShLangIntersectNV:
     case EShLangAnyHitNV:
@@ -8108,6 +8110,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
 
     symbolTable.relateToOperator("barrier",                    EOpBarrier);
     symbolTable.relateToOperator("memoryBarrier",              EOpMemoryBarrier);
+    symbolTable.relateToOperator("memoryBarrierBuffer",        EOpMemoryBarrierBuffer);
 
 #ifndef GLSLANG_WEB
     symbolTable.relateToOperator("packInt2x16",     EOpPackInt2x16);
@@ -8132,7 +8135,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
 
     symbolTable.relateToOperator("controlBarrier",             EOpBarrier);
     symbolTable.relateToOperator("memoryBarrierAtomicCounter", EOpMemoryBarrierAtomicCounter);
-    symbolTable.relateToOperator("memoryBarrierBuffer",        EOpMemoryBarrierBuffer);
     symbolTable.relateToOperator("memoryBarrierImage",         EOpMemoryBarrierImage);
 
     symbolTable.relateToOperator("atomicLoad",     EOpAtomicLoad);
index 786da18..f4c8b16 100644 (file)
@@ -3813,10 +3813,6 @@ void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qua
     // for ES, if size isn't coming from an initializer, it has to be explicitly declared now,
     // with very few exceptions
 
-    // last member of ssbo block exception:
-    if (qualifier.storage == EvqBuffer && lastMember)
-        return;
-
     // implicitly-sized io exceptions:
     switch (language) {
     case EShLangGeometry:
@@ -3851,6 +3847,10 @@ void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qua
 
 #endif
 
+    // last member of ssbo block exception:
+    if (qualifier.storage == EvqBuffer && lastMember)
+        return;
+
     arraySizeRequiredCheck(loc, *arraySizes);
 }
 
@@ -5384,6 +5384,7 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
 #endif
     case EShLangCompute:
         if (id.compare(0, 11, "local_size_") == 0) {
+#ifndef GLSLANG_WEB
             if (language == EShLangMeshNV || language == EShLangTaskNV) {
                 requireExtensions(loc, 1, &E_GL_NV_mesh_shader, "gl_WorkGroupSize");
             }
@@ -5392,6 +5393,7 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
                 profileRequires(loc, EEsProfile, 310, 0, "gl_WorkGroupSize");
                 profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_compute_shader, "gl_WorkGroupSize");
             }
+#endif
             if (nonLiteral)
                 error(loc, "needs a literal integer", "local_size", "");
             if (id.size() == 12 && value == 0) {
@@ -8017,7 +8019,9 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con
                         }
                         if (intermediate.getLocalSize(i) > (unsigned int)max)
                             error(loc, "too large; see gl_MaxComputeWorkGroupSize", "local_size", "");
-                    } else if (language == EShLangMeshNV) {
+                    }
+#ifndef GLSLANG_WEB
+                    else if (language == EShLangMeshNV) {
                         switch (i) {
                         case 0: max = resources.maxMeshWorkGroupSizeX_NV; break;
                         case 1: max = resources.maxMeshWorkGroupSizeY_NV; break;
@@ -8035,7 +8039,9 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con
                         }
                         if (intermediate.getLocalSize(i) > (unsigned int)max)
                             error(loc, "too large; see gl_MaxTaskWorkGroupSizeNV", "local_size", "");
-                    } else {
+                    }
+#endif
+                    else {
                         assert(0);
                     }
 
index 459e49a..7b0093d 100644 (file)
@@ -343,6 +343,7 @@ void TScanContext::fillInKeywordMap()
 
     (*KeywordMap)["const"] =                   CONST;
     (*KeywordMap)["uniform"] =                 UNIFORM;
+    (*KeywordMap)["buffer"] =                  BUFFER;
     (*KeywordMap)["in"] =                      IN;
     (*KeywordMap)["out"] =                     OUT;
     (*KeywordMap)["smooth"] =                  SMOOTH;
@@ -410,7 +411,6 @@ void TScanContext::fillInKeywordMap()
     (*KeywordMap)["attribute"] =               ATTRIBUTE;
     (*KeywordMap)["varying"] =                 VARYING;
     (*KeywordMap)["noperspective"] =           NOPERSPECTIVE;
-    (*KeywordMap)["buffer"] =                  BUFFER;
     (*KeywordMap)["coherent"] =                COHERENT;
     (*KeywordMap)["devicecoherent"] =          DEVICECOHERENT;
     (*KeywordMap)["queuefamilycoherent"] =     QUEUEFAMILYCOHERENT;
@@ -905,6 +905,13 @@ int TScanContext::tokenizeIdentifier()
     case CASE:
         return keyword;
 
+    case BUFFER:
+        afterBuffer = true;
+        if ((parseContext.isEsProfile() && parseContext.version < 310) ||
+            (!parseContext.isEsProfile() && parseContext.version < 430))
+            return identifierOrType();
+        return keyword;
+
     case STRUCT:
         afterStruct = true;
         return keyword;
@@ -998,12 +1005,6 @@ int TScanContext::tokenizeIdentifier()
         if (parseContext.isEsProfile() && parseContext.version >= 300)
             reservedWord();
         return keyword;
-    case BUFFER:
-        afterBuffer = true;
-        if ((parseContext.isEsProfile() && parseContext.version < 310) ||
-            (!parseContext.isEsProfile() && parseContext.version < 430))
-            return identifierOrType();
-        return keyword;
     case PAYLOADNV:
     case PAYLOADINNV:
     case HITATTRNV:
index e9780e2..20f2ba4 100644 (file)
@@ -38,7 +38,7 @@
 
 //
 // Do not edit the .y file, only edit the .m4 file.
-// The .y bison file is not a source file, it is a derivitive of the .m4 file.
+// The .y bison file is not a source file, it is a derivative of the .m4 file.
 // The m4 file needs to be processed by m4 to generate the .y bison file.
 //
 // Code sandwiched between a pair:
@@ -49,7 +49,7 @@
 //      ...
 //    GLSLANG_WEB_EXCLUDE_OFF
 //
-// Will be exluded from the grammar when m4 is executed as:
+// Will be excluded from the grammar when m4 is executed as:
 //
 //    m4 -P -DGLSLANG_WEB
 //
@@ -277,7 +277,7 @@ GLSLANG_WEB_EXCLUDE_OFF
 %token <lex> CENTROID IN OUT INOUT
 %token <lex> STRUCT VOID WHILE
 %token <lex> BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT
-%token <lex> UNIFORM SHARED
+%token <lex> UNIFORM SHARED BUFFER
 %token <lex> FLAT SMOOTH LAYOUT
 
 GLSLANG_WEB_EXCLUDE_ON
@@ -285,7 +285,7 @@ GLSLANG_WEB_EXCLUDE_ON
 %token <lex> INT64CONSTANT UINT64CONSTANT
 %token <lex> SUBROUTINE DEMOTE
 %token <lex> PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV
-%token <lex> PATCH SAMPLE BUFFER NONUNIFORM
+%token <lex> PATCH SAMPLE NONUNIFORM
 %token <lex> COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT
 %token <lex> SUBGROUPCOHERENT NONPRIVATE
 %token <lex> NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV
@@ -1368,12 +1368,12 @@ storage_qualifier
         $$.init($1.loc);
         $$.qualifier.storage = EvqShared;
     }
-GLSLANG_WEB_EXCLUDE_ON
     | BUFFER {
         parseContext.globalCheck($1.loc, "buffer");
         $$.init($1.loc);
         $$.qualifier.storage = EvqBuffer;
     }
+GLSLANG_WEB_EXCLUDE_ON
     | ATTRIBUTE {
         parseContext.requireStage($1.loc, EShLangVertex, "attribute");
         parseContext.checkDeprecated($1.loc, ECoreProfile, 130, "attribute");
index 5001f60..1b8e951 100644 (file)
@@ -38,7 +38,7 @@
 
 //
 // Do not edit the .y file, only edit the .m4 file.
-// The .y bison file is not a source file, it is a derivitive of the .m4 file.
+// The .y bison file is not a source file, it is a derivative of the .m4 file.
 // The m4 file needs to be processed by m4 to generate the .y bison file.
 //
 // Code sandwiched between a pair:
@@ -49,7 +49,7 @@
 //      ...
 //    GLSLANG_WEB_EXCLUDE_OFF
 //
-// Will be exluded from the grammar when m4 is executed as:
+// Will be excluded from the grammar when m4 is executed as:
 //
 //    m4 -P -DGLSLANG_WEB
 //
@@ -194,7 +194,7 @@ extern int yylex(YYSTYPE*, TParseContext&);
 %token <lex> CENTROID IN OUT INOUT
 %token <lex> STRUCT VOID WHILE
 %token <lex> BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT
-%token <lex> UNIFORM SHARED
+%token <lex> UNIFORM SHARED BUFFER
 %token <lex> FLAT SMOOTH LAYOUT
 
 
@@ -1164,6 +1164,11 @@ storage_qualifier
         $$.init($1.loc);
         $$.qualifier.storage = EvqShared;
     }
+    | BUFFER {
+        parseContext.globalCheck($1.loc, "buffer");
+        $$.init($1.loc);
+        $$.qualifier.storage = EvqBuffer;
+    }
 
     ;
 
index 4488b69..6292a4c 100644 (file)
@@ -260,9 +260,10 @@ extern int yydebug;
     DEFAULT = 392,
     UNIFORM = 393,
     SHARED = 394,
-    FLAT = 395,
-    SMOOTH = 396,
-    LAYOUT = 397
+    BUFFER = 395,
+    FLAT = 396,
+    SMOOTH = 397,
+    LAYOUT = 398
   };
 #endif
 
@@ -307,7 +308,7 @@ union YYSTYPE
         glslang::TArraySizes* typeParameters;
     } interm;
 
-#line 311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355  */
+#line 312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -338,7 +339,7 @@ int yyparse (glslang::TParseContext* pParseContext);
 extern int yylex(YYSTYPE*, TParseContext&);
 
 
-#line 342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358  */
+#line 343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -578,23 +579,23 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  123
+#define YYFINAL  124
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   3111
+#define YYLAST   3126
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  143
+#define YYNTOKENS  144
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  103
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  294
+#define YYNRULES  295
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  423
+#define YYNSTATES  424
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   397
+#define YYMAXUTOK   398
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -642,7 +643,7 @@ static const yytype_uint8 yytranslate[] =
      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142
+     135,   136,   137,   138,   139,   140,   141,   142,   143
 };
 
 #if YYDEBUG
@@ -663,22 +664,22 @@ static const yytype_uint16 yyrline[] =
      939,   942,   946,   950,   955,   963,   968,   973,   978,   983,
      992,  1002,  1029,  1038,  1045,  1056,  1062,  1065,  1072,  1076,
     1080,  1090,  1093,  1104,  1107,  1110,  1114,  1118,  1126,  1130,
-    1135,  1141,  1147,  1154,  1159,  1173,  1178,  1188,  1193,  1201,
-    1205,  1215,  1218,  1224,  1230,  1237,  1247,  1251,  1255,  1259,
-    1264,  1268,  1273,  1278,  1283,  1288,  1293,  1298,  1303,  1308,
-    1313,  1319,  1325,  1331,  1336,  1341,  1346,  1351,  1356,  1361,
-    1366,  1371,  1376,  1381,  1386,  1392,  1397,  1402,  1407,  1412,
-    1417,  1422,  1428,  1433,  1438,  1443,  1448,  1453,  1458,  1464,
+    1135,  1141,  1147,  1154,  1159,  1167,  1178,  1183,  1193,  1198,
+    1206,  1210,  1220,  1223,  1229,  1235,  1242,  1252,  1256,  1260,
+    1264,  1269,  1273,  1278,  1283,  1288,  1293,  1298,  1303,  1308,
+    1313,  1318,  1324,  1330,  1336,  1341,  1346,  1351,  1356,  1361,
+    1366,  1371,  1376,  1381,  1386,  1391,  1397,  1402,  1407,  1412,
+    1417,  1422,  1427,  1433,  1438,  1443,  1448,  1453,  1458,  1463,
     1469,  1474,  1479,  1484,  1489,  1494,  1499,  1504,  1509,  1514,
-    1519,  1524,  1529,  1534,  1540,  1545,  1561,  1566,  1571,  1579,
-    1579,  1590,  1590,  1600,  1603,  1616,  1638,  1665,  1669,  1675,
-    1680,  1691,  1700,  1704,  1705,  1711,  1712,  1713,  1714,  1715,
-    1716,  1717,  1724,  1725,  1729,  1725,  1741,  1742,  1746,  1746,
-    1753,  1753,  1767,  1770,  1778,  1786,  1797,  1798,  1802,  1808,
-    1815,  1819,  1827,  1831,  1844,  1850,  1850,  1870,  1873,  1879,
-    1891,  1903,  1909,  1909,  1924,  1924,  1940,  1940,  1961,  1964,
-    1970,  1973,  1979,  1983,  1990,  1995,  2000,  2007,  2010,  2019,
-    2023,  2032,  2035,  2042,  2042
+    1519,  1524,  1529,  1534,  1539,  1545,  1550,  1566,  1571,  1576,
+    1584,  1584,  1595,  1595,  1605,  1608,  1621,  1643,  1670,  1674,
+    1680,  1685,  1696,  1705,  1709,  1710,  1716,  1717,  1718,  1719,
+    1720,  1721,  1722,  1729,  1730,  1734,  1730,  1746,  1747,  1751,
+    1751,  1758,  1758,  1772,  1775,  1783,  1791,  1802,  1803,  1807,
+    1813,  1820,  1824,  1832,  1836,  1849,  1855,  1855,  1875,  1878,
+    1884,  1896,  1908,  1914,  1914,  1929,  1929,  1945,  1945,  1966,
+    1969,  1975,  1978,  1984,  1988,  1995,  2000,  2005,  2012,  2015,
+    2024,  2028,  2037,  2040,  2047,  2047
 };
 #endif
 
@@ -711,8 +712,8 @@ static const char *const yytname[] =
   "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT", "IDENTIFIER", "TYPE_NAME",
   "CENTROID", "IN", "OUT", "INOUT", "STRUCT", "VOID", "WHILE", "BREAK",
   "CONTINUE", "DO", "ELSE", "FOR", "IF", "DISCARD", "RETURN", "SWITCH",
-  "CASE", "DEFAULT", "UNIFORM", "SHARED", "FLAT", "SMOOTH", "LAYOUT",
-  "$accept", "variable_identifier", "primary_expression",
+  "CASE", "DEFAULT", "UNIFORM", "SHARED", "BUFFER", "FLAT", "SMOOTH",
+  "LAYOUT", "$accept", "variable_identifier", "primary_expression",
   "postfix_expression", "integer_expression", "function_call",
   "function_call_or_method", "function_call_generic",
   "function_call_header_no_parameters",
@@ -770,7 +771,7 @@ static const yytype_uint16 yytoknum[] =
      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
-     395,   396,   397
+     395,   396,   397,   398
 };
 # endif
 
@@ -779,7 +780,7 @@ static const yytype_uint16 yytoknum[] =
 #define yypact_value_is_default(Yystate) \
   (!!((Yystate) == (-362)))
 
-#define YYTABLE_NINF -249
+#define YYTABLE_NINF -250
 
 #define yytable_value_is_error(Yytable_value) \
   0
@@ -788,49 +789,49 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    1677,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
+    1687,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
     -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
     -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
     -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
     -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
     -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
-    -362,  -362,  -362,    20,  -362,  -362,  -362,  -362,  -362,   -66,
-    -362,  -362,  -362,  -362,  -362,   -43,  -362,   -73,   -33,   -11,
-       3,  2237,   -19,  -362,   -29,  -362,  -362,  -362,  1537,  -362,
-    -362,  -362,     2,  -362,  -362,   417,  -362,  -362,  2986,  -362,
-      11,   -90,  -362,   -28,  -362,    24,  -362,  2237,  -362,  -362,
-    -362,  2237,     5,    18,  -362,   -58,  -362,   -18,  -362,  -362,
-    2742,    55,  -362,  -362,  -362,    61,  2237,  -362,    21,  -362,
-     -54,  -362,  2376,  -362,   -26,   557,  -362,  -362,  -362,  -362,
-      55,   -30,  -362,  2742,   -24,  -362,    43,  -362,    -7,  2742,
-    2742,  2742,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
-    -362,  -362,  -362,   -41,  -362,  -362,  -362,    87,   -49,  2864,
-      73,  -362,  2742,  -362,   -59,    90,  -362,  2237,    57,  1817,
-    -362,  2237,  2742,  -362,   -90,  -362,  -362,    33,   -39,    72,
-     -50,    70,    76,    75,    80,   107,   114,   -52,   105,  2498,
-    -362,   104,  -362,  -362,   110,   101,   102,  -362,   113,   116,
-     108,  2620,   117,  2742,   106,    69,  -362,  -362,    17,  -362,
-     -33,   119,  -362,  -362,  -362,  -362,   697,  -362,  -362,  -362,
-    -362,  -362,  -362,  -362,  -362,  -362,    90,  2742,   -15,  -362,
-    -362,  2742,  2237,  -362,    84,  -362,  -362,  -362,    -6,  -362,
-    -362,  2742,    85,  -362,  -362,  2742,   121,  -362,  -362,  -362,
-    2742,  -362,    57,    55,    28,  -362,  -362,  -362,  1957,  -362,
-    -362,  -362,  2742,  2742,  2742,  2742,  2742,  2742,  2742,  2742,
-    2742,  2742,  2742,  2742,  2742,  2742,  2742,  2742,  2742,  2742,
-    2742,  -362,  -362,  -362,   120,  -362,   837,  -362,  -362,  -362,
-     837,  -362,  2742,  -362,  -362,    30,  2742,    62,  -362,  -362,
+    -362,  -362,  -362,    22,  -362,  -362,  -362,  -362,  -362,   -66,
+    -362,  -362,  -362,  -362,  -362,  -362,   -10,  -362,   -73,    -8,
+       5,     4,  2251,   -58,  -362,   -21,  -362,  -362,  -362,  1546,
+    -362,  -362,  -362,     7,  -362,  -362,   418,  -362,  -362,  3001,
+    -362,    25,   -95,  -362,   -57,  -362,    36,  -362,  2251,  -362,
+    -362,  -362,  2251,     6,    17,  -362,   -27,  -362,   -18,  -362,
+    -362,  2757,    44,  -362,  -362,  -362,    47,  2251,  -362,    77,
+    -362,    -6,  -362,  2391,  -362,   -26,   559,  -362,  -362,  -362,
+    -362,    44,   -30,  -362,  2757,   -24,  -362,    51,  -362,   -33,
+    2757,  2757,  2757,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
+    -362,  -362,  -362,  -362,   -42,  -362,  -362,  -362,    87,    -3,
+    2879,    71,  -362,  2757,  -362,   -63,    88,  -362,  2251,    55,
+    1828,  -362,  2251,  2757,  -362,   -95,  -362,  -362,    35,   -53,
+     -32,   -50,    70,    72,    74,    73,   105,   110,   -52,    98,
+    2513,  -362,    99,  -362,  -362,   106,    95,   100,  -362,   111,
+     112,   103,  2635,   114,  2757,   108,    69,  -362,  -362,   -19,
+    -362,    -8,   117,  -362,  -362,  -362,  -362,   700,  -362,  -362,
+    -362,  -362,  -362,  -362,  -362,  -362,  -362,    88,  2757,   -15,
+    -362,  -362,  2757,  2251,  -362,    82,  -362,  -362,  -362,    -2,
+    -362,  -362,  2757,    83,  -362,  -362,  2757,   119,  -362,  -362,
+    -362,  2757,  -362,    55,    44,    28,  -362,  -362,  -362,  1969,
+    -362,  -362,  -362,  2757,  2757,  2757,  2757,  2757,  2757,  2757,
+    2757,  2757,  2757,  2757,  2757,  2757,  2757,  2757,  2757,  2757,
+    2757,  2757,  -362,  -362,  -362,   118,  -362,   841,  -362,  -362,
+    -362,   841,  -362,  2757,  -362,  -362,    29,  2757,    62,  -362,
     -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
-    2742,  2742,  -362,  -362,  -362,  -362,  2742,  -362,  2097,  -362,
-    -362,   122,   124,  -362,  -362,  -362,    32,    90,    57,  -362,
-    -362,  -362,  -362,  -362,    33,    33,   -39,   -39,    72,    72,
-      72,    72,   -50,   -50,    70,    76,    75,    80,   107,   114,
-    2742,  -362,   837,  1397,    82,  1257,    -3,  -362,     1,  -362,
-    -362,  -362,  -362,  -362,  -362,  -362,  -362,    74,   123,   124,
-      88,  2237,   128,   132,  -362,  -362,  1397,   130,  -362,  2742,
-    -362,   126,   977,  2742,  -362,   129,   135,    92,   134,  1117,
-    -362,   137,  -362,  2742,  -362,  -362,  -362,     4,  2742,   977,
-     130,  -362,  -362,   837,  -362,   133,   124,  -362,  -362,   837,
-     140,  -362,  -362
+    -362,  2757,  2757,  -362,  -362,  -362,  -362,  2757,  -362,  2110,
+    -362,  -362,   120,   115,  -362,  -362,  -362,    34,    88,    55,
+    -362,  -362,  -362,  -362,  -362,    35,    35,   -53,   -53,   -32,
+     -32,   -32,   -32,   -50,   -50,    70,    72,    74,    73,   105,
+     110,  2757,  -362,   841,  1405,    80,  1264,     2,  -362,     9,
+    -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,    67,   123,
+     115,    89,  2251,   128,   131,  -362,  -362,  1405,   130,  -362,
+    2757,  -362,   126,   982,  2757,  -362,   122,   135,    90,   133,
+    1123,  -362,   136,  -362,  2757,  -362,  -362,  -362,    21,  2757,
+     982,   130,  -362,  -362,   841,  -362,   129,   115,  -362,  -362,
+     841,   137,  -362,  -362
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -838,81 +839,81 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,   138,   160,   158,   159,   157,   164,   165,   166,   167,
-     168,   169,   170,   171,   172,   161,   162,   163,   173,   174,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,   198,   199,   212,   213,   200,   201,   203,
-     202,   204,   205,   206,   207,   208,   209,   210,   211,   122,
-     216,   217,   218,     0,   215,   142,   140,   141,   139,     0,
-     156,   143,   144,   124,   123,     0,   292,     0,   293,     0,
-      99,    98,     0,   110,   115,   137,   136,   134,     0,   131,
-     133,   120,   152,   135,   214,     0,   289,   291,     0,   221,
-       0,     0,    87,     0,    84,     0,    97,     0,   106,   100,
-     108,     0,   109,     0,    85,   116,    90,     0,   132,   121,
-       0,   145,   151,     1,   290,     0,     0,   219,   128,   130,
-       0,   126,     0,    88,     0,     0,   294,   101,   105,   107,
-     103,   111,   102,     0,   117,    93,     0,    91,     0,     0,
-       0,     0,    33,    32,    34,    31,     5,     6,     7,     8,
-       2,     3,     9,    27,    11,    16,    17,     0,     0,    21,
-       0,   154,     0,    25,     0,   146,    86,     0,     0,     0,
-     223,     0,     0,   125,     0,   147,    35,    39,    42,    45,
-      50,    53,    55,    57,    59,    61,    63,    65,     0,     0,
-      89,   243,   252,   256,     0,     0,     0,   274,     0,     0,
-       0,     0,     0,     0,     0,    35,    68,    81,     0,   232,
-       0,   120,   235,   254,   234,   233,     0,   236,   237,   258,
-     238,   264,   239,   240,   271,   241,   104,     0,   112,   231,
-     119,     0,     0,    95,     0,    92,    28,    29,     0,    13,
-      14,     0,     0,    19,    18,     0,   156,    22,    24,    30,
-       0,   153,     0,   229,     0,   227,   222,   224,     0,    83,
-     129,   127,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   138,   161,   159,   160,   158,   165,   166,   167,   168,
+     169,   170,   171,   172,   173,   162,   163,   164,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   213,   214,   201,   202,   204,
+     203,   205,   206,   207,   208,   209,   210,   211,   212,   122,
+     217,   218,   219,     0,   216,   142,   140,   141,   139,     0,
+     157,   143,   144,   145,   124,   123,     0,   293,     0,   294,
+       0,    99,    98,     0,   110,   115,   137,   136,   134,     0,
+     131,   133,   120,   153,   135,   215,     0,   290,   292,     0,
+     222,     0,     0,    87,     0,    84,     0,    97,     0,   106,
+     100,   108,     0,   109,     0,    85,   116,    90,     0,   132,
+     121,     0,   146,   152,     1,   291,     0,     0,   220,   128,
+     130,     0,   126,     0,    88,     0,     0,   295,   101,   105,
+     107,   103,   111,   102,     0,   117,    93,     0,    91,     0,
+       0,     0,     0,    33,    32,    34,    31,     5,     6,     7,
+       8,     2,     3,     9,    27,    11,    16,    17,     0,     0,
+      21,     0,   155,     0,    25,     0,   147,    86,     0,     0,
+       0,   224,     0,     0,   125,     0,   148,    35,    39,    42,
+      45,    50,    53,    55,    57,    59,    61,    63,    65,     0,
+       0,    89,   244,   253,   257,     0,     0,     0,   275,     0,
+       0,     0,     0,     0,     0,     0,    35,    68,    81,     0,
+     233,     0,   120,   236,   255,   235,   234,     0,   237,   238,
+     259,   239,   265,   240,   241,   272,   242,   104,     0,   112,
+     232,   119,     0,     0,    95,     0,    92,    28,    29,     0,
+      13,    14,     0,     0,    19,    18,     0,   157,    22,    24,
+      30,     0,   154,     0,   230,     0,   228,   223,   225,     0,
+      83,   129,   127,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    66,   148,   149,     0,   242,     0,   272,   285,   284,
-       0,   276,     0,   288,   286,     0,     0,     0,   270,    71,
-      72,    74,    73,    76,    77,    78,    79,    80,    75,    70,
-       0,     0,   257,   253,   255,   114,     0,   118,     0,    96,
-       4,     0,    15,    12,    23,   155,     0,   230,     0,   225,
-     220,    36,    37,    38,    41,    40,    43,    44,    48,    49,
-      46,    47,    51,    52,    54,    56,    58,    60,    62,    64,
-       0,   150,   244,     0,     0,     0,     0,   287,     0,   269,
-      69,    82,   113,    94,    10,   226,   228,     0,     0,   262,
-       0,     0,     0,     0,   279,   278,   281,   250,   265,     0,
-     245,     0,     0,     0,   280,     0,     0,   261,     0,     0,
-     259,     0,    67,     0,   247,   273,   246,     0,   282,     0,
-     250,   249,   251,   267,   263,     0,   283,   277,   260,   268,
-       0,   275,   266
+       0,     0,    66,   149,   150,     0,   243,     0,   273,   286,
+     285,     0,   277,     0,   289,   287,     0,     0,     0,   271,
+      71,    72,    74,    73,    76,    77,    78,    79,    80,    75,
+      70,     0,     0,   258,   254,   256,   114,     0,   118,     0,
+      96,     4,     0,    15,    12,    23,   156,     0,   231,     0,
+     226,   221,    36,    37,    38,    41,    40,    43,    44,    48,
+      49,    46,    47,    51,    52,    54,    56,    58,    60,    62,
+      64,     0,   151,   245,     0,     0,     0,     0,   288,     0,
+     270,    69,    82,   113,    94,    10,   227,   229,     0,     0,
+     263,     0,     0,     0,     0,   280,   279,   282,   251,   266,
+       0,   246,     0,     0,     0,   281,     0,     0,   262,     0,
+       0,   260,     0,    67,     0,   248,   274,   247,     0,   283,
+       0,   251,   250,   252,   268,   264,     0,   284,   278,   261,
+     269,     0,   276,   267
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
     -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
-    -362,  -362,    37,  -362,  -110,  -105,  -166,  -116,   -61,   -57,
-     -56,   -60,   -55,   -53,  -362,  -120,  -362,  -137,  -362,  -148,
-    -362,    10,  -362,  -362,  -362,    13,  -362,  -362,  -362,   136,
-     125,   138,  -362,  -362,  -342,  -362,  -362,  -362,  -362,    46,
-     -80,   -86,  -362,     0,  -104,  -362,  -362,  -362,  -362,   170,
-    -362,  -362,  -362,  -167,  -172,   -27,   -99,  -232,  -125,  -222,
-    -361,  -157,  -362,  -362,  -165,  -164,  -362,  -362,   145,  -288,
-    -122,  -362,  -362,  -362,  -135,  -362,  -362,  -362,  -362,  -362,
+    -362,  -362,    58,  -362,  -115,  -114,  -167,  -118,   -61,   -64,
+     -62,   -60,   -56,   -59,  -362,  -121,  -362,  -137,  -362,  -149,
+    -362,    10,  -362,  -362,  -362,    13,  -362,  -362,  -362,   116,
+     125,   124,  -362,  -362,  -339,  -362,  -362,  -362,  -362,    45,
+     -80,   -88,  -362,     0,  -105,  -362,  -362,  -362,  -362,   172,
+    -362,  -362,  -362,  -168,  -174,   -23,  -102,  -233,  -127,  -223,
+    -361,  -157,  -362,  -362,  -166,  -165,  -362,  -362,   141,  -289,
+    -116,  -362,  -362,  -362,  -139,  -362,  -362,  -362,  -362,  -362,
     -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
-     158,  -362,  -362
+     155,  -362,  -362
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,   161,   162,   163,   331,   164,   165,   166,   167,   168,
-     169,   170,   215,   172,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   216,   360,   217,   320,   218,
-     270,   219,    77,   242,   148,   220,    79,    80,    81,   108,
-     109,   110,    82,    83,    84,    85,    86,    87,   130,   131,
-      88,    89,    90,   173,   134,   121,   122,   174,    92,    93,
-      94,   181,   126,   179,   180,   264,   265,   240,   222,   223,
-     224,   225,   296,   378,   405,   397,   398,   399,   406,   226,
-     227,   228,   229,   400,   382,   230,   231,   401,   420,   232,
-     233,   234,   363,   300,   365,   386,   395,   396,   235,    95,
-      96,    97,   105
+      -1,   162,   163,   164,   332,   165,   166,   167,   168,   169,
+     170,   171,   216,   173,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   217,   361,   218,   321,   219,
+     271,   220,    78,   243,   149,   221,    80,    81,    82,   109,
+     110,   111,    83,    84,    85,    86,    87,    88,   131,   132,
+      89,    90,    91,   174,   135,   122,   123,   175,    93,    94,
+      95,   182,   127,   180,   181,   265,   266,   241,   223,   224,
+     225,   226,   297,   379,   406,   398,   399,   400,   407,   227,
+     228,   229,   230,   401,   383,   231,   232,   402,   421,   233,
+     234,   235,   364,   301,   366,   387,   396,   397,   236,    96,
+      97,    98,   106
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -920,305 +921,161 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      91,   111,   118,   248,   324,   325,   239,   267,   362,   327,
-      76,   144,   198,    78,   268,   279,   280,   175,   290,   102,
-      99,   380,   249,   250,   142,   118,   132,   111,   128,   183,
-     260,   404,   257,   143,   254,   184,   236,   238,   412,   101,
-     255,   -26,   261,   251,   380,   103,   177,   252,   404,   129,
-     281,   282,   100,   291,   132,   275,   132,   276,   199,   104,
-     199,   237,   269,   305,   133,   307,   200,   241,   145,   199,
-     113,   146,   106,   114,   147,   328,   326,   330,   364,   294,
-     387,   112,   244,   321,   388,   245,   321,   415,   119,   115,
-     321,   118,   107,   321,   372,    91,   267,   127,   125,   177,
-     239,   177,   120,   332,   239,    76,   321,   112,    78,   322,
-     135,   112,   182,   348,   349,   350,   351,   338,   334,   321,
-     339,   338,   367,   140,   375,   419,   178,    60,    61,    62,
-     272,   273,   274,   277,   278,   221,   141,   283,   284,   132,
-     324,   309,   310,   311,   312,   313,   314,   315,   316,   317,
-     318,   321,   369,   176,   366,   258,   267,   171,   368,   337,
-     319,   243,   177,   321,   389,   344,   345,   352,   353,   186,
-     253,   414,   346,   347,   199,   263,   288,   262,   286,   178,
-     285,   178,   287,   370,   371,   289,   246,   247,   177,   239,
-     292,   295,   297,   298,   299,   301,   308,   324,   302,   306,
-     303,   -25,   329,   333,   -20,   361,   391,   374,   383,   259,
-     390,   392,   377,   321,   393,   379,  -248,   403,   409,   186,
-     201,   408,   410,   413,   354,   421,   221,   422,   357,   355,
-     271,   356,   137,    98,   358,   336,   186,   359,   379,   376,
-     384,   411,   178,   385,   417,   407,   418,   138,   177,   139,
-     136,   394,   402,   124,     0,     0,     0,     0,     0,     0,
-     416,     0,     0,     0,     0,     0,   239,     0,   178,     0,
+      92,   119,   112,   249,   325,   326,   268,   240,   363,   328,
+      77,   145,   199,    79,   269,   280,   281,   176,   291,   103,
+     100,   250,   251,   129,   119,   381,   261,   133,   112,   278,
+     279,   114,   405,   258,   115,   134,   237,   239,   262,   413,
+     -26,   276,   252,   277,   130,   104,   253,   178,   381,   405,
+     282,   283,   101,   292,   133,   143,   245,   133,   200,   246,
+     200,   238,   270,   306,   144,   308,   201,   242,   146,   200,
+     322,   147,   102,   323,   148,   329,   327,   184,   365,   295,
+     255,   331,   113,   185,   105,   388,   256,   322,   107,   120,
+     119,   322,   389,   108,   373,   268,    92,   116,   322,   126,
+     178,   240,   178,   333,   416,   240,    77,   121,   113,    79,
+     322,   128,   113,   349,   350,   351,   352,   339,   322,   335,
+     340,   368,   136,   339,   141,   420,   376,   179,   133,    60,
+      61,    62,   273,   274,   275,   142,   222,   284,   285,   177,
+     325,   310,   311,   312,   313,   314,   315,   316,   317,   318,
+     319,   322,   370,   259,   367,   268,   322,   390,   369,   338,
+     320,   345,   346,   178,   347,   348,   353,   354,   183,   244,
+     254,   415,   200,   264,   289,   288,   286,   287,   263,   172,
+     179,   290,   179,   293,   371,   372,   296,   299,   298,   178,
+     240,   187,   300,   302,   303,   304,   307,   325,   309,   -25,
+     330,   334,   -20,   362,   322,   375,   384,   392,   247,   248,
+     391,   393,   378,   394,   409,   380,  -249,   404,   410,   202,
+     411,   422,   414,   356,   423,   355,   357,   222,   139,   358,
+     272,   260,   360,   138,   359,    99,   140,   377,   380,   385,
+     337,   187,   412,   179,   418,   408,   419,   137,   395,   178,
+     386,   125,     0,   403,     0,     0,     0,     0,   187,     0,
+     417,     0,     0,     0,     0,     0,     0,   240,     0,   179,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   381,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   118,   221,   335,     0,     0,
-     221,     0,     0,     0,     0,     0,   381,     0,     0,   341,
-     342,   343,   186,   186,   186,   186,   186,   186,   186,   186,
-     186,   186,   186,   186,   186,   186,   186,   186,   178,     0,
+       0,     0,     0,     0,   382,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   119,     0,     0,   222,     0,     0,
+       0,   222,     0,     0,     0,     0,     0,   382,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   336,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   179,
+       0,   342,   343,   344,   187,   187,   187,   187,   187,   187,
+     187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   222,   222,     0,   222,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   221,   221,     0,   221,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   119,     0,     0,     0,     0,   221,     0,     0,     0,
-       0,     0,   221,     0,     0,     0,     0,     0,     0,   221,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   221,
-       0,     0,     0,   221,     0,     0,     0,   123,     0,   221,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    59,    60,    61,    62,    63,     0,     0,
-       0,     0,     0,     0,     0,     0,    64,    65,    66,    67,
-      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
-     149,   150,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   151,
-       0,     0,     0,   201,   202,     0,     0,     0,     0,   203,
-     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    59,    60,    61,    62,    63,     0,     0,
-       0,   156,   157,   158,   159,   160,    64,    65,    66,    67,
-      68,    69,    70,   204,   205,   206,   207,     0,   208,   209,
-     210,   211,   212,   213,   214,    71,    72,    73,    74,    75,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
-     149,   150,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   151,
-       0,     0,     0,   201,   323,     0,     0,     0,     0,   203,
-     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    59,    60,    61,    62,    63,     0,     0,
-       0,   156,   157,   158,   159,   160,    64,    65,    66,    67,
-      68,    69,    70,   204,   205,   206,   207,     0,   208,   209,
-     210,   211,   212,   213,   214,    71,    72,    73,    74,    75,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
-     149,   150,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   151,
-       0,     0,     0,   201,     0,     0,     0,     0,     0,   203,
-     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    59,    60,    61,    62,    63,     0,     0,
-       0,   156,   157,   158,   159,   160,    64,    65,    66,    67,
-      68,    69,    70,   204,   205,   206,   207,     0,   208,   209,
-     210,   211,   212,   213,   214,    71,    72,    73,    74,    75,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
-     149,   150,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   151,
-       0,     0,     0,   135,     0,     0,     0,     0,     0,   203,
-     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    59,    60,    61,    62,    63,     0,     0,
-       0,   156,   157,   158,   159,   160,    64,    65,    66,    67,
-      68,    69,    70,   204,   205,   206,   207,     0,   208,   209,
-     210,   211,   212,   213,   214,    71,    72,    73,    74,    75,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
-     149,   150,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   151,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   203,
-     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    59,    60,    61,    62,    63,     0,     0,
-       0,   156,   157,   158,   159,   160,    64,    65,    66,    67,
-      68,    69,    70,   204,   205,   206,   207,     0,   208,   209,
-     210,   211,   212,   213,   214,    71,    72,    73,    74,    75,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
-     149,   150,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   151,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   203,
-     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    59,    60,    61,    62,    63,     0,     0,
-       0,   156,   157,   158,   159,   160,    64,    65,    66,    67,
-      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
-     149,   150,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   151,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    59,    60,    61,    62,     0,     0,     0,
-       0,   156,   157,   158,   159,   160,    64,    65,    66,    67,
-      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   116,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    59,    60,    61,    62,     0,     0,     0,
-       0,     0,     0,     0,     0,   117,    64,    65,    66,    67,
-      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    59,    60,    61,    62,    63,     0,     0,
-       0,     0,     0,     0,     0,     0,    64,    65,    66,    67,
-      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   266,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    59,    60,    61,    62,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    64,    65,    66,    67,
-      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   340,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    59,    60,    61,    62,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    64,    65,    66,    67,
-      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   373,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    59,    60,    61,    62,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    64,    65,    66,    67,
-      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    59,    60,    61,    62,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    64,    65,    66,    67,
-      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,     0,     0,   149,
-     150,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   151,     0,
-       0,   185,     0,     0,     0,     0,     0,     0,     0,   152,
-     153,   154,   155,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     156,   157,   158,   159,   160,    64,     0,     0,     0,     0,
-      69,    70,     2,     3,     4,     5,     6,     7,     8,     9,
+       0,     0,   120,     0,     0,     0,     0,   222,     0,     0,
+       0,     0,     0,   222,     0,     0,     0,     0,     0,     0,
+     222,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     222,     0,     0,     0,   222,     0,     0,     0,   124,     0,
+     222,     1,     2,     3,     4,     5,     6,     7,     8,     9,
       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
       40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
       50,    51,    52,    53,    54,    55,    56,    57,    58,     0,
-       0,   149,   150,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     151,     0,     0,   293,     0,     0,     0,     0,     0,     0,
-       0,   152,   153,   154,   155,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   156,   157,   158,   159,   160,    64,     0,     0,
-       0,     0,    69,    70,     2,     3,     4,     5,     6,     7,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    59,    60,    61,    62,    63,     0,
+       0,     0,     0,     0,     0,     0,     0,    64,    65,    66,
+      67,    68,    69,    70,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    71,    72,    73,    74,
+      75,    76,     1,     2,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+       0,     0,   150,   151,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   152,     0,     0,     0,   202,   203,     0,     0,     0,
+       0,   204,   153,   154,   155,   156,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    59,    60,    61,    62,    63,
+       0,     0,     0,   157,   158,   159,   160,   161,    64,    65,
+      66,    67,    68,    69,    70,   205,   206,   207,   208,     0,
+     209,   210,   211,   212,   213,   214,   215,    71,    72,    73,
+      74,    75,    76,     1,     2,     3,     4,     5,     6,     7,
        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
       38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,     0,     0,   149,   150,     0,     0,     0,     0,     0,
+      58,     0,     0,   150,   151,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   151,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   304,   152,   153,   154,   155,     0,     0,     0,
+       0,     0,   152,     0,     0,     0,   202,   324,     0,     0,
+       0,     0,   204,   153,   154,   155,   156,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    59,    60,    61,    62,
+      63,     0,     0,     0,   157,   158,   159,   160,   161,    64,
+      65,    66,    67,    68,    69,    70,   205,   206,   207,   208,
+       0,   209,   210,   211,   212,   213,   214,   215,    71,    72,
+      73,    74,    75,    76,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,     0,     0,   150,   151,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   156,   157,   158,   159,   160,    64,
-       0,     0,     0,     0,    69,    70,     2,     3,     4,     5,
+       0,     0,     0,   152,     0,     0,     0,   202,     0,     0,
+       0,     0,     0,   204,   153,   154,   155,   156,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    59,    60,    61,
+      62,    63,     0,     0,     0,   157,   158,   159,   160,   161,
+      64,    65,    66,    67,    68,    69,    70,   205,   206,   207,
+     208,     0,   209,   210,   211,   212,   213,   214,   215,    71,
+      72,    73,    74,    75,    76,     1,     2,     3,     4,     5,
        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
       36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,     0,     0,   149,   150,     0,     0,     0,
+      56,    57,    58,     0,     0,   150,   151,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   151,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   152,   153,   154,   155,     0,
+       0,     0,     0,     0,   152,     0,     0,     0,   136,     0,
+       0,     0,     0,     0,   204,   153,   154,   155,   156,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    59,    60,
+      61,    62,    63,     0,     0,     0,   157,   158,   159,   160,
+     161,    64,    65,    66,    67,    68,    69,    70,   205,   206,
+     207,   208,     0,   209,   210,   211,   212,   213,   214,   215,
+      71,    72,    73,    74,    75,    76,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,     0,     0,   150,   151,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   156,   157,   158,   159,
-     160,    64,     0,     0,     0,     0,    69,    70,     2,     3,
+       0,     0,     0,     0,     0,   152,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   204,   153,   154,   155,   156,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    59,
+      60,    61,    62,    63,     0,     0,     0,   157,   158,   159,
+     160,   161,    64,    65,    66,    67,    68,    69,    70,   205,
+     206,   207,   208,     0,   209,   210,   211,   212,   213,   214,
+     215,    71,    72,    73,    74,    75,    76,     1,     2,     3,
        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
       34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,     0,     0,   149,   150,     0,
+      54,    55,    56,    57,    58,     0,     0,   150,   151,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   152,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   204,   153,   154,   155,
+     156,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      59,    60,    61,    62,    63,     0,     0,     0,   157,   158,
+     159,   160,   161,    64,    65,    66,    67,    68,    69,    70,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    71,    72,    73,    74,    75,    76,     1,     2,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,     0,     0,   150,   151,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   151,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   152,   153,   154,
-     155,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   156,   157,
-     158,   159,   160,    64,     0,     0,     0,     0,    69,   256,
+       0,     0,     0,     0,     0,     0,     0,   152,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   153,   154,
+     155,   156,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    59,    60,    61,    62,     0,     0,     0,     0,   157,
+     158,   159,   160,   161,    64,    65,    66,    67,    68,    69,
+      70,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    71,    72,    73,    74,    75,    76,     1,
        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
@@ -1227,278 +1084,231 @@ static const yytype_int16 yytable[] =
       52,    53,    54,    55,    56,    57,    58,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   117,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    64,     0,     0,     0,     0,
-      69,    70
-};
-
-static const yytype_int16 yycheck[] =
-{
-       0,    81,    88,   151,   226,   237,   143,   179,   296,   241,
-       0,   115,   132,     0,   181,    65,    66,   121,    70,    92,
-      86,   363,    63,    64,    82,   111,    84,   107,   118,    83,
-      89,   392,   169,    91,    83,    89,   140,   141,   399,    82,
-      89,    82,   101,    84,   386,   118,   126,    88,   409,   139,
-     100,   101,   118,   105,    84,    94,    84,    96,    84,    92,
-      84,    91,   182,   211,    92,   213,    92,    91,    86,    84,
-      89,    89,    83,    92,    92,   242,    91,    83,   300,   199,
-      83,    81,    89,    89,    83,    92,    89,    83,    88,   118,
-      89,   177,    89,    89,   326,    95,   268,    86,    98,   179,
-     237,   181,   100,   251,   241,    95,    89,   107,    95,    92,
-      86,   111,    91,   279,   280,   281,   282,    89,   255,    89,
-      92,    89,    92,   118,    92,   413,   126,   107,   108,   109,
-      97,    98,    99,    61,    62,   135,   118,    67,    68,    84,
-     362,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-      81,    89,    90,    92,   302,    82,   328,   120,   306,   263,
-      91,   118,   242,    89,    90,   275,   276,   283,   284,   132,
-      83,   403,   277,   278,    84,   118,    69,   177,   103,   179,
-     104,   181,   102,   320,   321,    71,   149,   150,   268,   326,
-      85,    87,    82,    92,    92,    82,    90,   419,    82,    82,
-      92,    82,   118,   118,    83,    85,   118,    85,   126,   172,
-      87,    83,   360,    89,    82,   363,    86,    91,    83,   182,
-      86,    92,   130,    86,   285,    92,   226,    87,   288,   286,
-     184,   287,   107,    63,   289,   262,   199,   290,   386,   338,
-     365,   398,   242,   365,   409,   393,   410,   111,   328,   111,
-     105,   386,   389,    95,    -1,    -1,    -1,    -1,    -1,    -1,
-     408,    -1,    -1,    -1,    -1,    -1,   403,    -1,   268,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   363,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   381,   296,   260,    -1,    -1,
-     300,    -1,    -1,    -1,    -1,    -1,   386,    -1,    -1,   272,
-     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
-     283,   284,   285,   286,   287,   288,   289,   290,   328,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   362,   363,    -1,   365,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   381,    -1,    -1,    -1,    -1,   386,    -1,    -1,    -1,
-      -1,    -1,   392,    -1,    -1,    -1,    -1,    -1,    -1,   399,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   409,
-      -1,    -1,    -1,   413,    -1,    -1,    -1,     0,    -1,   419,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
-     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
-      63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
-      -1,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    92,
-      93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
-      -1,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,    -1,   131,   132,
-     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
-      63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
-      -1,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    92,
-      93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
-      -1,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,    -1,   131,   132,
-     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
-      63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
-      -1,    -1,    -1,    86,    -1,    -1,    -1,    -1,    -1,    92,
-      93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
-      -1,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,    -1,   131,   132,
-     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
-      63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
-      -1,    -1,    -1,    86,    -1,    -1,    -1,    -1,    -1,    92,
-      93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
-      -1,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,    -1,   131,   132,
-     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
-      63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
-      93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
-      -1,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,    -1,   131,   132,
-     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
-      63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
-      93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
-      -1,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
-      63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,
-      -1,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
-     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
-     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
-     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
-     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
-     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
+       0,     0,    59,    60,    61,    62,     0,     0,     0,     0,
+       0,     0,     0,     0,   118,    64,    65,    66,    67,    68,
+      69,    70,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    71,    72,    73,    74,    75,    76,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    59,    60,    61,    62,    63,     0,     0,
+       0,     0,     0,     0,     0,     0,    64,    65,    66,    67,
+      68,    69,    70,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    71,    72,    73,    74,    75,
+      76,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    58,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   267,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    59,    60,    61,    62,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    64,    65,    66,
+      67,    68,    69,    70,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    71,    72,    73,    74,
+      75,    76,     1,     2,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   341,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    59,    60,    61,    62,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    64,    65,
+      66,    67,    68,    69,    70,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    71,    72,    73,
+      74,    75,    76,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   374,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    59,    60,    61,    62,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    64,
+      65,    66,    67,    68,    69,    70,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    71,    72,
+      73,    74,    75,    76,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    59,    60,    61,
+      62,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      64,    65,    66,    67,    68,    69,    70,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    71,
+      72,    73,    74,    75,    76,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,     0,     0,   150,   151,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   152,     0,     0,   186,     0,     0,     0,
+       0,     0,     0,     0,   153,   154,   155,   156,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   157,   158,   159,   160,   161,
+      64,     0,     0,     0,     0,    69,    70,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,     0,     0,   150,   151,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   152,     0,     0,   294,     0,
+       0,     0,     0,     0,     0,     0,   153,   154,   155,   156,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   157,   158,   159,
+     160,   161,    64,     0,     0,     0,     0,    69,    70,     2,
        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
       33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      53,    54,    55,    56,    57,    58,     0,     0,   150,   151,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   152,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   305,   153,   154,
+     155,   156,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   157,
+     158,   159,   160,   161,    64,     0,     0,     0,     0,    69,
+      70,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
+     150,   151,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   152,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     153,   154,   155,   156,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   157,   158,   159,   160,   161,    64,     0,     0,     0,
+       0,    69,    70,     2,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+       0,     0,   150,   151,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   152,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   153,   154,   155,   156,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   157,   158,   159,   160,   161,    64,     0,
+       0,     0,     0,    69,   257,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      64,     0,     0,     0,     0,    69,    70
+};
+
+static const yytype_int16 yycheck[] =
+{
+       0,    89,    82,   152,   227,   238,   180,   144,   297,   242,
+       0,   116,   133,     0,   182,    65,    66,   122,    70,    92,
+      86,    63,    64,   118,   112,   364,    89,    84,   108,    61,
+      62,    89,   393,   170,    92,    92,   141,   142,   101,   400,
+      82,    94,    84,    96,   139,   118,    88,   127,   387,   410,
+     100,   101,   118,   105,    84,    82,    89,    84,    84,    92,
+      84,    91,   183,   212,    91,   214,    92,    91,    86,    84,
+      89,    89,    82,    92,    92,   243,    91,    83,   301,   200,
+      83,    83,    82,    89,    92,    83,    89,    89,    83,    89,
+     178,    89,    83,    89,   327,   269,    96,   118,    89,    99,
+     180,   238,   182,   252,    83,   242,    96,   100,   108,    96,
+      89,    86,   112,   280,   281,   282,   283,    89,    89,   256,
+      92,    92,    86,    89,   118,   414,    92,   127,    84,   107,
+     108,   109,    97,    98,    99,   118,   136,    67,    68,    92,
+     363,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    89,    90,    82,   303,   329,    89,    90,   307,   264,
+      91,   276,   277,   243,   278,   279,   284,   285,    91,   118,
+      83,   404,    84,   118,    69,   102,   104,   103,   178,   121,
+     180,    71,   182,    85,   321,   322,    87,    92,    82,   269,
+     327,   133,    92,    82,    82,    92,    82,   420,    90,    82,
+     118,   118,    83,    85,    89,    85,   126,   118,   150,   151,
+      87,    83,   361,    82,    92,   364,    86,    91,    83,    86,
+     130,    92,    86,   287,    87,   286,   288,   227,   112,   289,
+     185,   173,   291,   108,   290,    63,   112,   339,   387,   366,
+     263,   183,   399,   243,   410,   394,   411,   106,   387,   329,
+     366,    96,    -1,   390,    -1,    -1,    -1,    -1,   200,    -1,
+     409,    -1,    -1,    -1,    -1,    -1,    -1,   404,    -1,   269,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   364,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   382,    -1,    -1,   297,    -1,    -1,
+      -1,   301,    -1,    -1,    -1,    -1,    -1,   387,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   261,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   329,
+      -1,   273,   274,   275,   276,   277,   278,   279,   280,   281,
+     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
-     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    -1,    -1,    63,
-      64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
-      -1,    85,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,
-      94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   363,   364,    -1,   366,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     114,   115,   116,   117,   118,   119,    -1,    -1,    -1,    -1,
-     124,   125,     4,     5,     6,     7,     8,     9,    10,    11,
+      -1,    -1,   382,    -1,    -1,    -1,    -1,   387,    -1,    -1,
+      -1,    -1,    -1,   393,    -1,    -1,    -1,    -1,    -1,    -1,
+     400,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     410,    -1,    -1,    -1,   414,    -1,    -1,    -1,     0,    -1,
+     420,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
       52,    53,    54,    55,    56,    57,    58,    59,    60,    -1,
-      -1,    63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      82,    -1,    -1,    85,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   114,   115,   116,   117,   118,   119,    -1,    -1,
-      -1,    -1,   124,   125,     4,     5,     6,     7,     8,     9,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,
+     122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,
+     142,   143,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+      -1,    -1,    63,    64,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    82,    -1,    -1,    -1,    86,    87,    -1,    -1,    -1,
+      -1,    92,    93,    94,    95,    96,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   106,   107,   108,   109,   110,
+      -1,    -1,    -1,   114,   115,   116,   117,   118,   119,   120,
+     121,   122,   123,   124,   125,   126,   127,   128,   129,    -1,
+     131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
+     141,   142,   143,     3,     4,     5,     6,     7,     8,     9,
       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
@@ -1506,11 +1316,27 @@ static const yytype_int16 yycheck[] =
       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
       60,    -1,    -1,    63,    64,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    82,    -1,    -1,    -1,    86,    87,    -1,    -1,
       -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   106,   107,   108,   109,
+     110,    -1,    -1,    -1,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
+      -1,   131,   132,   133,   134,   135,   136,   137,   138,   139,
+     140,   141,   142,   143,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    -1,    -1,    63,    64,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   114,   115,   116,   117,   118,   119,
-      -1,    -1,    -1,    -1,   124,   125,     4,     5,     6,     7,
+      -1,    -1,    -1,    82,    -1,    -1,    -1,    86,    -1,    -1,
+      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,   107,   108,
+     109,   110,    -1,    -1,    -1,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,    -1,   131,   132,   133,   134,   135,   136,   137,   138,
+     139,   140,   141,   142,   143,     3,     4,     5,     6,     7,
        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
@@ -1518,11 +1344,27 @@ static const yytype_int16 yycheck[] =
       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
       58,    59,    60,    -1,    -1,    63,    64,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,    -1,
+      -1,    -1,    -1,    -1,    82,    -1,    -1,    -1,    86,    -1,
+      -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,   107,
+     108,   109,   110,    -1,    -1,    -1,   114,   115,   116,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
+     128,   129,    -1,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,    59,    60,    -1,    -1,    63,    64,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   114,   115,   116,   117,
-     118,   119,    -1,    -1,    -1,    -1,   124,   125,     4,     5,
+      -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,
+     107,   108,   109,   110,    -1,    -1,    -1,   114,   115,   116,
+     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
+     127,   128,   129,    -1,   131,   132,   133,   134,   135,   136,
+     137,   138,   139,   140,   141,   142,   143,     3,     4,     5,
        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
@@ -1531,10 +1373,26 @@ static const yytype_int16 yycheck[] =
       56,    57,    58,    59,    60,    -1,    -1,    63,    64,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,
+      -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,
       96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,   115,
-     116,   117,   118,   119,    -1,    -1,    -1,    -1,   124,   125,
+     106,   107,   108,   109,   110,    -1,    -1,    -1,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   138,   139,   140,   141,   142,   143,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    -1,    -1,    63,    64,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,
+      95,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   106,   107,   108,   109,    -1,    -1,    -1,    -1,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   138,   139,   140,   141,   142,   143,     3,
        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
@@ -1543,11 +1401,156 @@ static const yytype_int16 yycheck[] =
       54,    55,    56,    57,    58,    59,    60,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   106,   107,   108,   109,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
+     124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,   143,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   106,   107,   108,   109,   110,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
+     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
+     143,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    58,    59,    60,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   106,   107,   108,   109,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,
+     122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,
+     142,   143,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   106,   107,   108,   109,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,   120,
+     121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   138,   139,   140,
+     141,   142,   143,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+      60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   106,   107,   108,   109,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,
+     120,   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   138,   139,
+     140,   141,   142,   143,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,   107,   108,
+     109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   138,
+     139,   140,   141,   142,   143,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    -1,    -1,    63,    64,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    82,    -1,    -1,    85,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    93,    94,    95,    96,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   114,   115,   116,   117,   118,
+     119,    -1,    -1,    -1,    -1,   124,   125,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,    59,    60,    -1,    -1,    63,    64,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,   115,   116,
+     117,   118,   119,    -1,    -1,    -1,    -1,   124,   125,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    -1,    -1,    63,    64,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,
+      95,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
+     115,   116,   117,   118,   119,    -1,    -1,    -1,    -1,   124,
+     125,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
+      63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   114,   115,   116,   117,   118,   119,    -1,    -1,    -1,
+      -1,   124,   125,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+      -1,    -1,    63,    64,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    93,    94,    95,    96,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   114,   115,   116,   117,   118,   119,    -1,
+      -1,    -1,    -1,   124,   125,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,
-     124,   125
+     119,    -1,    -1,    -1,    -1,   124,   125
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1561,77 +1564,77 @@ static const yytype_uint8 yystos[] =
       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
       52,    53,    54,    55,    56,    57,    58,    59,    60,   106,
      107,   108,   109,   110,   119,   120,   121,   122,   123,   124,
-     125,   138,   139,   140,   141,   142,   174,   175,   178,   179,
-     180,   181,   185,   186,   187,   188,   189,   190,   193,   194,
-     195,   196,   201,   202,   203,   242,   243,   244,   202,    86,
-     118,    82,    92,   118,    92,   245,    83,    89,   182,   183,
-     184,   193,   196,    89,    92,   118,    92,   118,   194,   196,
-     100,   198,   199,     0,   243,   196,   205,    86,   118,   139,
-     191,   192,    84,    92,   197,    86,   221,   183,   182,   184,
-     118,   118,    82,    91,   197,    86,    89,    92,   177,    63,
-      64,    82,    93,    94,    95,    96,   114,   115,   116,   117,
-     118,   144,   145,   146,   148,   149,   150,   151,   152,   153,
-     154,   155,   156,   196,   200,   197,    92,   193,   196,   206,
-     207,   204,    91,    83,    89,    85,   155,   157,   158,   159,
-     160,   161,   162,   163,   164,   165,   166,   167,   168,    84,
-      92,    86,    87,    92,   126,   127,   128,   129,   131,   132,
-     133,   134,   135,   136,   137,   155,   168,   170,   172,   174,
-     178,   196,   211,   212,   213,   214,   222,   223,   224,   225,
-     228,   229,   232,   233,   234,   241,   197,    91,   197,   170,
-     210,    91,   176,   118,    89,    92,   155,   155,   172,    63,
-      64,    84,    88,    83,    83,    89,   125,   170,    82,   155,
-      89,   101,   196,   118,   208,   209,    87,   207,   206,   168,
-     173,   192,    97,    98,    99,    94,    96,    61,    62,    65,
-      66,   100,   101,    67,    68,   104,   103,   102,    69,    71,
-      70,   105,    85,    85,   168,    87,   215,    82,    92,    92,
-     236,    82,    82,    92,    92,   172,    82,   172,    90,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,    91,
-     171,    89,    92,    87,   212,   210,    91,   210,   206,   118,
-      83,   147,   172,   118,   170,   155,   208,   197,    89,    92,
-      87,   155,   155,   155,   157,   157,   158,   158,   159,   159,
-     159,   159,   160,   160,   161,   162,   163,   164,   165,   166,
-     169,    85,   222,   235,   212,   237,   172,    92,   172,    90,
-     170,   170,   210,    87,    85,    92,   209,   172,   216,   172,
-     187,   193,   227,   126,   211,   223,   238,    83,    83,    90,
-      87,   118,    83,    82,   227,   239,   240,   218,   219,   220,
-     226,   230,   170,    91,   213,   217,   221,   172,    92,    83,
-     130,   214,   213,    86,   210,    83,   172,   217,   218,   222,
-     231,    92,    87
+     125,   138,   139,   140,   141,   142,   143,   175,   176,   179,
+     180,   181,   182,   186,   187,   188,   189,   190,   191,   194,
+     195,   196,   197,   202,   203,   204,   243,   244,   245,   203,
+      86,   118,    82,    92,   118,    92,   246,    83,    89,   183,
+     184,   185,   194,   197,    89,    92,   118,    92,   118,   195,
+     197,   100,   199,   200,     0,   244,   197,   206,    86,   118,
+     139,   192,   193,    84,    92,   198,    86,   222,   184,   183,
+     185,   118,   118,    82,    91,   198,    86,    89,    92,   178,
+      63,    64,    82,    93,    94,    95,    96,   114,   115,   116,
+     117,   118,   145,   146,   147,   149,   150,   151,   152,   153,
+     154,   155,   156,   157,   197,   201,   198,    92,   194,   197,
+     207,   208,   205,    91,    83,    89,    85,   156,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+      84,    92,    86,    87,    92,   126,   127,   128,   129,   131,
+     132,   133,   134,   135,   136,   137,   156,   169,   171,   173,
+     175,   179,   197,   212,   213,   214,   215,   223,   224,   225,
+     226,   229,   230,   233,   234,   235,   242,   198,    91,   198,
+     171,   211,    91,   177,   118,    89,    92,   156,   156,   173,
+      63,    64,    84,    88,    83,    83,    89,   125,   171,    82,
+     156,    89,   101,   197,   118,   209,   210,    87,   208,   207,
+     169,   174,   193,    97,    98,    99,    94,    96,    61,    62,
+      65,    66,   100,   101,    67,    68,   104,   103,   102,    69,
+      71,    70,   105,    85,    85,   169,    87,   216,    82,    92,
+      92,   237,    82,    82,    92,    92,   173,    82,   173,    90,
+      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
+      91,   172,    89,    92,    87,   213,   211,    91,   211,   207,
+     118,    83,   148,   173,   118,   171,   156,   209,   198,    89,
+      92,    87,   156,   156,   156,   158,   158,   159,   159,   160,
+     160,   160,   160,   161,   161,   162,   163,   164,   165,   166,
+     167,   170,    85,   223,   236,   213,   238,   173,    92,   173,
+      90,   171,   171,   211,    87,    85,    92,   210,   173,   217,
+     173,   188,   194,   228,   126,   212,   224,   239,    83,    83,
+      90,    87,   118,    83,    82,   228,   240,   241,   219,   220,
+     221,   227,   231,   171,    91,   214,   218,   222,   173,    92,
+      83,   130,   215,   214,    86,   211,    83,   173,   218,   219,
+     223,   232,    92,    87
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   143,   144,   145,   145,   145,   145,   145,   145,   146,
-     146,   146,   146,   146,   146,   147,   148,   149,   150,   150,
-     151,   151,   152,   152,   153,   154,   154,   155,   155,   155,
-     155,   156,   156,   156,   156,   157,   157,   157,   157,   158,
-     158,   158,   159,   159,   159,   160,   160,   160,   160,   160,
-     161,   161,   161,   162,   162,   163,   163,   164,   164,   165,
-     165,   166,   166,   167,   167,   168,   169,   168,   170,   170,
-     171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
-     171,   172,   172,   173,   174,   174,   174,   174,   174,   174,
-     174,   174,   174,   176,   175,   177,   177,   178,   179,   179,
-     180,   180,   181,   182,   182,   183,   183,   183,   183,   184,
-     185,   185,   185,   185,   185,   186,   186,   186,   186,   186,
-     187,   187,   188,   189,   189,   190,   191,   191,   192,   192,
-     192,   193,   193,   194,   194,   194,   194,   194,   195,   195,
-     195,   195,   195,   195,   195,   196,   196,   197,   197,   197,
-     197,   198,   198,   199,   200,   200,   201,   201,   201,   201,
-     201,   201,   201,   201,   201,   201,   201,   201,   201,   201,
-     201,   201,   201,   201,   201,   201,   201,   201,   201,   201,
-     201,   201,   201,   201,   201,   201,   201,   201,   201,   201,
-     201,   201,   201,   201,   201,   201,   201,   201,   201,   201,
-     201,   201,   201,   201,   201,   201,   201,   201,   201,   201,
-     201,   201,   201,   201,   201,   201,   202,   202,   202,   204,
-     203,   205,   203,   206,   206,   207,   207,   208,   208,   209,
-     209,   210,   211,   212,   212,   213,   213,   213,   213,   213,
-     213,   213,   214,   215,   216,   214,   217,   217,   219,   218,
-     220,   218,   221,   221,   222,   222,   223,   223,   224,   225,
-     226,   226,   227,   227,   228,   230,   229,   231,   231,   232,
-     232,   233,   235,   234,   236,   234,   237,   234,   238,   238,
-     239,   239,   240,   240,   241,   241,   241,   241,   241,   242,
-     242,   243,   243,   245,   244
+       0,   144,   145,   146,   146,   146,   146,   146,   146,   147,
+     147,   147,   147,   147,   147,   148,   149,   150,   151,   151,
+     152,   152,   153,   153,   154,   155,   155,   156,   156,   156,
+     156,   157,   157,   157,   157,   158,   158,   158,   158,   159,
+     159,   159,   160,   160,   160,   161,   161,   161,   161,   161,
+     162,   162,   162,   163,   163,   164,   164,   165,   165,   166,
+     166,   167,   167,   168,   168,   169,   170,   169,   171,   171,
+     172,   172,   172,   172,   172,   172,   172,   172,   172,   172,
+     172,   173,   173,   174,   175,   175,   175,   175,   175,   175,
+     175,   175,   175,   177,   176,   178,   178,   179,   180,   180,
+     181,   181,   182,   183,   183,   184,   184,   184,   184,   185,
+     186,   186,   186,   186,   186,   187,   187,   187,   187,   187,
+     188,   188,   189,   190,   190,   191,   192,   192,   193,   193,
+     193,   194,   194,   195,   195,   195,   195,   195,   196,   196,
+     196,   196,   196,   196,   196,   196,   197,   197,   198,   198,
+     198,   198,   199,   199,   200,   201,   201,   202,   202,   202,
+     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
+     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
+     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
+     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
+     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
+     202,   202,   202,   202,   202,   202,   202,   203,   203,   203,
+     205,   204,   206,   204,   207,   207,   208,   208,   209,   209,
+     210,   210,   211,   212,   213,   213,   214,   214,   214,   214,
+     214,   214,   214,   215,   216,   217,   215,   218,   218,   220,
+     219,   221,   219,   222,   222,   223,   223,   224,   224,   225,
+     226,   227,   227,   228,   228,   229,   231,   230,   232,   232,
+     233,   233,   234,   236,   235,   237,   235,   238,   235,   239,
+     239,   240,   240,   241,   241,   242,   242,   242,   242,   242,
+     243,   243,   244,   244,   246,   245
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1651,22 +1654,22 @@ static const yytype_uint8 yyr2[] =
        1,     3,     4,     6,     5,     1,     2,     3,     5,     4,
        1,     2,     1,     1,     1,     4,     1,     3,     1,     3,
        1,     1,     2,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     3,     2,     3,     3,
-       4,     1,     0,     3,     1,     3,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     2,     3,     2,     3,
+       3,     4,     1,     0,     3,     1,     3,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
-       6,     0,     5,     1,     2,     3,     4,     1,     3,     1,
-       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     2,     0,     0,     5,     1,     1,     0,     2,
-       0,     2,     2,     3,     1,     2,     1,     2,     1,     5,
-       3,     1,     1,     4,     1,     0,     8,     0,     1,     3,
-       2,     1,     0,     6,     0,     8,     0,     7,     1,     1,
-       1,     0,     2,     3,     2,     2,     2,     3,     2,     1,
-       2,     1,     1,     0,     3
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       0,     6,     0,     5,     1,     2,     3,     4,     1,     3,
+       1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     2,     0,     0,     5,     1,     1,     0,
+       2,     0,     2,     2,     3,     1,     2,     1,     2,     1,
+       5,     3,     1,     1,     4,     1,     0,     8,     0,     1,
+       3,     2,     1,     0,     6,     0,     8,     0,     7,     1,
+       1,     1,     0,     2,     3,     2,     2,     2,     3,     2,
+       1,     2,     1,     1,     0,     3
 };
 
 
@@ -2353,7 +2356,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string);
     }
-#line 2357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 3:
@@ -2361,7 +2364,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 2365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 4:
@@ -2371,7 +2374,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
             (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
     }
-#line 2375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 5:
@@ -2379,7 +2382,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
     }
-#line 2383 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 6:
@@ -2387,7 +2390,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
     }
-#line 2391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2394 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 7:
@@ -2396,7 +2399,7 @@ yyreduce:
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
     }
-#line 2400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 8:
@@ -2404,7 +2407,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
     }
-#line 2408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 9:
@@ -2412,7 +2415,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 2416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 10:
@@ -2420,7 +2423,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode));
     }
-#line 2424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2427 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 11:
@@ -2428,7 +2431,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 2432 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 12:
@@ -2436,7 +2439,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string);
     }
-#line 2440 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2443 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 13:
@@ -2446,7 +2449,7 @@ yyreduce:
         parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 2450 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2453 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 14:
@@ -2456,7 +2459,7 @@ yyreduce:
         parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 2460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 15:
@@ -2465,7 +2468,7 @@ yyreduce:
         parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]");
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 2469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2472 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 16:
@@ -2474,7 +2477,7 @@ yyreduce:
         (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode);
         delete (yyvsp[0].interm).function;
     }
-#line 2478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 17:
@@ -2482,7 +2485,7 @@ yyreduce:
     {
         (yyval.interm) = (yyvsp[0].interm);
     }
-#line 2486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 18:
@@ -2491,7 +2494,7 @@ yyreduce:
         (yyval.interm) = (yyvsp[-1].interm);
         (yyval.interm).loc = (yyvsp[0].lex).loc;
     }
-#line 2495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 19:
@@ -2500,7 +2503,7 @@ yyreduce:
         (yyval.interm) = (yyvsp[-1].interm);
         (yyval.interm).loc = (yyvsp[0].lex).loc;
     }
-#line 2504 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 20:
@@ -2508,7 +2511,7 @@ yyreduce:
     {
         (yyval.interm) = (yyvsp[-1].interm);
     }
-#line 2512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 21:
@@ -2516,7 +2519,7 @@ yyreduce:
     {
         (yyval.interm) = (yyvsp[0].interm);
     }
-#line 2520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 22:
@@ -2528,7 +2531,7 @@ yyreduce:
         (yyval.interm).function = (yyvsp[-1].interm).function;
         (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode);
     }
-#line 2532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 23:
@@ -2540,7 +2543,7 @@ yyreduce:
         (yyval.interm).function = (yyvsp[-2].interm).function;
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc);
     }
-#line 2544 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 24:
@@ -2548,7 +2551,7 @@ yyreduce:
     {
         (yyval.interm) = (yyvsp[-1].interm);
     }
-#line 2552 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2555 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 25:
@@ -2558,7 +2561,7 @@ yyreduce:
         (yyval.interm).intermNode = 0;
         (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
     }
-#line 2562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 26:
@@ -2590,7 +2593,7 @@ yyreduce:
             (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull);
         }
     }
-#line 2594 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 27:
@@ -2601,7 +2604,7 @@ yyreduce:
         if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode())
             parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), "");
     }
-#line 2605 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 28:
@@ -2610,7 +2613,7 @@ yyreduce:
         parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode));
     }
-#line 2614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 29:
@@ -2619,7 +2622,7 @@ yyreduce:
         parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode));
     }
-#line 2623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 30:
@@ -2640,38 +2643,38 @@ yyreduce:
                 (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
         }
     }
-#line 2644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 31:
 #line 444 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; }
-#line 2650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 32:
 #line 445 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; }
-#line 2656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 33:
 #line 446 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; }
-#line 2662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 34:
 #line 447 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot;
               parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); }
-#line 2669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 35:
 #line 453 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 2675 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 36:
@@ -2681,7 +2684,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 2685 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 37:
@@ -2691,7 +2694,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 2695 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 38:
@@ -2702,13 +2705,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 2706 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 39:
 #line 473 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 2712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 40:
@@ -2718,7 +2721,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 2722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 41:
@@ -2728,13 +2731,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 2732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2735 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 42:
 #line 487 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 2738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 43:
@@ -2745,7 +2748,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 2749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 44:
@@ -2756,13 +2759,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 2760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 45:
 #line 503 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 2766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 46:
@@ -2772,7 +2775,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 2776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 47:
@@ -2782,7 +2785,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 2786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2789 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 48:
@@ -2792,7 +2795,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 2796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 49:
@@ -2802,13 +2805,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 2806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 50:
 #line 527 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 2812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 51:
@@ -2822,7 +2825,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 2826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 52:
@@ -2836,13 +2839,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 2840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 53:
 #line 549 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 2846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 54:
@@ -2853,13 +2856,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 2857 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 55:
 #line 559 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 2863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 56:
@@ -2870,13 +2873,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 2874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2877 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 57:
 #line 569 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 2880 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2883 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 58:
@@ -2887,13 +2890,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 2891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2894 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 59:
 #line 579 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 2897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 60:
@@ -2903,13 +2906,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 2907 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2910 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 61:
 #line 588 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 2913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2916 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 62:
@@ -2919,13 +2922,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 2923 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 63:
 #line 597 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 2929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2932 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 64:
@@ -2935,13 +2938,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 2939 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 65:
 #line 606 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 2945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2948 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 66:
@@ -2949,7 +2952,7 @@ yyreduce:
     {
         ++parseContext.controlFlowNestingLevel;
     }
-#line 2953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 67:
@@ -2966,13 +2969,13 @@ yyreduce:
             (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
         }
     }
-#line 2970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 68:
 #line 625 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 2976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 69:
@@ -2990,7 +2993,7 @@ yyreduce:
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
         }
     }
-#line 2994 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 2997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 70:
@@ -2999,7 +3002,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpAssign;
     }
-#line 3003 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 71:
@@ -3008,7 +3011,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpMulAssign;
     }
-#line 3012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 72:
@@ -3017,7 +3020,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpDivAssign;
     }
-#line 3021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 73:
@@ -3027,7 +3030,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpModAssign;
     }
-#line 3031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 74:
@@ -3036,7 +3039,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpAddAssign;
     }
-#line 3040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3043 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 75:
@@ -3045,7 +3048,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpSubAssign;
     }
-#line 3049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3052 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 76:
@@ -3054,7 +3057,7 @@ yyreduce:
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign;
     }
-#line 3058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 77:
@@ -3063,7 +3066,7 @@ yyreduce:
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign;
     }
-#line 3067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3070 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 78:
@@ -3072,7 +3075,7 @@ yyreduce:
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign;
     }
-#line 3076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3079 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 79:
@@ -3081,7 +3084,7 @@ yyreduce:
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign;
     }
-#line 3085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3088 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 80:
@@ -3090,7 +3093,7 @@ yyreduce:
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign;
     }
-#line 3094 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3097 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 81:
@@ -3098,7 +3101,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 3102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 82:
@@ -3111,7 +3114,7 @@ yyreduce:
             (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
         }
     }
-#line 3115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 83:
@@ -3120,7 +3123,7 @@ yyreduce:
         parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), "");
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 3124 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3127 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 84:
@@ -3130,7 +3133,7 @@ yyreduce:
         (yyval.interm.intermNode) = 0;
         // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
     }
-#line 3134 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3137 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 85:
@@ -3140,7 +3143,7 @@ yyreduce:
             (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence);
         (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode;
     }
-#line 3144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 86:
@@ -3152,7 +3155,7 @@ yyreduce:
         parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision);
         (yyval.interm.intermNode) = 0;
     }
-#line 3156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 87:
@@ -3161,7 +3164,7 @@ yyreduce:
         parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList);
         (yyval.interm.intermNode) = 0;
     }
-#line 3165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 88:
@@ -3170,7 +3173,7 @@ yyreduce:
         parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string);
         (yyval.interm.intermNode) = 0;
     }
-#line 3174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 89:
@@ -3179,7 +3182,7 @@ yyreduce:
         parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes);
         (yyval.interm.intermNode) = 0;
     }
-#line 3183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 90:
@@ -3189,7 +3192,7 @@ yyreduce:
         parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type));
         (yyval.interm.intermNode) = 0;
     }
-#line 3193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3196 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 91:
@@ -3199,7 +3202,7 @@ yyreduce:
         parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string);
         (yyval.interm.intermNode) = 0;
     }
-#line 3203 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 92:
@@ -3210,13 +3213,13 @@ yyreduce:
         parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList));
         (yyval.interm.intermNode) = 0;
     }
-#line 3214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 93:
 #line 759 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); }
-#line 3220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3223 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 94:
@@ -3230,7 +3233,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[-5].interm.type).loc;
         (yyval.interm).typeList = (yyvsp[-1].interm.typeList);
     }
-#line 3234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3237 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 95:
@@ -3239,7 +3242,7 @@ yyreduce:
         (yyval.interm.identifierList) = new TIdentifierList;
         (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
     }
-#line 3243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 96:
@@ -3248,7 +3251,7 @@ yyreduce:
         (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList);
         (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
     }
-#line 3252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 97:
@@ -3257,7 +3260,7 @@ yyreduce:
         (yyval.interm).function = (yyvsp[-1].interm.function);
         (yyval.interm).loc = (yyvsp[0].lex).loc;
     }
-#line 3261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 98:
@@ -3265,7 +3268,7 @@ yyreduce:
     {
         (yyval.interm.function) = (yyvsp[0].interm.function);
     }
-#line 3269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 99:
@@ -3273,7 +3276,7 @@ yyreduce:
     {
         (yyval.interm.function) = (yyvsp[0].interm.function);
     }
-#line 3277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 100:
@@ -3286,7 +3289,7 @@ yyreduce:
         else
             delete (yyvsp[0].interm).param.type;
     }
-#line 3290 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 101:
@@ -3308,7 +3311,7 @@ yyreduce:
             (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param);
         }
     }
-#line 3312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 102:
@@ -3332,7 +3335,7 @@ yyreduce:
         function = new TFunction((yyvsp[-1].lex).string, type);
         (yyval.interm.function) = function;
     }
-#line 3336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 103:
@@ -3352,7 +3355,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).param = param;
     }
-#line 3356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 104:
@@ -3376,7 +3379,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[-1].lex).loc;
         (yyval.interm).param = param;
     }
-#line 3380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3383 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 105:
@@ -3392,7 +3395,7 @@ yyreduce:
         parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
 
     }
-#line 3396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 106:
@@ -3404,7 +3407,7 @@ yyreduce:
         parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
         parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
     }
-#line 3408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 107:
@@ -3419,7 +3422,7 @@ yyreduce:
         parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type);
         parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
     }
-#line 3423 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 108:
@@ -3431,7 +3434,7 @@ yyreduce:
         parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
         parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
     }
-#line 3435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 109:
@@ -3442,7 +3445,7 @@ yyreduce:
         if ((yyvsp[0].interm.type).arraySizes)
             parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes);
     }
-#line 3446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 110:
@@ -3450,7 +3453,7 @@ yyreduce:
     {
         (yyval.interm) = (yyvsp[0].interm);
     }
-#line 3454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3457 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 111:
@@ -3459,7 +3462,7 @@ yyreduce:
         (yyval.interm) = (yyvsp[-2].interm);
         parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type);
     }
-#line 3463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 112:
@@ -3468,7 +3471,7 @@ yyreduce:
         (yyval.interm) = (yyvsp[-3].interm);
         parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes);
     }
-#line 3472 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3475 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 113:
@@ -3478,7 +3481,7 @@ yyreduce:
         TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
     }
-#line 3482 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 114:
@@ -3488,7 +3491,7 @@ yyreduce:
         TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode));
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
     }
-#line 3492 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 115:
@@ -3498,7 +3501,7 @@ yyreduce:
         (yyval.interm).intermNode = 0;
 
     }
-#line 3502 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 116:
@@ -3508,7 +3511,7 @@ yyreduce:
         (yyval.interm).intermNode = 0;
         parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type));
     }
-#line 3512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 117:
@@ -3518,7 +3521,7 @@ yyreduce:
         (yyval.interm).intermNode = 0;
         parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes);
     }
-#line 3522 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 118:
@@ -3528,7 +3531,7 @@ yyreduce:
         TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
     }
-#line 3532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 119:
@@ -3538,7 +3541,7 @@ yyreduce:
         TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode));
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
     }
-#line 3542 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 120:
@@ -3553,7 +3556,7 @@ yyreduce:
         }
         parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier);
     }
-#line 3557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3560 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 121:
@@ -3582,7 +3585,7 @@ yyreduce:
              (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn)))
             (yyval.interm.type).qualifier.smooth = true;
     }
-#line 3586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 122:
@@ -3593,7 +3596,7 @@ yyreduce:
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.invariant = true;
     }
-#line 3597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 123:
@@ -3605,7 +3608,7 @@ yyreduce:
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.smooth = true;
     }
-#line 3609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 124:
@@ -3617,7 +3620,7 @@ yyreduce:
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.flat = true;
     }
-#line 3621 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3624 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 125:
@@ -3625,7 +3628,7 @@ yyreduce:
     {
         (yyval.interm.type) = (yyvsp[-1].interm.type);
     }
-#line 3629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 126:
@@ -3633,7 +3636,7 @@ yyreduce:
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 3637 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3640 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 127:
@@ -3643,7 +3646,7 @@ yyreduce:
         (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
         parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
     }
-#line 3647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 128:
@@ -3652,7 +3655,7 @@ yyreduce:
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string);
     }
-#line 3656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 129:
@@ -3661,7 +3664,7 @@ yyreduce:
         (yyval.interm.type).init((yyvsp[-2].lex).loc);
         parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode));
     }
-#line 3665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3668 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 130:
@@ -3671,7 +3674,7 @@ yyreduce:
         TString strShared("shared");
         parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared);
     }
-#line 3675 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 131:
@@ -3679,7 +3682,7 @@ yyreduce:
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 3683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 132:
@@ -3692,7 +3695,7 @@ yyreduce:
         (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
         parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
     }
-#line 3696 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 133:
@@ -3700,7 +3703,7 @@ yyreduce:
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 3704 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 134:
@@ -3708,7 +3711,7 @@ yyreduce:
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 3712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 135:
@@ -3717,7 +3720,7 @@ yyreduce:
         parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision);
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 3721 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3724 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 136:
@@ -3726,7 +3729,7 @@ yyreduce:
         // allow inheritance of storage qualifier from block declaration
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 3730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 137:
@@ -3735,7 +3738,7 @@ yyreduce:
         // allow inheritance of storage qualifier from block declaration
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 3739 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 138:
@@ -3744,7 +3747,7 @@ yyreduce:
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqConst;  // will later turn into EvqConstReadOnly, if the initializer is not constant
     }
-#line 3748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 139:
@@ -3754,7 +3757,7 @@ yyreduce:
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqInOut;
     }
-#line 3758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 140:
@@ -3765,7 +3768,7 @@ yyreduce:
         // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later
         (yyval.interm.type).qualifier.storage = EvqIn;
     }
-#line 3769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 141:
@@ -3776,7 +3779,7 @@ yyreduce:
         // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later
         (yyval.interm.type).qualifier.storage = EvqOut;
     }
-#line 3780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 142:
@@ -3788,7 +3791,7 @@ yyreduce:
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.centroid = true;
     }
-#line 3792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 143:
@@ -3798,7 +3801,7 @@ yyreduce:
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqUniform;
     }
-#line 3802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3805 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 144:
@@ -3811,21 +3814,31 @@ yyreduce:
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqShared;
     }
-#line 3815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 145:
-#line 1173 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1167 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.globalCheck((yyvsp[0].lex).loc, "buffer");
+        (yyval.interm.type).init((yyvsp[0].lex).loc);
+        (yyval.interm.type).qualifier.storage = EvqBuffer;
+    }
+#line 3828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 146:
+#line 1178 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type) = (yyvsp[-1].interm.type);
         (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
         (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters);
     }
-#line 3825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 146:
-#line 1178 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 147:
+#line 1183 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes);
         (yyval.interm.type) = (yyvsp[-2].interm.type);
@@ -3833,21 +3846,21 @@ yyreduce:
         (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters);
         (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
     }
-#line 3837 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 147:
-#line 1188 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 148:
+#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm).loc = (yyvsp[-1].lex).loc;
         (yyval.interm).arraySizes = new TArraySizes;
         (yyval.interm).arraySizes->addInnerSize();
     }
-#line 3847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 148:
-#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 149:
+#line 1198 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm).loc = (yyvsp[-2].lex).loc;
         (yyval.interm).arraySizes = new TArraySizes;
@@ -3856,20 +3869,20 @@ yyreduce:
         parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
         (yyval.interm).arraySizes->addInnerSize(size);
     }
-#line 3860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3873 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 149:
-#line 1201 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 150:
+#line 1206 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm) = (yyvsp[-2].interm);
         (yyval.interm).arraySizes->addInnerSize();
     }
-#line 3869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 150:
-#line 1205 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 151:
+#line 1210 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm) = (yyvsp[-3].interm);
 
@@ -3877,35 +3890,35 @@ yyreduce:
         parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
         (yyval.interm).arraySizes->addInnerSize(size);
     }
-#line 3881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3894 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 151:
-#line 1215 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 152:
+#line 1220 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters);
     }
-#line 3889 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 152:
-#line 1218 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 153:
+#line 1223 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeParameters) = 0;
     }
-#line 3897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3910 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 153:
-#line 1224 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 154:
+#line 1229 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters);
     }
-#line 3905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 154:
-#line 1230 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 155:
+#line 1235 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeParameters) = new TArraySizes;
 
@@ -3913,11 +3926,11 @@ yyreduce:
         parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter");
         (yyval.interm.typeParameters)->addInnerSize(size);
     }
-#line 3917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 155:
-#line 1237 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 156:
+#line 1242 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters);
 
@@ -3925,63 +3938,53 @@ yyreduce:
         parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter");
         (yyval.interm.typeParameters)->addInnerSize(size);
     }
-#line 3929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 156:
-#line 1247 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtVoid;
-    }
-#line 3938 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 157:
-#line 1251 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1252 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat;
+        (yyval.interm.type).basicType = EbtVoid;
     }
-#line 3947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 158:
-#line 1255 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1256 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtInt;
+        (yyval.interm.type).basicType = EbtFloat;
     }
-#line 3956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3960 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 159:
-#line 1259 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1260 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
-        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtUint;
+        (yyval.interm.type).basicType = EbtInt;
     }
-#line 3966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3969 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 160:
 #line 1264 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
+        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtBool;
+        (yyval.interm.type).basicType = EbtUint;
     }
-#line 3975 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 161:
-#line 1268 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1269 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setVector(2);
+        (yyval.interm.type).basicType = EbtBool;
     }
-#line 3985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 162:
@@ -3989,9 +3992,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setVector(3);
+        (yyval.interm.type).setVector(2);
     }
-#line 3995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 163:
@@ -3999,19 +4002,19 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setVector(4);
+        (yyval.interm.type).setVector(3);
     }
-#line 4005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 164:
 #line 1283 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtBool;
-        (yyval.interm.type).setVector(2);
+        (yyval.interm.type).basicType = EbtFloat;
+        (yyval.interm.type).setVector(4);
     }
-#line 4015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 165:
@@ -4019,9 +4022,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
-        (yyval.interm.type).setVector(3);
+        (yyval.interm.type).setVector(2);
     }
-#line 4025 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 166:
@@ -4029,19 +4032,19 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
-        (yyval.interm.type).setVector(4);
+        (yyval.interm.type).setVector(3);
     }
-#line 4035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 167:
 #line 1298 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtInt;
-        (yyval.interm.type).setVector(2);
+        (yyval.interm.type).basicType = EbtBool;
+        (yyval.interm.type).setVector(4);
     }
-#line 4045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 168:
@@ -4049,9 +4052,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
-        (yyval.interm.type).setVector(3);
+        (yyval.interm.type).setVector(2);
     }
-#line 4055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 169:
@@ -4059,52 +4062,52 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
-        (yyval.interm.type).setVector(4);
+        (yyval.interm.type).setVector(3);
     }
-#line 4065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4068 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 170:
 #line 1313 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
-        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtUint;
-        (yyval.interm.type).setVector(2);
+        (yyval.interm.type).basicType = EbtInt;
+        (yyval.interm.type).setVector(4);
     }
-#line 4076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4078 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 171:
-#line 1319 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1318 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
-        (yyval.interm.type).setVector(3);
+        (yyval.interm.type).setVector(2);
     }
-#line 4087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 172:
-#line 1325 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1324 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
-        (yyval.interm.type).setVector(4);
+        (yyval.interm.type).setVector(3);
     }
-#line 4098 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 173:
-#line 1331 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1330 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
+        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(2, 2);
+        (yyval.interm.type).basicType = EbtUint;
+        (yyval.interm.type).setVector(4);
     }
-#line 4108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 174:
@@ -4112,9 +4115,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(3, 3);
+        (yyval.interm.type).setMatrix(2, 2);
     }
-#line 4118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 175:
@@ -4122,9 +4125,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(4, 4);
+        (yyval.interm.type).setMatrix(3, 3);
     }
-#line 4128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 176:
@@ -4132,9 +4135,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(2, 2);
+        (yyval.interm.type).setMatrix(4, 4);
     }
-#line 4138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 177:
@@ -4142,9 +4145,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(2, 3);
+        (yyval.interm.type).setMatrix(2, 2);
     }
-#line 4148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4151 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 178:
@@ -4152,9 +4155,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(2, 4);
+        (yyval.interm.type).setMatrix(2, 3);
     }
-#line 4158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 179:
@@ -4162,9 +4165,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(3, 2);
+        (yyval.interm.type).setMatrix(2, 4);
     }
-#line 4168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 180:
@@ -4172,9 +4175,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(3, 3);
+        (yyval.interm.type).setMatrix(3, 2);
     }
-#line 4178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4181 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 181:
@@ -4182,9 +4185,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(3, 4);
+        (yyval.interm.type).setMatrix(3, 3);
     }
-#line 4188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4191 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 182:
@@ -4192,9 +4195,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(4, 2);
+        (yyval.interm.type).setMatrix(3, 4);
     }
-#line 4198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4201 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 183:
@@ -4202,9 +4205,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(4, 3);
+        (yyval.interm.type).setMatrix(4, 2);
     }
-#line 4208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 184:
@@ -4212,19 +4215,19 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(4, 4);
+        (yyval.interm.type).setMatrix(4, 3);
     }
-#line 4218 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 185:
-#line 1392 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1391 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd2D);
+        (yyval.interm.type).basicType = EbtFloat;
+        (yyval.interm.type).setMatrix(4, 4);
     }
-#line 4228 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4231 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 186:
@@ -4232,9 +4235,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd3D);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd2D);
     }
-#line 4238 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 187:
@@ -4242,9 +4245,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, EsdCube);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd3D);
     }
-#line 4248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4251 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 188:
@@ -4252,9 +4255,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true);
+        (yyval.interm.type).sampler.set(EbtFloat, EsdCube);
     }
-#line 4258 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 189:
@@ -4262,9 +4265,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true);
     }
-#line 4268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 190:
@@ -4272,9 +4275,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true);
+        (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true);
     }
-#line 4278 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 191:
@@ -4282,19 +4285,19 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true);
     }
-#line 4288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 192:
-#line 1428 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1427 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, Esd2D);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true);
     }
-#line 4298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 193:
@@ -4302,9 +4305,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, Esd3D);
+        (yyval.interm.type).sampler.set(EbtInt, Esd2D);
     }
-#line 4308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 194:
@@ -4312,9 +4315,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, EsdCube);
+        (yyval.interm.type).sampler.set(EbtInt, Esd3D);
     }
-#line 4318 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 195:
@@ -4322,9 +4325,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, Esd2D, true);
+        (yyval.interm.type).sampler.set(EbtInt, EsdCube);
     }
-#line 4328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 196:
@@ -4332,9 +4335,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, Esd2D);
+        (yyval.interm.type).sampler.set(EbtInt, Esd2D, true);
     }
-#line 4338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4341 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 197:
@@ -4342,9 +4345,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, Esd3D);
+        (yyval.interm.type).sampler.set(EbtUint, Esd2D);
     }
-#line 4348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 198:
@@ -4352,19 +4355,19 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, EsdCube);
+        (yyval.interm.type).sampler.set(EbtUint, Esd3D);
     }
-#line 4358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 199:
-#line 1464 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1463 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, Esd2D, true);
+        (yyval.interm.type).sampler.set(EbtUint, EsdCube);
     }
-#line 4368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 200:
@@ -4372,9 +4375,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
+        (yyval.interm.type).sampler.set(EbtUint, Esd2D, true);
     }
-#line 4378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 201:
@@ -4382,9 +4385,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D);
+        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
     }
-#line 4388 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 202:
@@ -4392,9 +4395,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true);
+        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D);
     }
-#line 4398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 203:
@@ -4402,9 +4405,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
+        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true);
     }
-#line 4408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 204:
@@ -4412,9 +4415,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
+        (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
     }
-#line 4418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 205:
@@ -4422,9 +4425,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
+        (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
     }
-#line 4428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 206:
@@ -4432,9 +4435,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
+        (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
     }
-#line 4438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 207:
@@ -4442,9 +4445,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true);
+        (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
     }
-#line 4448 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 208:
@@ -4452,9 +4455,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
+        (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true);
     }
-#line 4458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 209:
@@ -4462,9 +4465,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
+        (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
     }
-#line 4468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 210:
@@ -4472,9 +4475,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
+        (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
     }
-#line 4478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 211:
@@ -4482,9 +4485,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true);
+        (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
     }
-#line 4488 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 212:
@@ -4492,9 +4495,9 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setPureSampler(false);
+        (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true);
     }
-#line 4498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 213:
@@ -4502,23 +4505,33 @@ yyreduce:
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setPureSampler(true);
+        (yyval.interm.type).sampler.setPureSampler(false);
     }
-#line 4508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 214:
-#line 1540 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1539 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setPureSampler(true);
+    }
+#line 4521 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 215:
+#line 1545 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
         (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type));
     }
-#line 4518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4531 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 215:
-#line 1545 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 216:
+#line 1550 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         //
         // This is for user defined type names.  The lexical phase looked up the
@@ -4532,47 +4545,47 @@ yyreduce:
         } else
             parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), "");
     }
-#line 4536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 216:
-#line 1561 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 217:
+#line 1566 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh);
     }
-#line 4546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 217:
-#line 1566 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 218:
+#line 1571 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium);
     }
-#line 4556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 218:
-#line 1571 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 219:
+#line 1576 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow);
     }
-#line 4566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 219:
-#line 1579 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 220:
+#line 1584 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); }
-#line 4572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4585 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 220:
-#line 1579 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 221:
+#line 1584 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string);
         parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure);
@@ -4584,17 +4597,17 @@ yyreduce:
         (yyval.interm.type).userDef = structure;
         --parseContext.structNestingLevel;
     }
-#line 4588 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 221:
-#line 1590 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 222:
+#line 1595 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); }
-#line 4594 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 222:
-#line 1590 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 223:
+#line 1595 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         TType* structure = new TType((yyvsp[-1].interm.typeList), TString(""));
         (yyval.interm.type).init((yyvsp[-4].lex).loc);
@@ -4602,19 +4615,19 @@ yyreduce:
         (yyval.interm.type).userDef = structure;
         --parseContext.structNestingLevel;
     }
-#line 4606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 223:
-#line 1600 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 224:
+#line 1605 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeList) = (yyvsp[0].interm.typeList);
     }
-#line 4614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4627 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 224:
-#line 1603 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 225:
+#line 1608 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
         for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) {
@@ -4625,11 +4638,11 @@ yyreduce:
             (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]);
         }
     }
-#line 4629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4642 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 225:
-#line 1616 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 226:
+#line 1621 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[-2].interm.type).arraySizes) {
             parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -4652,11 +4665,11 @@ yyreduce:
             (*(yyval.interm.typeList))[i].type->shallowCopy(type);
         }
     }
-#line 4656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 226:
-#line 1638 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 227:
+#line 1643 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[-2].interm.type).arraySizes) {
             parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -4681,38 +4694,38 @@ yyreduce:
             (*(yyval.interm.typeList))[i].type->shallowCopy(type);
         }
     }
-#line 4685 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 227:
-#line 1665 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 228:
+#line 1670 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeList) = new TTypeList;
         (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
     }
-#line 4694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 228:
-#line 1669 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 229:
+#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
     }
-#line 4702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 229:
-#line 1675 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 230:
+#line 1680 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeLine).type = new TType(EbtVoid);
         (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc;
         (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string);
     }
-#line 4712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 230:
-#line 1680 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 231:
+#line 1685 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes);
 
@@ -4721,181 +4734,181 @@ yyreduce:
         (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string);
         (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes);
     }
-#line 4725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 231:
-#line 1691 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 232:
+#line 1696 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 232:
-#line 1700 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4739 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 233:
-#line 1704 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1705 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4745 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 234:
-#line 1705 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1709 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 235:
-#line 1711 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1710 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4757 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 236:
-#line 1712 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1716 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 237:
-#line 1713 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1717 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 238:
-#line 1714 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1718 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4775 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 239:
-#line 1715 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1719 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 240:
-#line 1716 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1720 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4787 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4794 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 241:
-#line 1717 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1721 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4793 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4800 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 242:
-#line 1724 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = 0; }
-#line 4799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 1722 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 4806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 243:
-#line 1725 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1729 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    { (yyval.interm.intermNode) = 0; }
+#line 4812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 244:
+#line 1730 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.push();
         ++parseContext.statementNestingLevel;
     }
-#line 4808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 244:
-#line 1729 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 245:
+#line 1734 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         --parseContext.statementNestingLevel;
     }
-#line 4817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 245:
-#line 1733 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 246:
+#line 1738 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate())
             (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
         (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode);
     }
-#line 4827 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 246:
-#line 1741 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 247:
+#line 1746 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 247:
-#line 1742 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 248:
+#line 1747 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 4839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 248:
-#line 1746 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 249:
+#line 1751 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         ++parseContext.controlFlowNestingLevel;
     }
-#line 4847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 249:
-#line 1749 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 250:
+#line 1754 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         --parseContext.controlFlowNestingLevel;
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 4856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 250:
-#line 1753 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 251:
+#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.push();
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 4866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 251:
-#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 252:
+#line 1763 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 4877 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 252:
-#line 1767 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 253:
+#line 1772 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = 0;
     }
-#line 4885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 253:
-#line 1770 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 254:
+#line 1775 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate())
             (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
         (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode);
     }
-#line 4895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 254:
-#line 1778 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 255:
+#line 1783 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
         if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
@@ -4904,11 +4917,11 @@ yyreduce:
             (yyval.interm.intermNode) = 0;  // start a fresh subsequence for what's after this case
         }
     }
-#line 4908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4921 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 255:
-#line 1786 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 256:
+#line 1791 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
                                             (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
@@ -4917,67 +4930,67 @@ yyreduce:
         } else
             (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
     }
-#line 4921 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 256:
-#line 1797 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 257:
+#line 1802 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = 0; }
-#line 4927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 257:
-#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 258:
+#line 1803 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
-#line 4933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 258:
-#line 1802 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 259:
+#line 1807 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 4941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4954 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 259:
-#line 1808 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 260:
+#line 1813 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode));
         (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc);
     }
-#line 4950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 260:
-#line 1815 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 261:
+#line 1820 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
         (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode);
     }
-#line 4959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 261:
-#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 262:
+#line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
         (yyval.interm.nodePair).node2 = 0;
     }
-#line 4968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 262:
-#line 1827 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 263:
+#line 1832 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
         parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode));
     }
-#line 4977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 263:
-#line 1831 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 264:
+#line 1836 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type));
 
@@ -4988,19 +5001,19 @@ yyreduce:
         else
             (yyval.interm.intermTypedNode) = 0;
     }
-#line 4992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 264:
-#line 1844 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 265:
+#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 5000 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 265:
-#line 1850 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 266:
+#line 1855 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         // start new switch sequence on the switch stack
         ++parseContext.controlFlowNestingLevel;
@@ -5009,11 +5022,11 @@ yyreduce:
         parseContext.switchLevel.push_back(parseContext.statementNestingLevel);
         parseContext.symbolTable.push();
     }
-#line 5013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 266:
-#line 1858 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 267:
+#line 1863 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0);
         delete parseContext.switchSequenceStack.back();
@@ -5023,27 +5036,27 @@ yyreduce:
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 5027 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 267:
-#line 1870 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 268:
+#line 1875 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = 0;
     }
-#line 5035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 268:
-#line 1873 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 269:
+#line 1878 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 5043 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 269:
-#line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 270:
+#line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = 0;
         if (parseContext.switchLevel.size() == 0)
@@ -5056,11 +5069,11 @@ yyreduce:
             (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc);
         }
     }
-#line 5060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 270:
-#line 1891 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 271:
+#line 1896 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = 0;
         if (parseContext.switchLevel.size() == 0)
@@ -5070,19 +5083,19 @@ yyreduce:
         else
             (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc);
     }
-#line 5074 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 271:
-#line 1903 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 272:
+#line 1908 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 5082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 272:
-#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 273:
+#line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if (! parseContext.limits.whileLoops)
             parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", "");
@@ -5091,11 +5104,11 @@ yyreduce:
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 5095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 273:
-#line 1917 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 274:
+#line 1922 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc);
@@ -5103,21 +5116,21 @@ yyreduce:
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 5107 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 274:
-#line 1924 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 275:
+#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         ++parseContext.loopNestingLevel;
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 5117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 275:
-#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 276:
+#line 1934 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if (! parseContext.limits.whileLoops)
             parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", "");
@@ -5129,22 +5142,22 @@ yyreduce:
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 5133 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5146 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 276:
-#line 1940 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 277:
+#line 1945 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.push();
         ++parseContext.loopNestingLevel;
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 5144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 277:
-#line 1946 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 278:
+#line 1951 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc);
@@ -5157,81 +5170,81 @@ yyreduce:
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 5161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 278:
-#line 1961 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 279:
+#line 1966 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 5169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5182 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 279:
-#line 1964 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 280:
+#line 1969 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 5177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 280:
-#line 1970 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 281:
+#line 1975 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 5185 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 281:
-#line 1973 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 282:
+#line 1978 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermTypedNode) = 0;
     }
-#line 5193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 282:
-#line 1979 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 283:
+#line 1984 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
         (yyval.interm.nodePair).node2 = 0;
     }
-#line 5202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5215 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 283:
-#line 1983 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 284:
+#line 1988 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
         (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
     }
-#line 5211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 284:
-#line 1990 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 285:
+#line 1995 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if (parseContext.loopNestingLevel <= 0)
             parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", "");
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc);
     }
-#line 5221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 285:
-#line 1995 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 286:
+#line 2000 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0)
             parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", "");
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc);
     }
-#line 5231 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 286:
-#line 2000 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 287:
+#line 2005 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc);
         if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
@@ -5239,73 +5252,73 @@ yyreduce:
         if (parseContext.inMain)
             parseContext.postEntryPointReturn = true;
     }
-#line 5243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 287:
-#line 2007 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 288:
+#line 2012 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 5251 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 288:
-#line 2010 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 289:
+#line 2015 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard");
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc);
     }
-#line 5260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5273 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 289:
-#line 2019 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 290:
+#line 2024 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
         parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
     }
-#line 5269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 290:
-#line 2023 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 291:
+#line 2028 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[0].interm.intermNode) != nullptr) {
             (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
             parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
         }
     }
-#line 5280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 291:
-#line 2032 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 292:
+#line 2037 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 5288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 292:
-#line 2035 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 293:
+#line 2040 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 5296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 293:
-#line 2042 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 294:
+#line 2047 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */);
         (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function);
     }
-#line 5305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5318 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 294:
-#line 2046 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 295:
+#line 2051 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         //   May be best done as post process phase on intermediate code
         if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue)
@@ -5321,11 +5334,11 @@ yyreduce:
         (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
         (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable);
     }
-#line 5325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
 
-#line 5329 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -5553,5 +5566,5 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 2065 "MachineIndependent/glslang.y" /* yacc.c:1906  */
+#line 2070 "MachineIndependent/glslang.y" /* yacc.c:1906  */
 
index 5b9a17e..1a2ec99 100644 (file)
@@ -182,9 +182,10 @@ extern int yydebug;
     DEFAULT = 392,
     UNIFORM = 393,
     SHARED = 394,
-    FLAT = 395,
-    SMOOTH = 396,
-    LAYOUT = 397
+    BUFFER = 395,
+    FLAT = 396,
+    SMOOTH = 397,
+    LAYOUT = 398
   };
 #endif
 
@@ -229,7 +230,7 @@ union YYSTYPE
         glslang::TArraySizes* typeParameters;
     } interm;
 
-#line 233 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909  */
+#line 234 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909  */
 };
 
 typedef union YYSTYPE YYSTYPE;